summaryrefslogtreecommitdiffstats
path: root/tags/cpp-1.0-incubating-M2-final/sca/runtime/core/src/tuscany/sca/core/SCARuntime.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tags/cpp-1.0-incubating-M2-final/sca/runtime/core/src/tuscany/sca/core/SCARuntime.cpp')
-rw-r--r--tags/cpp-1.0-incubating-M2-final/sca/runtime/core/src/tuscany/sca/core/SCARuntime.cpp487
1 files changed, 0 insertions, 487 deletions
diff --git a/tags/cpp-1.0-incubating-M2-final/sca/runtime/core/src/tuscany/sca/core/SCARuntime.cpp b/tags/cpp-1.0-incubating-M2-final/sca/runtime/core/src/tuscany/sca/core/SCARuntime.cpp
deleted file mode 100644
index 49ec646bb1..0000000000
--- a/tags/cpp-1.0-incubating-M2-final/sca/runtime/core/src/tuscany/sca/core/SCARuntime.cpp
+++ /dev/null
@@ -1,487 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/* $Rev$ $Date$ */
-
-#include "tuscany/sca/core/SCARuntime.h"
-#include "tuscany/sca/util/Logging.h"
-#include "tuscany/sca/util/Utils.h"
-#include "tuscany/sca/model/ModelLoader.h"
-#include "tuscany/sca/util/File.h"
-#include "tuscany/sca/util/Exceptions.h"
-#include "tuscany/sca/model/Composite.h"
-#include "tuscany/sca/model/Component.h"
-
-#if defined(WIN32) || defined (_WINDOWS)
-#include <windows.h>
-#endif
-
-namespace tuscany
-{
- namespace sca
- {
- /**
- * Environment variable names
- */
- static const char* TUSCANY_SCACPP = "TUSCANY_SCACPP";
- static const char* TUSCANY_SCACPP_SYSTEM_ROOT = "TUSCANY_SCACPP_SYSTEM_ROOT";
- static const char* TUSCANY_SCACPP_DEFAULT_COMPONENT = "TUSCANY_SCACPP_DEFAULT_COMPONENT";
-
- static const char* TUSCANY_SCACPP_ROOT = "TUSCANY_SCACPP_ROOT";
- static const char* TUSCANY_SCACPP_COMPONENT = "TUSCANY_SCACPP_COMPONENT";
- static const char* TUSCANY_SCACPP_PATH = "TUSCANY_SCACPP_PATH";
-
- // ==========================================================
- // Initialize static class member to not pointing at anything
- // ==========================================================
- SCARuntime* SCARuntime::instance = 0;
- string SCARuntime::systemRoot = "";
- string SCARuntime::systemPath = "";
- string SCARuntime::defaultComponentName = "";
-
-
- // ==========================================================
- // Set the system configuration root
- // ==========================================================
- void SCARuntime::setSystemRoot(const string& root)
- {
- LOGENTRY(1, "SCARuntime::setSystemRoot");
- systemRoot = root;
- LOGINFO_1(3, "SCARuntime::setSystemRoot - set to %s", root.c_str());
- LOGEXIT(1, "SCARuntime::setSystemRoot");
- }
-
- // ==========================================================
- // Set the system configuration root
- // ==========================================================
- void SCARuntime::setSystemPath(const string& path)
- {
- LOGENTRY(1, "SCARuntime::setSystemPath");
- systemPath = path;
- LOGINFO_1(3, "SCARuntime::setSystemPath - set to %s", path.c_str());
- LOGEXIT(1, "SCARuntime::setSystemPath");
- }
-
- // ==========================================================
- // Set the default component name
- // ==========================================================
- void SCARuntime::setDefaultComponentName(const string& componentName)
- {
- LOGENTRY(1, "SCARuntime::setDefaultComponentName");
- defaultComponentName = componentName;
- LOGINFO_1(3, "SCARuntime::setDefaultComponentName - set to %s", componentName.c_str());
- LOGEXIT(1, "SCARuntime::setDefaultComponentName");
- }
-
- // ===================================================================
- // Constructor for the SCARuntime class. This will be a singleton that
- // holds all the information about the current runtime.
- // ===================================================================
- SCARuntime::SCARuntime() : system(0), defaultComponent(0)
- {
- LOGENTRY(1, "SCARuntime::constructor");
-
- // Locate the SCA install root
- char* root = 0;
- root = getenv(TUSCANY_SCACPP);
- if (root == 0)
- {
- string msg = TUSCANY_SCACPP;
- msg += " environment variable not set";
- throw SystemConfigurationException(msg.c_str());
- }
- else
- {
- SCARoot = root;
- }
-
- LOGEXIT(1, "SCARuntime::constructor");
- }
-
- // ===================================================================
- // Destructor for the SCARuntime class.
- // ===================================================================
- SCARuntime::~SCARuntime()
- {
- LOGENTRY(1, "SCARuntime::destructor");
-
- if (system)
- {
- delete system;
- }
-
- LOGEXIT(1, "SCARuntime::destructor");
- }
-
- // =============================================================
- // Get the instance of the runtime, creates it if does not exist
- // static method
- // =============================================================
- SCARuntime* SCARuntime::getInstance()
- {
- LOGENTRY(1, "SCARuntime::getInstance");
-
- if (instance == NULL)
- {
- instance = new SCARuntime();
-
- // load extensions
- instance->loadExtensions();
-
- if (systemRoot == "")
- {
- // Get root from environment variable TUSCANY_SCACPP_ROOT
- char* systemRootEnv = getenv(TUSCANY_SCACPP_ROOT);
- if (systemRootEnv == 0)
- {
- // Get root from environment variable TUSCANY_SCACPP_SYSTEM_ROOT
- systemRootEnv = getenv(TUSCANY_SCACPP_SYSTEM_ROOT);
- }
- if (systemRootEnv == 0)
- {
- string msg = TUSCANY_SCACPP_ROOT;
- msg += " environment variable not set";
- throw SystemConfigurationException(msg.c_str());
- }
-
- systemRoot = systemRootEnv;
- }
- if (systemPath == "")
- {
-
- // Get system path from environment variable TUSCANY_SCACPP_PATH
- char* systemPathEnv = getenv(TUSCANY_SCACPP_PATH);
- if (systemPathEnv == 0)
- {
- // Make the path optional for now
-// string msg = TUSCANY_SCACPP_PATH;
-// msg += " environment variable not set";
-// throw SystemConfigurationException(msg.c_str());
- }
- else
- {
- systemPath = systemPathEnv;
- }
- }
- }
-
- LOGEXIT(1, "SCARuntime::getInstance");
-
- return instance;
-
- }
-
-
- // =============================================================
- // Release the instance of the runtime.
- // =============================================================
- void SCARuntime::releaseInstance()
- {
- LOGENTRY(1, "SCARuntime::releaseInstance");
-
- if (instance)
- {
- delete instance;
- instance = 0;
- systemRoot = "";
- systemPath = "";
- defaultComponentName = "";
- }
-
- LOGEXIT(1, "SCARuntime::releaseInstance");
- }
-
- // ======================================
- // Load up all the details of the runtime
- // ======================================
- void SCARuntime::load()
- {
- LOGENTRY(1, "SCARuntime::load");
-
- LOGINFO_1(2,"configuration root: %s", systemRoot.c_str());
- LOGINFO_1(2,"configuration path: %s", systemPath.c_str());
-
- // Load the system composite
- ModelLoader loader(system);
- loader.load(systemRoot, systemPath);
-
- LOGEXIT(1, "SCARuntime::load");
- }
-
-
- // ======================================
- // Load up extensions to the runtime
- // ======================================
- void SCARuntime::loadExtensions()
- {
- LOGENTRY(1, "SCARuntime::loadExtensions");
-
- string extensionsRoot = SCARoot + "/extensions";
-
-#if defined(WIN32) || defined (_WINDOWS)
- string pattern = "*.dll";
-#else
- string pattern = "*.so";
-#endif
-
- Files files(extensionsRoot, pattern, true);
- for (unsigned int i=0; i < files.size(); i++)
- {
- try
- {
- Library lib = Library( files[i].getDirectory() + "/" + files[i].getFileName());
- extensionsList.push_back(lib);
- TUSCANY_IMPLEMENTATION_EXTENSION_INITIALIZE extension =
- (TUSCANY_IMPLEMENTATION_EXTENSION_INITIALIZE)lib.getSymbol("tuscany_sca_extension_initialize");
- if (extension)
- {
- extension();
- }
- }
- catch (TuscanyRuntimeException& ex)
- {
- LOGERROR_3(0, "SCARuntime::loadExtensions failed to load extension library: %s: %s: %s",
- files[i].getFileName().c_str(), ex.getEClassName(), ex.getMessageText());
- }
- }
-
- LOGEXIT(1, "SCARuntime::loadExtensions");
- }
-
-
- // ======================================
- // register an interfaceExtension
- // ======================================
- void SCARuntime::registerInterfaceExtension(InterfaceExtension* extension)
- {
- LOGENTRY(1, "SCARuntime::registerInterfaceExtension");
- if (extension)
- {
- interfaceExtensions[extension->getExtensionTypeQName()] = extension;
- }
- LOGEXIT(1, "SCARuntime::registerInterfaceExtension");
- }
-
- // ======================================
- // find an InterfaceExtension
- // ======================================
- InterfaceExtension* SCARuntime::getInterfaceExtension(const string& extensionTypeQName)
- {
- return interfaceExtensions[extensionTypeQName];
- }
-
- // ======================================
- // register an implementationExtension
- // ======================================
- void SCARuntime::registerImplementationExtension(ImplementationExtension* extension)
- {
- LOGENTRY(1, "SCARuntime::registerImplementationExtension");
- if (extension)
- {
- implementationExtensions[extension->getExtensionTypeQName()] = extension;
- }
- LOGEXIT(1, "SCARuntime::registerImplementationExtension");
- }
-
- // ======================================
- // find an implementationExtension
- // ======================================
- ImplementationExtension* SCARuntime::getImplementationExtension(const string& extensionTypeQName)
- {
- return implementationExtensions[extensionTypeQName];
- }
-
- // ======================================
- // register a referenceBindingExtension
- // ======================================
- void SCARuntime::registerReferenceBindingExtension(ReferenceBindingExtension* extension)
- {
- LOGENTRY(1, "SCARuntime::registerReferenceBindingExtension");
- if (extension)
- {
- referenceBindingExtensions[extension->getExtensionTypeQName()] = extension;
- }
- LOGEXIT(1, "SCARuntime::registerReferenceBindingExtension");
- }
-
- // ======================================
- // find a referenceBindingExtension
- // ======================================
- ReferenceBindingExtension* SCARuntime::getReferenceBindingExtension(const string& extensionTypeQName)
- {
- return referenceBindingExtensions[extensionTypeQName];
- }
-
- // ======================================
- // register a serviceBindingExtension
- // ======================================
- void SCARuntime::registerServiceBindingExtension(ServiceBindingExtension* extension)
- {
- LOGENTRY(1, "SCARuntime::registerServiceBindingExtension");
- if (extension)
- {
- serviceBindingExtensions[extension->getExtensionTypeQName()] = extension;
- }
- LOGEXIT(1, "SCARuntime::registerServiceBindingExtension");
- }
-
- // ======================================
- // find a serviceBindingExtension
- // ======================================
- ServiceBindingExtension* SCARuntime::getServiceBindingExtension(const string& extensionTypeQName)
- {
- return serviceBindingExtensions[extensionTypeQName];
- }
-
-
- // ===================================
- // Return the top of the runtime model
- // ===================================
- Composite* SCARuntime::getSystem()
- {
- if (!system)
- {
- system = new Composite("tuscany/sca/system", "");
- load();
- }
- return system;
- }
-
-
- // ===================================================
- // setCurrentComponent: push component for this thread
- // ===================================================
- void SCARuntime::setCurrentComponent(Component* component)
- {
-
-#if defined(WIN32) || defined (_WINDOWS)
- DWORD currentThreadId = GetCurrentThreadId();
-#else
- pthread_t currentThreadId = pthread_self();
-#endif
- COMPONENTS_MAP::iterator iter = components.find(currentThreadId);
- if (iter == components.end())
- {
- components[currentThreadId] = COMPONENT_STACK();
- iter = components.find(currentThreadId);
- }
-
- COMPONENT_STACK& compStack = iter->second;
- compStack.push(component);
- }
-
-
- // ====================================================
- // unsetCurrentComponent: pop component for this thread
- // ====================================================
- Component* SCARuntime::unsetCurrentComponent()
- {
-#if defined(WIN32) || defined (_WINDOWS)
- DWORD currentThreadId = GetCurrentThreadId();
-#else
- pthread_t currentThreadId = pthread_self();
-#endif
-
- COMPONENTS_MAP::iterator iter = components.find(currentThreadId);
- if (iter != components.end())
- {
- COMPONENT_STACK& compStack = iter->second;
- if (compStack.size() > 0)
- {
- Component* component = compStack.top();
- compStack.pop();
- return component;
- }
- }
-
- return 0;
- }
-
- // =============================================================
- // getCurrentComponent: return current component for this thread
- // =============================================================
- Component* SCARuntime::getCurrentComponent()
- {
-#if defined(WIN32) || defined (_WINDOWS)
- DWORD currentThreadId = GetCurrentThreadId();
-#else
- pthread_t currentThreadId = pthread_self();
-#endif
-
- COMPONENTS_MAP::iterator iter = components.find(currentThreadId);
- if (iter == components.end())
- {
- components[currentThreadId] = COMPONENT_STACK();
- iter = components.find(currentThreadId);
- }
-
- COMPONENT_STACK& compStack = iter->second;
- if (compStack.size() > 0)
- {
- return compStack.top();
- }
- else
- {
- return 0;
- }
-
- }
-
- // ===========================================
- // getCurrentCompositeComponent: return the current composite component
- // ===========================================
- Component* SCARuntime::getDefaultComponent()
- {
-
- // ----------------------
- // Get the default Component
- // ----------------------
- if (!defaultComponent)
- {
- // -------------------------------------------
- // Get the default component name from the environment
- // -------------------------------------------
- if (defaultComponentName == "")
- {
- const char* defComp = getenv(TUSCANY_SCACPP_COMPONENT);
- if (!defComp)
- {
- defComp = getenv(TUSCANY_SCACPP_DEFAULT_COMPONENT);
- }
- if (!defComp)
- {
- string message = TUSCANY_SCACPP_COMPONENT;
- message += " environment variable not set";
- throw SystemConfigurationException(message.c_str());
- }
- defaultComponentName = defComp;
- }
-
- defaultComponent = getSystem()->findComponent(defaultComponentName);
- if (!defaultComponent)
- {
- string message = "Component \'" + defaultComponentName + "\' not found";
- throw SystemConfigurationException(message.c_str());
- }
- }
- return defaultComponent;
- }
-
- } // End namespace sca
-} // End namespace tuscany