diff options
Diffstat (limited to 'sca-cpp/tags/cpp-stable-20060304/sca/runtime/core/src/tuscany/sca/model/Subsystem.cpp')
-rw-r--r-- | sca-cpp/tags/cpp-stable-20060304/sca/runtime/core/src/tuscany/sca/model/Subsystem.cpp | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/sca-cpp/tags/cpp-stable-20060304/sca/runtime/core/src/tuscany/sca/model/Subsystem.cpp b/sca-cpp/tags/cpp-stable-20060304/sca/runtime/core/src/tuscany/sca/model/Subsystem.cpp new file mode 100644 index 0000000000..08ef0dde49 --- /dev/null +++ b/sca-cpp/tags/cpp-stable-20060304/sca/runtime/core/src/tuscany/sca/model/Subsystem.cpp @@ -0,0 +1,122 @@ +/* + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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: 2005/12/22 11:33:21 $ */ + +#include "tuscany/sca/util/Logging.h" +#include "tuscany/sca/model/Subsystem.h" + +namespace tuscany +{ + namespace sca + { + namespace model + { + + // Constructor + Subsystem::Subsystem(const std::string& subsystemName) : name(subsystemName) + { + LOGENTRY(1, "Subsystem::constructor"); + + + LOGEXIT(1, "Subsystem::constructor"); + } + + Subsystem::~Subsystem() + { + } + + /// + /// Add a new module component + /// + Module* Subsystem::addModuleComponent(const std::string& name, const std::string& moduleName) + { + LOGENTRY(1, "Subsystem::addModuleComponent"); + + Module* newModule = new Module(moduleName); + + // TODO: Should check for duplicates and throw exception + moduleComponents[name] = newModule; + + LOGEXIT(1, "Subsystem::addModuleComponent"); + + return newModule; + } + + Module* Subsystem::findModule(const std::string& moduleName) + { + for (MODULECOMPONENT_MAP::iterator moduleComponentIter = moduleComponents.begin(); + moduleComponentIter != moduleComponents.end(); + moduleComponentIter++) + { + if (moduleName == moduleComponentIter->second->getName()) + { + return (Module*)moduleComponentIter->second; + } + } + return 0; + } + + Module* Subsystem::findModuleByComponentName(const std::string& moduleComponentName) + { + return moduleComponents[moduleComponentName]; + } + + Module* Subsystem::getDefaultModule() + { + if (moduleComponents.size() == 1) + { + MODULECOMPONENT_MAP::iterator moduleComponentIter = moduleComponents.begin(); + return moduleComponentIter->second; + } + return 0; + } + + /// + /// Add a new entrypoint + /// + EntryPoint* Subsystem::addEntryPoint(const std::string& name) + { + LOGENTRY(1, "Subsystem::addEntryPoint"); + + EntryPoint* newEntryPoint = new EntryPoint(name); + entryPoints[name] = newEntryPoint; + LOGEXIT(1, "Subsystem::addEntryPoint"); + return findEntryPoint(name); + } + + EntryPoint* Subsystem::findEntryPoint(const std::string& name) + { + return entryPoints[name]; + } + + void Subsystem::resolveWires() + { + for (MODULECOMPONENT_MAP::iterator moduleComponentIter = moduleComponents.begin(); + moduleComponentIter != moduleComponents.end(); + moduleComponentIter++) + { + moduleComponentIter->second->resolveWires(); + } + + // Resolve EntryPoint wires + } + + } // End namespace model + + } // End namespace sca +} // End namespace tuscany |