diff options
author | Benoit Foucher <benoit@zeroc.com> | 2004-06-02 21:17:40 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2004-06-02 21:17:40 +0000 |
commit | c209ff436f4268b8db689a2dd17615456eea78ce (patch) | |
tree | 5feb8607988706851bfdfdd5ba2d3924ba5b8f6c /cpp/src | |
parent | Fixed to AMD code generation. (diff) | |
download | ice-c209ff436f4268b8db689a2dd17615456eea78ce.tar.bz2 ice-c209ff436f4268b8db689a2dd17615456eea78ce.tar.xz ice-c209ff436f4268b8db689a2dd17615456eea78ce.zip |
Merged icepack_refactoring2_branch, many IcePack changes.
Diffstat (limited to 'cpp/src')
58 files changed, 4839 insertions, 3351 deletions
diff --git a/cpp/src/IceBox/ServiceManagerI.cpp b/cpp/src/IceBox/ServiceManagerI.cpp index c9102d2cecf..6b036368cce 100644 --- a/cpp/src/IceBox/ServiceManagerI.cpp +++ b/cpp/src/IceBox/ServiceManagerI.cpp @@ -10,7 +10,6 @@ #include <Ice/Ice.h> #include <Ice/DynamicLibrary.h> #include <IceBox/ServiceManagerI.h> -#include <Freeze/Exception.h> using namespace Ice; using namespace IceBox; @@ -329,43 +328,14 @@ IceBox::ServiceManagerI::start(const string& service, const string& entryPoint, CommunicatorPtr communicator = info.communicator ? info.communicator : _server->communicator(); - ServicePtr s = ServicePtr::dynamicCast(info.service); - - if(s) - { - // - // IceBox::Service - // - s->start(service, communicator, serviceArgs); - } - else - { - // - // IceBox::FreezeService - // - // Either open the database environment, or if it has already been opened, - // retrieve it from the map. - // - FreezeServicePtr fs = FreezeServicePtr::dynamicCast(info.service); - - info.envName = properties->getProperty("IceBox.DBEnvName." + service); - - fs->start(service, communicator, serviceArgs, info.envName); - } + // + // Start the service. + // + info.service->start(service, communicator, serviceArgs); info.library = library; _services[service] = info; } - catch(const Freeze::DatabaseException& ex) - { - ostringstream s; - s << "ServiceManager: database exception while starting service " << service << ":\n"; - s << ex; - - FailureException e(__FILE__, __LINE__); - e.reason = s.str(); - throw e; - } catch(const FailureException&) { throw; diff --git a/cpp/src/IceBox/ServiceManagerI.h b/cpp/src/IceBox/ServiceManagerI.h index a54d9492e1b..2a490d6c525 100644 --- a/cpp/src/IceBox/ServiceManagerI.h +++ b/cpp/src/IceBox/ServiceManagerI.h @@ -33,7 +33,7 @@ public: struct ServiceInfo { - ServiceBasePtr service; + ServicePtr service; ::IceInternal::DynamicLibraryPtr library; ::Ice::CommunicatorPtr communicator; ::std::string envName; diff --git a/cpp/src/IcePack/.depend b/cpp/src/IcePack/.depend index 91c0781660e..0c90837f632 100644 --- a/cpp/src/IcePack/.depend +++ b/cpp/src/IcePack/.depend @@ -1,43 +1,44 @@ Admin.o: Admin.cpp ../../include/IcePack/Admin.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/BuiltinSequences.h ../../include/IceBox/IceBox.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/IcePack/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactory.h Query.o: Query.cpp ../../include/IcePack/Query.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/BuiltinSequences.h ../../include/IcePack/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactory.h -Exception.o: Exception.cpp ../../include/IcePack/Exception.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/LocalException.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/ObjectFactory.h +Exception.o: Exception.cpp ../../include/IcePack/Exception.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/IceUtil/Mutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/Identity.h Grammar.o: Grammar.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/Parser.h ../../include/IcePack/Admin.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/IcePack/Query.h Scanner.o: Scanner.cpp ../../include/IceUtil/Config.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/Parser.h ../../include/IcePack/Admin.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/IcePack/Query.h ../IcePack/Grammar.h -Parser.o: Parser.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/Parser.h ../../include/IcePack/Admin.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/IcePack/Query.h ../IcePack/GPL.h +Parser.o: Parser.cpp ../../include/IceUtil/OutputUtil.h ../../include/IceUtil/Config.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/IceXML/Parser.h ../IcePack/Parser.h ../../include/IcePack/Admin.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/IcePack/Query.h ../IcePack/DescriptorVisitor.h ../IcePack/DescriptorParser.h ../IcePack/DescriptorUtil.h ../IcePack/GPL.h +DescriptorVisitor.o: DescriptorVisitor.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/IcePack/Admin.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/DescriptorVisitor.h +DescriptorParser.o: DescriptorParser.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/IceXML/Parser.h ../../include/IcePack/Admin.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/DescriptorParser.h +DescriptorUtil.o: DescriptorUtil.cpp ../IcePack/DescriptorUtil.h ../../include/IcePack/Admin.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/BuiltinSequences.h ../../include/IceBox/IceBox.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/IcePack/Exception.h Client.o: Client.cpp ../../include/Ice/Application.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../IcePack/Parser.h ../../include/IcePack/Admin.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/IcePack/Query.h Internal.o: Internal.cpp ../IcePack/Internal.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/IcePack/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactory.h TraceLevels.o: TraceLevels.cpp ../../include/Ice/Properties.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/BuiltinSequences.h ../IcePack/TraceLevels.h ../../include/Ice/PropertiesF.h ../../include/Ice/LoggerF.h -ComponentBuilder.o: ComponentBuilder.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/ComponentBuilder.h ../../include/IceXML/Parser.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h -NodeInfo.o: NodeInfo.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/NodeInfo.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/ServerFactory.h ../IcePack/Activator.h ../IcePack/WaitQueue.h ../../include/IceUtil/Thread.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../IcePack/TraceLevels.h -NodeI.o: NodeI.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/NodeI.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/Activator.h -ServiceBuilder.o: ServiceBuilder.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/ServiceBuilder.h ../IcePack/ComponentBuilder.h ../../include/IceXML/Parser.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/NodeInfo.h ../IcePack/ServerBuilder.h -ServerBuilder.o: ServerBuilder.cpp ../../include/IceUtil/UUID.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/ServerBuilder.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/NodeInfo.h ../IcePack/ComponentBuilder.h ../../include/IceXML/Parser.h ../IcePack/ServiceBuilder.h ../IcePack/AdapterFactory.h ../../include/Freeze/EvictorF.h ../IcePack/ServerFactory.h ../IcePack/Activator.h ../IcePack/WaitQueue.h ../../include/IceUtil/Thread.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h -ServerI.o: ServerI.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/ServerI.h ../../include/Freeze/EvictorF.h ../IcePack/Activator.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../IcePack/Internal.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/IceUtil/AbstractMutex.h ../IcePack/ServerFactory.h ../IcePack/WaitQueue.h ../../include/IceUtil/Thread.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../IcePack/TraceLevels.h -ServerAdapterI.o: ServerAdapterI.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/ServerAdapterI.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/IceUtil/AbstractMutex.h ../IcePack/ServerFactory.h ../IcePack/Activator.h ../IcePack/WaitQueue.h ../../include/IceUtil/Thread.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../IcePack/TraceLevels.h -ServerFactory.o: ServerFactory.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/IceUtil/UUID.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../../include/Freeze/Initialize.h ../../include/Freeze/EvictorF.h ../../include/Freeze/ConnectionF.h ../../include/Freeze/Index.h ../../include/Freeze/DB.h ../IcePack/ServerFactory.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/Activator.h ../IcePack/WaitQueue.h ../../include/IceUtil/Thread.h ../IcePack/ServerI.h ../../include/IceUtil/AbstractMutex.h ../IcePack/ServerAdapterI.h ../IcePack/TraceLevels.h -ServerDeployerI.o: ServerDeployerI.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/ServerDeployerI.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/NodeInfo.h ../IcePack/ServerFactory.h ../IcePack/Activator.h ../IcePack/WaitQueue.h ../../include/IceUtil/Thread.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../IcePack/ServerBuilder.h ../IcePack/ComponentBuilder.h ../../include/IceXML/Parser.h ../IcePack/TraceLevels.h -Activator.o: Activator.cpp ../IcePack/Activator.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../IcePack/Internal.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/IcePack/Exception.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectFactory.h -ActivatorI.o: ActivatorI.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/ActivatorI.h ../../include/IceUtil/Thread.h ../IcePack/Activator.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../IcePack/Internal.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/TraceLevels.h +NodeI.o: NodeI.cpp ../../include/IceUtil/UUID.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/NodeI.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/Activator.h ../../include/IceUtil/Thread.h ../IcePack/ServerFactory.h ../IcePack/WaitQueue.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h +ServerFactory.o: ServerFactory.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/IceUtil/UUID.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../../include/Freeze/Initialize.h ../../include/Freeze/EvictorF.h ../../include/Freeze/ConnectionF.h ../../include/Freeze/Index.h ../../include/Freeze/DB.h ../IcePack/ServerFactory.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/Activator.h ../../include/IceUtil/Thread.h ../IcePack/WaitQueue.h ../IcePack/ServerI.h ../../include/IceUtil/AbstractMutex.h ../IcePack/ServerAdapterI.h ../IcePack/TraceLevels.h +ServerI.o: ServerI.cpp ../../include/IceUtil/UUID.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/ServerI.h ../../include/Freeze/EvictorF.h ../IcePack/Activator.h ../../include/IceUtil/Thread.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/IceUtil/AbstractMutex.h ../IcePack/ServerFactory.h ../IcePack/WaitQueue.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../IcePack/TraceLevels.h +ServerAdapterI.o: ServerAdapterI.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/ServerAdapterI.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/IceUtil/AbstractMutex.h ../IcePack/ServerFactory.h ../IcePack/Activator.h ../../include/IceUtil/Thread.h ../IcePack/WaitQueue.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../IcePack/TraceLevels.h +Activator.o: Activator.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/Activator.h ../../include/IceUtil/Thread.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/TraceLevels.h WaitQueue.o: WaitQueue.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/WaitQueue.h ../../include/IceUtil/Thread.h -Registry.o: Registry.cpp ../../include/IceUtil/UUID.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Freeze/Freeze.h ../../include/Freeze/Initialize.h ../../include/Freeze/EvictorF.h ../../include/Freeze/ConnectionF.h ../../include/Freeze/Index.h ../../include/Freeze/DB.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../../include/Freeze/Map.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../../include/Freeze/TransactionHolder.h ../IcePack/Registry.h ../IcePack/AdapterI.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/IceUtil/AbstractMutex.h ../IcePack/AdapterFactory.h ../IcePack/ServerRegistryI.h ../IcePack/StringObjectProxyDict.h ../IcePack/AdapterRegistryI.h ../IcePack/ObjectRegistryI.h ../IcePack/IdentityObjectDescDict.h ../IcePack/StringObjectProxySeqDict.h ../IcePack/NodeRegistryI.h ../IcePack/LocatorI.h ../../include/Ice/Locator.h ../IcePack/LocatorRegistryI.h ../IcePack/AdminI.h ../IcePack/QueryI.h ../../include/IcePack/Query.h ../IcePack/TraceLevels.h +DescriptorParser.o: DescriptorParser.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/IceXML/Parser.h ../../include/IcePack/Admin.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/DescriptorParser.h +Registry.o: Registry.cpp ../../include/IceUtil/UUID.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Freeze/Freeze.h ../../include/Freeze/Initialize.h ../../include/Freeze/EvictorF.h ../../include/Freeze/ConnectionF.h ../../include/Freeze/Index.h ../../include/Freeze/DB.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../../include/Freeze/Map.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../../include/Freeze/TransactionHolder.h ../IcePack/Registry.h ../IcePack/AdapterI.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/IceUtil/AbstractMutex.h ../IcePack/AdapterFactory.h ../IcePack/ApplicationRegistryI.h ../IcePack/StringStringSeqDict.h ../IcePack/ServerRegistryI.h ../IcePack/StringObjectProxyDict.h ../IcePack/StringServerDescriptorDict.h ../IcePack/AdapterRegistryI.h ../IcePack/ObjectRegistryI.h ../IcePack/IdentityObjectDescDict.h ../IcePack/StringObjectProxySeqDict.h ../IcePack/NodeRegistryI.h ../IcePack/LocatorI.h ../../include/Ice/Locator.h ../IcePack/LocatorRegistryI.h ../IcePack/AdminI.h ../IcePack/QueryI.h ../../include/IcePack/Query.h ../IcePack/TraceLevels.h ObjectRegistryI.o: ObjectRegistryI.cpp ../IcePack/ObjectRegistryI.h ../IcePack/Internal.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/IcePack/Exception.h ../IcePack/IdentityObjectDescDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IcePack/StringObjectProxySeqDict.h ../../include/Freeze/ConnectionF.h ../IcePack/TraceLevels.h ../../include/Freeze/Initialize.h ../../include/Freeze/EvictorF.h ../../include/Freeze/Index.h AdapterRegistryI.o: AdapterRegistryI.cpp ../IcePack/AdapterRegistryI.h ../IcePack/Internal.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/IcePack/Exception.h ../IcePack/StringObjectProxyDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IcePack/TraceLevels.h ../../include/Freeze/Initialize.h ../../include/Freeze/EvictorF.h ../../include/Freeze/ConnectionF.h ../../include/Freeze/Index.h -ServerRegistryI.o: ServerRegistryI.cpp ../IcePack/ServerRegistryI.h ../IcePack/Internal.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/IcePack/Exception.h ../IcePack/StringObjectProxyDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IcePack/TraceLevels.h ../../include/Freeze/Initialize.h ../../include/Freeze/EvictorF.h ../../include/Freeze/ConnectionF.h ../../include/Freeze/Index.h +ServerRegistryI.o: ServerRegistryI.cpp ../IcePack/ServerRegistryI.h ../IcePack/Internal.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/IcePack/Exception.h ../IcePack/StringObjectProxyDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IcePack/StringServerDescriptorDict.h ../IcePack/TraceLevels.h ../../include/Freeze/Initialize.h ../../include/Freeze/EvictorF.h ../../include/Freeze/ConnectionF.h ../../include/Freeze/Index.h NodeRegistryI.o: NodeRegistryI.cpp ../IcePack/NodeRegistryI.h ../IcePack/Internal.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/IcePack/Exception.h ../IcePack/StringObjectProxyDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IcePack/AdapterFactory.h ../../include/Freeze/EvictorF.h ../IcePack/TraceLevels.h ../../include/Freeze/Initialize.h ../../include/Freeze/ConnectionF.h ../../include/Freeze/Index.h +ApplicationRegistryI.o: ApplicationRegistryI.cpp ../IcePack/ApplicationRegistryI.h ../IcePack/Internal.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/IcePack/Exception.h ../IcePack/StringStringSeqDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IcePack/TraceLevels.h ../../include/Freeze/Initialize.h ../../include/Freeze/EvictorF.h ../../include/Freeze/ConnectionF.h ../../include/Freeze/Index.h StringObjectProxyDict.o: StringObjectProxyDict.cpp ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Buffer.h ../IcePack/StringObjectProxyDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h StringObjectProxySeqDict.o: StringObjectProxySeqDict.cpp ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Buffer.h ../IcePack/StringObjectProxySeqDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h +StringServerDescriptorDict.o: StringServerDescriptorDict.cpp ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Buffer.h ../IcePack/StringServerDescriptorDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../../include/IcePack/Admin.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h +StringStringSeqDict.o: StringStringSeqDict.cpp ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Buffer.h ../IcePack/StringStringSeqDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h IdentityObjectDescDict.o: IdentityObjectDescDict.cpp ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Buffer.h ../IcePack/IdentityObjectDescDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h LocatorI.o: LocatorI.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/LocatorI.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/Ice/Locator.h LocatorRegistryI.o: LocatorRegistryI.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/LocatorRegistryI.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/Ice/Locator.h ../IcePack/AdapterI.h ../../include/IceUtil/AbstractMutex.h -ApplicationBuilder.o: ApplicationBuilder.cpp ../IcePack/ApplicationBuilder.h ../IcePack/ComponentBuilder.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../../include/IceXML/Parser.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../IcePack/Internal.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/IcePack/Exception.h AdapterFactory.o: AdapterFactory.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/IceUtil/UUID.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../../include/Freeze/Initialize.h ../../include/Freeze/EvictorF.h ../../include/Freeze/ConnectionF.h ../../include/Freeze/Index.h ../../include/Freeze/DB.h ../IcePack/AdapterFactory.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/AdapterI.h ../../include/IceUtil/AbstractMutex.h ../IcePack/TraceLevels.h AdapterI.o: AdapterI.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/AdapterI.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../../include/IceUtil/AbstractMutex.h ../IcePack/AdapterFactory.h ../../include/Freeze/EvictorF.h ../IcePack/TraceLevels.h -AdminI.o: AdminI.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/AdminI.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/ApplicationBuilder.h ../IcePack/ComponentBuilder.h ../../include/IceXML/Parser.h +AdminI.o: AdminI.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../IcePack/AdminI.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/DescriptorVisitor.h ../IcePack/DescriptorUtil.h ../Ice/TraceUtil.h ../Ice/TraceLevelsF.h +DescriptorVisitor.o: DescriptorVisitor.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/IcePack/Admin.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/DescriptorVisitor.h +DescriptorUtil.o: DescriptorUtil.cpp ../IcePack/DescriptorUtil.h ../../include/IcePack/Admin.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/BuiltinSequences.h ../../include/IceBox/IceBox.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/IcePack/Exception.h QueryI.o: QueryI.cpp ../IcePack/Internal.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/IcePack/Exception.h ../IcePack/QueryI.h ../../include/IcePack/Query.h -IcePackNode.o: IcePackNode.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Service.h ../IcePack/Activator.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../IcePack/Internal.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/WaitQueue.h ../../include/IceUtil/Thread.h ../IcePack/Registry.h ../IcePack/ActivatorI.h ../IcePack/ServerFactory.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../IcePack/AdapterFactory.h ../../include/Freeze/EvictorF.h ../IcePack/ServerDeployerI.h ../IcePack/NodeInfo.h ../IcePack/AdapterI.h ../../include/IceUtil/AbstractMutex.h ../IcePack/NodeI.h ../IcePack/TraceLevels.h ../../include/IceUtil/UUID.h +IcePackNode.o: IcePackNode.cpp ../../include/IceUtil/UUID.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Service.h ../IcePack/Activator.h ../../include/IceUtil/Thread.h ../IcePack/Internal.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../../include/IcePack/Admin.h ../../include/IceBox/IceBox.h ../../include/IcePack/Exception.h ../IcePack/WaitQueue.h ../IcePack/Registry.h ../IcePack/ServerFactory.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../IcePack/AdapterFactory.h ../../include/Freeze/EvictorF.h ../IcePack/AdapterI.h ../../include/IceUtil/AbstractMutex.h ../IcePack/NodeI.h ../IcePack/TraceLevels.h ../IcePack/DescriptorParser.h IcePackRegistry.o: IcePackRegistry.cpp ../../include/Ice/Ice.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionF.h ../../include/Ice/EndpointF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/Identity.h ../../include/Ice/Object.h ../../include/IceUtil/GCShared.h ../../include/IceUtil/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/StatsF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/IdentityUtil.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Service.h ../IcePack/Registry.h Admin.cpp: ../../slice/IcePack/Admin.ice ../../slice/Ice/Identity.ice ../../slice/Ice/BuiltinSequences.ice ../../slice/IceBox/IceBox.ice ../../slice/Ice/CommunicatorF.ice ../../slice/Ice/PropertiesF.ice ../../slice/IcePack/Exception.ice Exception.cpp: ../../slice/IcePack/Exception.ice Query.cpp: ../../slice/IcePack/Query.ice ../../slice/Ice/Identity.ice ../../slice/Ice/BuiltinSequences.ice ../../slice/IcePack/Exception.ice Internal.cpp: Internal.ice ../../slice/Ice/Identity.ice ../../slice/Ice/BuiltinSequences.ice ../../slice/Ice/ProcessF.ice ../../slice/IcePack/Admin.ice ../../slice/IceBox/IceBox.ice ../../slice/Ice/CommunicatorF.ice ../../slice/Ice/PropertiesF.ice ../../slice/IcePack/Exception.ice -Activator.cpp: Activator.ice ../IcePack/Internal.ice ../../slice/Ice/Identity.ice ../../slice/Ice/BuiltinSequences.ice ../../slice/Ice/ProcessF.ice ../../slice/IcePack/Admin.ice ../../slice/IceBox/IceBox.ice ../../slice/Ice/CommunicatorF.ice ../../slice/Ice/PropertiesF.ice ../../slice/IcePack/Exception.ice diff --git a/cpp/src/IcePack/ActivatorI.cpp b/cpp/src/IcePack/Activator.cpp index ce640501f8e..5aedac0a83e 100644 --- a/cpp/src/IcePack/ActivatorI.cpp +++ b/cpp/src/IcePack/Activator.cpp @@ -8,7 +8,7 @@ // ********************************************************************** #include <Ice/Ice.h> -#include <IcePack/ActivatorI.h> +#include <IcePack/Activator.h> #include <IcePack/Admin.h> #include <IcePack/Internal.h> #include <IcePack/TraceLevels.h> @@ -30,7 +30,7 @@ class TerminationListenerThread : public IceUtil::Thread { public: - TerminationListenerThread(ActivatorI& activator) : + TerminationListenerThread(Activator& activator) : _activator(activator) { } @@ -43,7 +43,7 @@ public: private: - ActivatorI& _activator; + Activator& _activator; }; } @@ -61,8 +61,8 @@ void reportChildError(int err, int fd, const char* cannot, const char* name) { // - // Send any errors to the parent process, using the write end of - // the pipe. + // Send any errors to the parent process, using the write + // end of the pipe. // char msg[500]; strcpy(msg, cannot); @@ -239,7 +239,7 @@ stringToSignal(const string& str) } -IcePack::ActivatorI::ActivatorI(const TraceLevelsPtr& traceLevels, const PropertiesPtr& properties) : +Activator::Activator(const TraceLevelsPtr& traceLevels, const PropertiesPtr& properties) : _traceLevels(traceLevels), _properties(properties), _deactivating(false) @@ -312,7 +312,7 @@ IcePack::ActivatorI::ActivatorI(const TraceLevelsPtr& traceLevels, const Propert } } -IcePack::ActivatorI::~ActivatorI() +Activator::~Activator() { assert(!_thread); @@ -328,7 +328,12 @@ IcePack::ActivatorI::~ActivatorI() } bool -IcePack::ActivatorI::activate(const ServerPtr& server) +Activator::activate(const string& name, + const string& exePath, + const string& pwdPath, + const Ice::StringSeq& options, + const Ice::StringSeq& envs, + const ServerPrx& server) { IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); @@ -337,13 +342,13 @@ IcePack::ActivatorI::activate(const ServerPtr& server) return false; } - string path = server->description.path; + string path = exePath; if(path.empty()) { return false; } - string pwd = server->description.pwd; + string pwd = pwdPath; #ifdef _WIN32 // @@ -410,15 +415,15 @@ IcePack::ActivatorI::activate(const ServerPtr& server) // StringSeq args; args.push_back(path); - args.insert(args.end(), server->description.args.begin(), server->description.args.end()); + args.insert(args.end(), options.begin(), options.end()); args.insert(args.end(), _propertiesOverride.begin(), _propertiesOverride.end()); args.push_back("--Ice.Default.Locator=" + _properties->getProperty("Ice.Default.Locator")); - args.push_back("--Ice.ServerId=" + server->description.name); + args.push_back("--Ice.ServerId=" + name); if(_traceLevels->activator > 1) { Ice::Trace out(_traceLevels->logger, _traceLevels->activatorCat); - out << "activating server `" << server->description.name << "'"; + out << "activating server `" << name << "'"; if(_traceLevels->activator > 2) { out << "\n"; @@ -486,7 +491,7 @@ IcePack::ActivatorI::activate(const ServerPtr& server) // const char* env = NULL; string envbuf; - if(!server->description.envs.empty()) + if(!envs.empty()) { map<string, string> envMap; LPVOID parentEnv = GetEnvironmentStrings(); @@ -514,7 +519,7 @@ IcePack::ActivatorI::activate(const ServerPtr& server) var++; // Skip the '\0' byte } FreeEnvironmentStrings(static_cast<char*>(parentEnv)); - for(p = server->description.envs.begin(); p != server->description.envs.end(); ++p) + for(p = envs.begin(); p != envs.end(); ++p) { string s = *p; string::size_type pos = s.find('='); @@ -541,7 +546,7 @@ IcePack::ActivatorI::activate(const ServerPtr& server) si.cb = sizeof(si); if(_outputDir.size() > 0) { - string outFile = _outputDir + "/" + server->description.name + ".out"; + string outFile = _outputDir + "/" + name + ".out"; SECURITY_ATTRIBUTES sec = { 0 }; sec.nLength = sizeof(sec); @@ -577,7 +582,7 @@ IcePack::ActivatorI::activate(const ServerPtr& server) } else { - string errFile = _outputDir + "/" + server->description.name + ".err"; + string errFile = _outputDir + "/" + name + ".err"; process.errHandle = CreateFile(errFile.c_str(), GENERIC_WRITE, @@ -672,17 +677,18 @@ IcePack::ActivatorI::activate(const ServerPtr& server) // CloseHandle(pi.hThread); + process.pid = pi.dwProcessId; process.hnd = pi.hProcess; process.server = server; - _processes.push_back(process); + _processes.insert(make_pair(name, process)); setInterrupt(); if(_traceLevels->activator > 0) { Ice::Trace out(_traceLevels->logger, _traceLevels->activatorCat); - out << "activated server `" << server->description.name << "' (pid = " << pi.dwProcessId << ")"; + out << "activated server `" << name << "' (pid = " << pi.dwProcessId << ")"; } #else int fds[2]; @@ -707,12 +713,12 @@ IcePack::ActivatorI::activate(const ServerPtr& server) assert(i == argc); argv[argc] = 0; - int envCount = server->description.envs.size(); - char** envs = new char*[envCount]; + int envCount = envs.size(); + char** envArray = new char*[envCount]; i = 0; - for(StringSeq::const_iterator q = server->description.envs.begin(); q != server->description.envs.end(); ++q) + for(StringSeq::const_iterator q = envs.begin(); q != envs.end(); ++q) { - envs[i++] = strdup(q->c_str()); + envArray[i++] = strdup(q->c_str()); } // @@ -733,7 +739,7 @@ IcePack::ActivatorI::activate(const ServerPtr& server) } else { - outFile = _outputDir + "/" + server->description.name + ".out"; + outFile = _outputDir + "/" + name + ".out"; outFd = open(outFile.c_str(), flags, mode); if(outFd < 0) { @@ -749,7 +755,7 @@ IcePack::ActivatorI::activate(const ServerPtr& server) } else { - errFile = _outputDir + "/" + server->description.name + ".err"; + errFile = _outputDir + "/" + name + ".err"; errFd = open(errFile.c_str(), flags, mode); if(errFd < 0) @@ -769,6 +775,7 @@ IcePack::ActivatorI::activate(const ServerPtr& server) // const char* pwdCStr = pwd.c_str(); + pid_t pid = fork(); if(pid == -1) { @@ -823,15 +830,15 @@ IcePack::ActivatorI::activate(const ServerPtr& server) for(i = 0; i < envCount; i++) { - if(putenv(envs[i]) != 0) + if(putenv(envArray[i]) != 0) { - reportChildError(errno, fds[1], "cannot set environment variable", envs[i]); + reportChildError(errno, fds[1], "cannot set environment variable", envArray[i]); } } // // Each env is leaked on purpose ... see man putenv(). // - delete[] envs; + delete[] envArray; // // Change working directory. @@ -855,9 +862,9 @@ IcePack::ActivatorI::activate(const ServerPtr& server) for(i = 0; i < envCount; ++i) { - free(envs[i]); + free(envArray[i]); } - delete[] envs; + delete[] envArray; Process process; process.pid = pid; @@ -865,7 +872,7 @@ IcePack::ActivatorI::activate(const ServerPtr& server) process.outFd = outFd; process.errFd = errFd; process.server = server; - _processes.push_back(process); + _processes.insert(make_pair(name, process)); int flags = fcntl(process.pipeFd, F_GETFL); flags |= O_NONBLOCK; @@ -876,7 +883,7 @@ IcePack::ActivatorI::activate(const ServerPtr& server) if(_traceLevels->activator > 0) { Ice::Trace out(_traceLevels->logger, _traceLevels->activatorCat); - out << "activated server `" << server->description.name << "' (pid = " << pid << ")"; + out << "activated server `" << name << "' (pid = " << pid << ")"; } } #endif @@ -885,11 +892,10 @@ IcePack::ActivatorI::activate(const ServerPtr& server) } void -IcePack::ActivatorI::deactivate(const ServerPtr& server) +Activator::deactivate(const string& name, const Ice::ProcessPrx& process) { #ifdef _WIN32 - Ice::Int pid = server->getPid(); - + Ice::Int pid = getServerPid(name); if(pid == 0) { // @@ -897,36 +903,34 @@ IcePack::ActivatorI::deactivate(const ServerPtr& server) // return; } -#endif +#endif // // Try to shut down the server gracefully using the process proxy. // - Ice::ProcessPrx process = server->getProcess(); if(process) { - if(_traceLevels->activator > 1) - { - Ice::Trace out(_traceLevels->logger, _traceLevels->activatorCat); - out << "deactivating `" << server->description.name << "' using process proxy"; - } - try - { - process->shutdown(); - return; - } - catch(const Ice::LocalException& ex) - { - Ice::Warning out(_traceLevels->logger); - out << "exception occurred while deactivating `" << server->description.name - << "' using process proxy:\n" << ex; - } + if(_traceLevels->activator > 1) + { + Ice::Trace out(_traceLevels->logger, _traceLevels->activatorCat); + out << "deactivating `" << name << "' using process proxy"; + } + try + { + process->shutdown(); + return; + } + catch(const Ice::LocalException& ex) + { + Ice::Warning out(_traceLevels->logger); + out << "exception occurred while deactivating `" << name << "' using process proxy:\n" << ex; + } } if(_traceLevels->activator > 1) { Ice::Trace out(_traceLevels->logger, _traceLevels->activatorCat); - out << "no process proxy, deactivating `" << server->description.name << "' using signal"; + out << "no process proxy, deactivating `" << name << "' using signal"; } #ifdef _WIN32 @@ -938,7 +942,7 @@ IcePack::ActivatorI::deactivate(const ServerPtr& server) if(_traceLevels->activator > 1) { Ice::Trace out(_traceLevels->logger, _traceLevels->activatorCat); - out << "sent Ctrl+Break to server `" << server->description.name << "' (pid = " << pid << ")"; + out << "sent Ctrl+Break to server `" << name << "' (pid = " << pid << ")"; } } else @@ -951,17 +955,16 @@ IcePack::ActivatorI::deactivate(const ServerPtr& server) // // Send a SIGTERM to the process. // - sendSignal(server, SIGTERM); + sendSignal(name, SIGTERM); #endif } void -IcePack::ActivatorI::kill(const ServerPtr& server) +Activator::kill(const string& name) { #ifdef _WIN32 - Ice::Int pid = server->getPid(); - + Ice::Int pid = getServerPid(name); if(pid == 0) { // @@ -992,22 +995,22 @@ IcePack::ActivatorI::kill(const ServerPtr& server) if(_traceLevels->activator > 1) { Ice::Trace out(_traceLevels->logger, _traceLevels->activatorCat); - out << "terminating server `" << server->description.name << "' (pid = " << pid << ")"; + out << "terminating server `" << name << "' (pid = " << pid << ")"; } #else - sendSignal(server, SIGKILL); + sendSignal(name, SIGKILL); #endif } void -IcePack::ActivatorI::sendSignal(const ServerPtr& server, const string& signal) +Activator::sendSignal(const string& name, const string& signal) { - sendSignal(server, stringToSignal(signal)); + sendSignal(name, stringToSignal(signal)); } void -IcePack::ActivatorI::sendSignal(const ServerPtr& server, int signal) +Activator::sendSignal(const string& name, int signal) { #ifdef _WIN32 // @@ -1016,8 +1019,7 @@ IcePack::ActivatorI::sendSignal(const ServerPtr& server, int signal) throw BadSignalException(); #else - Ice::Int pid = server->getPid(); - + Ice::Int pid = getServerPid(name); if(pid == 0) { // @@ -1042,14 +1044,13 @@ IcePack::ActivatorI::sendSignal(const ServerPtr& server, int signal) if(_traceLevels->activator > 1) { Ice::Trace out(_traceLevels->logger, _traceLevels->activatorCat); - out << "sent " << signalToString(signal) << " to server `" - << server->description.name << "' (pid = " << pid << ")"; + out << "sent " << signalToString(signal) << " to server `" << name << "' (pid = " << pid << ")"; } #endif } void -IcePack::ActivatorI::writeMessage(const ServerPtr& server, const string& message, Ice::Int fd) +Activator::writeMessage(const string& name, const string& message, Ice::Int fd) { assert(fd == 1 || fd == 2); @@ -1063,18 +1064,17 @@ IcePack::ActivatorI::writeMessage(const ServerPtr& server, const string& message { IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); - for(vector<Process>::iterator p = _processes.begin(); p != _processes.end(); ++p) + map<string, Process>::const_iterator p = _processes.find(name); + if(p == _processes.end()) { - if(p->server == server) - { + return; + } + #ifdef _WIN32 - handle = (fd == 1 ? p->outHandle : p->errHandle); + handle = (fd == 1 ? p->second.outHandle : p->second.errHandle); #else - actualFd = (fd == 1 ? p->outFd : p->errFd); + actualFd = (fd == 1 ? p->second.outFd : p->second.errFd); #endif - break; // for - } - } } #ifdef _WIN32 @@ -1106,23 +1106,21 @@ IcePack::ActivatorI::writeMessage(const ServerPtr& server, const string& message Ice::Int -IcePack::ActivatorI::getServerPid(const ServerPtr& server) +Activator::getServerPid(const string& name) { IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); - for(vector<Process>::iterator p = _processes.begin(); p != _processes.end(); ++p) + map<string, Process>::const_iterator p = _processes.find(name); + if(p == _processes.end()) { - if(p->server == server) - { - return static_cast<Ice::Int>(p->pid); - } + return 0; } - return 0; + return static_cast<Ice::Int>(p->second.pid); } void -IcePack::ActivatorI::start() +Activator::start() { // // Create and start the termination listener thread. @@ -1132,7 +1130,7 @@ IcePack::ActivatorI::start() } void -IcePack::ActivatorI::waitForShutdown() +Activator::waitForShutdown() { IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); while(!_deactivating) @@ -1142,7 +1140,7 @@ IcePack::ActivatorI::waitForShutdown() } void -IcePack::ActivatorI::shutdown() +Activator::shutdown() { IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); // @@ -1157,7 +1155,7 @@ IcePack::ActivatorI::shutdown() } void -IcePack::ActivatorI::destroy() +Activator::destroy() { { IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); @@ -1179,7 +1177,7 @@ IcePack::ActivatorI::destroy() } void -IcePack::ActivatorI::runTerminationListener() +Activator::runTerminationListener() { try { @@ -1198,18 +1196,18 @@ IcePack::ActivatorI::runTerminationListener() } void -IcePack::ActivatorI::deactivateAll() +Activator::deactivateAll() { // // Stop all active processes. // - vector<Process> processes; + map<string, Process> processes; { IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); processes = _processes; } - for(vector<Process>::iterator p = processes.begin(); p != processes.end(); ++p) + for(map<string, Process>::iterator p = processes.begin(); p != processes.end(); ++p) { // // Stop the server. The listener thread should detect the @@ -1218,7 +1216,7 @@ IcePack::ActivatorI::deactivateAll() // try { - p->server->stop(); + p->second.server->stop(); } catch(const ObjectNotExistException&) { @@ -1230,7 +1228,7 @@ IcePack::ActivatorI::deactivateAll() } void -IcePack::ActivatorI::terminationListener() +Activator::terminationListener() { #ifdef _WIN32 while(true) @@ -1243,9 +1241,9 @@ IcePack::ActivatorI::terminationListener() { IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); - for(vector<Process>::iterator p = _processes.begin(); p != _processes.end(); ++p) + for(map<string, Process>::iterator p = _processes.begin(); p != _processes.end(); ++p) { - handles.push_back(p->hnd); + handles.push_back(p->second.hnd); } } @@ -1274,25 +1272,24 @@ IcePack::ActivatorI::terminationListener() } else { - for(vector<Process>::iterator p = _processes.begin(); p != _processes.end(); ++p) + for(map<string, Process>::iterator p = _processes.begin(); p != _processes.end(); ++p) { - if(p->hnd == hnd) + if(p->second.hnd == hnd) { if(_traceLevels->activator > 0) { Ice::Trace out(_traceLevels->logger, _traceLevels->activatorCat); - out << "detected termination of server `" << p->server->description.name << "'"; + out << "detected termination of server `" << p->first << "'"; } try { - p->server->terminated(); + p->second.server->terminated(); } catch(const Ice::LocalException& ex) { Ice::Warning out(_traceLevels->logger); - out << "unexpected exception raised by server `" << p->server->description.name - << "' termination:\n" << ex; + out << "unexpected exception raised by server `" << p->first << "' termination:\n" << ex; } CloseHandle(hnd); @@ -1301,17 +1298,16 @@ IcePack::ActivatorI::terminationListener() // // STDOUT and STDERR should not be closed // - CloseHandle(p->outHandle); + CloseHandle(p->second.outHandle); if(!_redirectErrToOut) { - CloseHandle(p->errHandle); + CloseHandle(p->second.errHandle); } } _processes.erase(p); break; } } - } if(_deactivating && _processes.empty()) @@ -1330,9 +1326,9 @@ IcePack::ActivatorI::terminationListener() { IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); - for(vector<Process>::iterator p = _processes.begin(); p != _processes.end(); ++p) + for(map<string, Process>::iterator p = _processes.begin(); p != _processes.end(); ++p) { - int fd = p->pipeFd; + int fd = p->second.pipeFd; FD_SET(fd, &fdSet); if(maxFd < fd) { @@ -1377,10 +1373,10 @@ IcePack::ActivatorI::terminationListener() } } - vector<Process>::iterator p = _processes.begin(); + map<string, Process>::iterator p = _processes.begin(); while(p != _processes.end()) { - int fd = p->pipeFd; + int fd = p->second.pipeFd; if(!FD_ISSET(fd, &fdSet)) { ++p; @@ -1419,30 +1415,29 @@ IcePack::ActivatorI::terminationListener() if(_traceLevels->activator > 0) { Ice::Trace out(_traceLevels->logger, _traceLevels->activatorCat); - out << "detected termination of server `" << p->server->description.name << "'"; + out << "detected termination of server `" << p->first << "'"; } try { - p->server->terminated(); + p->second.server->terminated(); } catch(const Ice::LocalException& ex) { Ice::Warning out(_traceLevels->logger); - out << "unexpected exception raised by server `" << p->server->description.name - << "' termination:\n" << ex; + out << "unexpected exception raised by server `" << p->first << "' termination:\n" << ex; } - if(p->errFd != p->outFd && p->errFd != STDERR_FILENO) + if(p->second.errFd != p->second.outFd && p->second.errFd != STDERR_FILENO) { - close(p->errFd); + close(p->second.errFd); } - if(p->outFd != STDOUT_FILENO) + if(p->second.outFd != STDOUT_FILENO) { - close(p->outFd); + close(p->second.outFd); } - close(p->pipeFd); - p = _processes.erase(p); + close(p->second.pipeFd); + _processes.erase(p++); // // We are deactivating and there's no more active processes. We can now @@ -1469,7 +1464,7 @@ IcePack::ActivatorI::terminationListener() } void -IcePack::ActivatorI::clearInterrupt() +Activator::clearInterrupt() { #ifdef _WIN32 ResetEvent(_hIntr); @@ -1481,7 +1476,7 @@ IcePack::ActivatorI::clearInterrupt() } void -IcePack::ActivatorI::setInterrupt() +Activator::setInterrupt() { #ifdef _WIN32 SetEvent(_hIntr); diff --git a/cpp/src/IcePack/ActivatorI.h b/cpp/src/IcePack/Activator.h index e12a8d3cb35..3fa8d1bf430 100644 --- a/cpp/src/IcePack/ActivatorI.h +++ b/cpp/src/IcePack/Activator.h @@ -11,7 +11,6 @@ #define ICE_PACK_ACTIVATOR_H #include <IceUtil/Thread.h> -#include <IcePack/Activator.h> #include <IcePack/Internal.h> namespace IcePack @@ -20,20 +19,21 @@ namespace IcePack class TraceLevels; typedef IceUtil::Handle<TraceLevels> TraceLevelsPtr; -class ActivatorI : public Activator, public IceUtil::Monitor< IceUtil::Mutex> +class Activator : public IceUtil::Monitor< IceUtil::Mutex>, public IceUtil::Shared { public: - ActivatorI(const TraceLevelsPtr&, const Ice::PropertiesPtr&); - virtual ~ActivatorI(); + Activator(const TraceLevelsPtr&, const Ice::PropertiesPtr&); + virtual ~Activator(); - virtual bool activate(const ::IcePack::ServerPtr&); - virtual void deactivate(const ::IcePack::ServerPtr&); - virtual void kill(const ::IcePack::ServerPtr&); - virtual void sendSignal(const ::IcePack::ServerPtr&, const std::string&); - virtual void writeMessage(const ::IcePack::ServerPtr&, const std::string&, Ice::Int); + virtual bool activate(const std::string&, const std::string&, const std::string&, const Ice::StringSeq&, + const Ice::StringSeq&, const ServerPrx&); + virtual void deactivate(const std::string&, const Ice::ProcessPrx&); + virtual void kill(const std::string&); + virtual void sendSignal(const std::string&, const std::string&); + virtual void writeMessage(const std::string&, const std::string&, Ice::Int); - virtual Ice::Int getServerPid(const ::IcePack::ServerPtr&); + virtual Ice::Int getServerPid(const std::string&); virtual void start(); virtual void waitForShutdown(); @@ -41,7 +41,7 @@ public: virtual void destroy(); - void sendSignal(const ::IcePack::ServerPtr&, int); + void sendSignal(const std::string&, int); void runTerminationListener(); private: @@ -65,12 +65,12 @@ private: int outFd; int errFd; #endif - ServerPtr server; + ServerPrx server; }; TraceLevelsPtr _traceLevels; Ice::PropertiesPtr _properties; - std::vector<Process> _processes; + std::map<std::string, Process> _processes; bool _deactivating; #ifdef _WIN32 @@ -87,6 +87,7 @@ private: IceUtil::ThreadPtr _thread; }; +typedef IceUtil::Handle<Activator> ActivatorPtr; } diff --git a/cpp/src/IcePack/Activator.ice b/cpp/src/IcePack/Activator.ice deleted file mode 100644 index a0c78c478d1..00000000000 --- a/cpp/src/IcePack/Activator.ice +++ /dev/null @@ -1,100 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#ifndef ICE_PACK_ACTIVATOR_ICE -#define ICE_PACK_ACTIVATOR_ICE - -#include <IcePack/Internal.ice> - -module IcePack -{ - -local interface Activator -{ - /** - * - * Activate a server and returns the pid of the server or 0 if the - * server couldn't be activated. - * - * @param server The server to activate. - * - **/ - bool activate(Server theServer); - - /** - * - * Deactivate a server. - * - **/ - void deactivate(Server theServer); - - /** - * - * Kill a server. - * - **/ - void kill(Server theServer); - - /** - * - * Send signal to server. - * - **/ - void sendSignal(Server theServer, string signal); - - /** - * - * Write message on the server stdout or stderr - * - **/ - void writeMessage(Server theServer, string message, int fd); - - /** - * - * Returns the server pid. - * - **/ - int getServerPid(Server theServer); - - /** - * - * Start the activator. - * - **/ - void start(); - - /** - * - * Wait for the activator to be shutdown. - * - **/ - void waitForShutdown(); - - /** - * - * Shutdown the activator. - * - **/ - void shutdown(); - - /** - * - * Destroy the activator. This cause all active server to be - * stopped. This method returns only once all the servers have - * been deactivated. - * - **/ - void destroy(); - -}; - -}; - -#endif - diff --git a/cpp/src/IcePack/AdapterRegistryI.cpp b/cpp/src/IcePack/AdapterRegistryI.cpp index 9cfcd0e5d69..1f34ee5e6e8 100644 --- a/cpp/src/IcePack/AdapterRegistryI.cpp +++ b/cpp/src/IcePack/AdapterRegistryI.cpp @@ -65,7 +65,7 @@ IcePack::AdapterRegistryI::add(const string& id, const AdapterPrx& adapter, cons } } -void +AdapterPrx IcePack::AdapterRegistryI::remove(const string& id, const Ice::Current&) { Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName); @@ -76,7 +76,8 @@ IcePack::AdapterRegistryI::remove(const string& id, const Ice::Current&) { throw AdapterNotExistException(); } - + + AdapterPrx adapter = AdapterPrx::uncheckedCast(p->second); dict.erase(p); if(_traceLevels->adapterRegistry > 0) @@ -84,6 +85,8 @@ IcePack::AdapterRegistryI::remove(const string& id, const Ice::Current&) Ice::Trace out(_traceLevels->logger, _traceLevels->adapterRegistryCat); out << "removed adapter `" << id << "'"; } + + return adapter; } AdapterPrx diff --git a/cpp/src/IcePack/AdapterRegistryI.h b/cpp/src/IcePack/AdapterRegistryI.h index 40adff7a649..81700c3571b 100644 --- a/cpp/src/IcePack/AdapterRegistryI.h +++ b/cpp/src/IcePack/AdapterRegistryI.h @@ -26,7 +26,7 @@ public: AdapterRegistryI(const Ice::CommunicatorPtr&, const std::string&, const std::string&, const TraceLevelsPtr&); virtual void add(const std::string&, const AdapterPrx&, const ::Ice::Current&); - virtual void remove(const std::string&, const ::Ice::Current&); + virtual AdapterPrx remove(const std::string&, const ::Ice::Current&); virtual AdapterPrx findById(const ::std::string&, const ::Ice::Current&); virtual Ice::StringSeq getAll(const ::Ice::Current&) const; diff --git a/cpp/src/IcePack/AdminI.cpp b/cpp/src/IcePack/AdminI.cpp index 31baa434e16..c43336789d7 100644 --- a/cpp/src/IcePack/AdminI.cpp +++ b/cpp/src/IcePack/AdminI.cpp @@ -9,86 +9,1187 @@ #include <Ice/Ice.h> #include <IcePack/AdminI.h> -#include <IcePack/ApplicationBuilder.h> +#include <IcePack/DescriptorVisitor.h> +#include <IcePack/DescriptorUtil.h> +#include <Ice/LoggerUtil.h> +#include <Ice/TraceUtil.h> using namespace std; using namespace Ice; using namespace IcePack; -IcePack::AdminI::AdminI(const CommunicatorPtr& communicator, const NodeRegistryPtr& nodeRegistry, - const ServerRegistryPtr& serverRegistry, const AdapterRegistryPtr& adapterRegistry, - const ObjectRegistryPtr& objectRegistry) : - _communicator(communicator), +namespace IcePack +{ + +class Deployer : public DescriptorVisitor +{ +public: + + Deployer(const NodeRegistryPtr&, + const ApplicationRegistryPtr&, + const ServerRegistryPtr&, + const AdapterRegistryPtr&, + const ObjectRegistryPtr&, + const Ice::LoggerPtr&); + + Deployer(const Deployer&); + +protected: + + friend class Cleaner; + + void exception(const string&); + void exception(const string&, const Ice::LocalException&); + + const NodeRegistryPtr _nodeRegistry; + const ApplicationRegistryPtr _applicationRegistry; + const ServerRegistryPtr _serverRegistry; + const AdapterRegistryPtr _adapterRegistry; + const ObjectRegistryPtr _objectRegistry; + const Ice::LoggerPtr _logger; +}; + +class Cleaner : public DescriptorVisitor +{ +public: + + Cleaner(const NodeRegistryPtr&, + const ApplicationRegistryPtr&, + const ServerRegistryPtr&, + const AdapterRegistryPtr&, + const ObjectRegistryPtr&, + const Ice::LoggerPtr&); + + Cleaner(const Deployer&); + Cleaner(const Cleaner&); + +protected: + + void exception(const string&); + void exception(const string&, const Ice::LocalException&); + + const NodeRegistryPtr _nodeRegistry; + const ApplicationRegistryPtr _applicationRegistry; + const ServerRegistryPtr _serverRegistry; + const AdapterRegistryPtr _adapterRegistry; + const ObjectRegistryPtr _objectRegistry; + const Ice::LoggerPtr _logger; +}; + +class ApplicationDeployer : public Deployer +{ +public: + + ApplicationDeployer(const NodeRegistryPtr&, + const ApplicationRegistryPtr&, + const ServerRegistryPtr&, + const AdapterRegistryPtr&, + const ObjectRegistryPtr&, + const Ice::LoggerPtr&); + + ApplicationDeployer(const Deployer&); + + void deploy(const ApplicationDescriptorPtr&); + +private: + + virtual bool visitApplicationStart(const ApplicationWrapper&, const ApplicationDescriptorPtr&); + virtual bool visitServerStart(const ServerWrapper&, const ServerDescriptorPtr&); + + ApplicationDescriptorPtr _deployed; +}; + +class ServerDeployer : public Deployer +{ +public: + + ServerDeployer(const NodeRegistryPtr&, + const ApplicationRegistryPtr&, + const ServerRegistryPtr&, + const AdapterRegistryPtr&, + const ObjectRegistryPtr&, + const Ice::LoggerPtr&); + + ServerDeployer(const Deployer&); + + void deploy(const ServerDescriptorPtr&, const string& = string()); + +private: + + virtual bool visitServerStart(const ServerWrapper&, const ServerDescriptorPtr&); + virtual void visitServerEnd(const ServerWrapper&, const ServerDescriptorPtr&); + virtual bool visitServiceStart(const ServiceWrapper&, const ServiceDescriptorPtr&); + virtual void visitDbEnv(const DbEnvWrapper&, const DbEnvDescriptor&); + virtual bool visitAdapterStart(const AdapterWrapper&, const AdapterDescriptor&); + virtual void visitObject(const ObjectWrapper&, const ObjectDescriptor&); + + ServerDescriptorPtr _deployed; + + string _currentNodeName; + NodePrx _currentNode; + ServerPrx _currentServer; + PropertyDescriptorSeq _currentProperties; + string _backup; +}; + +class ApplicationCleaner : public Cleaner +{ +public: + + ApplicationCleaner(const NodeRegistryPtr&, + const ApplicationRegistryPtr&, + const ServerRegistryPtr&, + const AdapterRegistryPtr&, + const ObjectRegistryPtr&, + const Ice::LoggerPtr&); + + ApplicationCleaner(const Deployer&); + + void clean(const ApplicationDescriptorPtr&); + +private: + + virtual void visitApplicationEnd(const ApplicationWrapper&, const ApplicationDescriptorPtr&); + virtual bool visitServerStart(const ServerWrapper&, const ServerDescriptorPtr&); +}; + +class ServerCleaner : public Cleaner +{ +public: + + ServerCleaner(const NodeRegistryPtr&, + const ApplicationRegistryPtr&, + const ServerRegistryPtr&, + const AdapterRegistryPtr&, + const ObjectRegistryPtr&, + const Ice::LoggerPtr&); + + ServerCleaner(const Deployer&); + ServerCleaner(const Cleaner&); + + void clean(const ServerDescriptorPtr&, const string& = string()); + +private: + + virtual bool visitServerStart(const ServerWrapper&, const ServerDescriptorPtr&); + virtual void visitServerEnd(const ServerWrapper&, const ServerDescriptorPtr&); + virtual bool visitServiceStart(const ServiceWrapper&, const ServiceDescriptorPtr&); + virtual bool visitAdapterStart(const AdapterWrapper&, const AdapterDescriptor&); + virtual void visitDbEnv(const DbEnvWrapper&, const DbEnvDescriptor&); + virtual void visitObject(const ObjectWrapper&, const ObjectDescriptor&); + + string _currentNodeName; + ServerPrx _currentServer; + string _backup; +}; + +class ApplicationUpdater : public Deployer +{ +public: + + ApplicationUpdater(const NodeRegistryPtr&, + const ApplicationRegistryPtr&, + const ServerRegistryPtr&, + const AdapterRegistryPtr&, + const ObjectRegistryPtr&, + const Ice::LoggerPtr&); + + ApplicationUpdater(const Deployer&); + + void update(const ApplicationDescriptorPtr&); + +private: + + virtual bool visitApplicationStart(const ApplicationWrapper&, const ApplicationDescriptorPtr&); + virtual void visitApplicationEnd(const ApplicationWrapper&, const ApplicationDescriptorPtr&); + virtual bool visitServerStart(const ServerWrapper&, const ServerDescriptorPtr&); + + ApplicationDescriptorPtr _deployed; + ApplicationDescriptorPtr _added; + ApplicationDescriptorPtr _removed; + map<string, pair<string, string> > _backup; +}; + +} + +Deployer::Deployer(const NodeRegistryPtr& nodeRegistry, + const ApplicationRegistryPtr& applicationRegistry, + const ServerRegistryPtr& serverRegistry, + const AdapterRegistryPtr& adapterRegistry, + const ObjectRegistryPtr& objectRegistry, + const Ice::LoggerPtr& logger) : _nodeRegistry(nodeRegistry), + _applicationRegistry(applicationRegistry), _serverRegistry(serverRegistry), _adapterRegistry(adapterRegistry), - _objectRegistry(objectRegistry) + _objectRegistry(objectRegistry), + _logger(logger) { } -IcePack::AdminI::~AdminI() +Deployer::Deployer(const Deployer& deployer) : + _nodeRegistry(deployer._nodeRegistry), + _applicationRegistry(deployer._applicationRegistry), + _serverRegistry(deployer._serverRegistry), + _adapterRegistry(deployer._adapterRegistry), + _objectRegistry(deployer._objectRegistry), + _logger(deployer._logger) { } void -IcePack::AdminI::addApplication(const string& descriptor, const StringSeq& targets, const Current&) +Deployer::exception(const string& msg) { - ApplicationBuilder builder(_communicator, _nodeRegistry, targets); - builder.parse(descriptor); - builder.execute(); + DeploymentException ex; + ex.reason = msg; + throw ex; } void -IcePack::AdminI::removeApplication(const string& descriptor, const Current&) +Deployer::exception(const string& msg, const Ice::LocalException& ex) +{ + ostringstream os; + os << msg << "\nException: " << ex; + DeploymentException e; + e.reason = os.str(); + throw e; +} + +Cleaner::Cleaner(const NodeRegistryPtr& nodeRegistry, + const ApplicationRegistryPtr& applicationRegistry, + const ServerRegistryPtr& serverRegistry, + const AdapterRegistryPtr& adapterRegistry, + const ObjectRegistryPtr& objectRegistry, + const Ice::LoggerPtr& logger) : + _nodeRegistry(nodeRegistry), + _applicationRegistry(applicationRegistry), + _serverRegistry(serverRegistry), + _adapterRegistry(adapterRegistry), + _objectRegistry(objectRegistry), + _logger(logger) +{ +} + +Cleaner::Cleaner(const Deployer& deployer) : + _nodeRegistry(deployer._nodeRegistry), + _applicationRegistry(deployer._applicationRegistry), + _serverRegistry(deployer._serverRegistry), + _adapterRegistry(deployer._adapterRegistry), + _objectRegistry(deployer._objectRegistry), + _logger(deployer._logger) +{ +} + +Cleaner::Cleaner(const Cleaner& cleaner) : + _nodeRegistry(cleaner._nodeRegistry), + _applicationRegistry(cleaner._applicationRegistry), + _serverRegistry(cleaner._serverRegistry), + _adapterRegistry(cleaner._adapterRegistry), + _objectRegistry(cleaner._objectRegistry), + _logger(cleaner._logger) { - ApplicationBuilder builder(_communicator, _nodeRegistry, StringSeq()); - builder.parse(descriptor); - builder.undo(); } void -IcePack::AdminI::addServer(const string& node, const string& name, const string& path, const string& ldpath, - const string& descriptor, const StringSeq& targets, const Current&) +Cleaner::exception(const string& msg) { - ApplicationBuilder builder(_communicator, _nodeRegistry, targets); - builder.addServer(name, node, descriptor, path, ldpath, ""); - builder.execute(); + Ice::Warning out(_logger); + out << msg; } void -IcePack::AdminI::removeServer(const string& name, const Current&) +Cleaner::exception(const string& msg, const Ice::LocalException& ex) +{ + Ice::Warning out(_logger); + out << msg << "\nException: " << ex; +} + +ApplicationDeployer::ApplicationDeployer(const NodeRegistryPtr& nodeRegistry, + const ApplicationRegistryPtr& applicationRegistry, + const ServerRegistryPtr& serverRegistry, + const AdapterRegistryPtr& adapterRegistry, + const ObjectRegistryPtr& objectRegistry, + const Ice::LoggerPtr& logger) : + Deployer(nodeRegistry, applicationRegistry, serverRegistry, adapterRegistry, objectRegistry, logger) +{ +} + +ApplicationDeployer::ApplicationDeployer(const Deployer& deployer) : + Deployer(deployer) +{ +} + +void +ApplicationDeployer::deploy(const ApplicationDescriptorPtr& descriptor) +{ + try + { + ApplicationWrapper(descriptor).visit(*this); + } + catch(const DeploymentException&) + { + if(_deployed) + { + ApplicationCleaner cleaner(*this); + cleaner.clean(_deployed); + } + throw; + } +} + +bool +ApplicationDeployer::visitApplicationStart(const ApplicationWrapper&, const ApplicationDescriptorPtr& application) { - ServerPrx server = _serverRegistry->findByName(name); try { - ServerDescription desc = server->getServerDescription(); + _applicationRegistry->add(application->name); + _deployed = new ApplicationDescriptor(); + _deployed->name = application->name; + } + catch(const ApplicationExistsException&) + { + exception("application `" + application->name + "' already exists"); + } + return true; +} + +bool +ApplicationDeployer::visitServerStart(const ServerWrapper&, const ServerDescriptorPtr& server) +{ + ServerDeployer deployer(*this); + deployer.deploy(server); + _deployed->servers.push_back(server); + return false; +} + +ApplicationUpdater::ApplicationUpdater(const NodeRegistryPtr& nodeRegistry, + const ApplicationRegistryPtr& applicationRegistry, + const ServerRegistryPtr& serverRegistry, + const AdapterRegistryPtr& adapterRegistry, + const ObjectRegistryPtr& objectRegistry, + const Ice::LoggerPtr& logger) : + Deployer(nodeRegistry, applicationRegistry, serverRegistry, adapterRegistry, objectRegistry, logger) +{ +} + +ApplicationUpdater::ApplicationUpdater(const Deployer& deployer) : + Deployer(deployer) +{ +} + +void +ApplicationUpdater::update(const ApplicationDescriptorPtr& descriptor) +{ + try + { + ApplicationWrapper(descriptor).visit(*this); + } + catch(const DeploymentException&) + { + if(_added) + { + for(ServerDescriptorSeq::const_iterator p = _added->servers.begin(); p != _added->servers.end(); ++p) + { + // + // If there's a backup directory for this server and it's on the same node we pass + // the backup directory to backup the databases. + // + if(_backup[(*p)->name].first == (*p)->node) + { + ServerCleaner(*this).clean(*p, _backup[(*p)->name].second); + } + else + { + ServerCleaner(*this).clean(*p); + } + } + } + if(_removed) + { + for(ServerDescriptorSeq::const_iterator p = _removed->servers.begin(); p != _removed->servers.end(); ++p) + { + try + { + ServerDeployer(*this).deploy(*p, _backup[(*p)->name].second); + } + catch(DeploymentException& ex) + { + cerr << "failed to add back updated server:\n" << ex << endl; + } + } + } + throw; + } + + // + // Destroy all the temporary backup directories. + // + for(map<string, pair<string, string> >::const_iterator p = _backup.begin(); p != _backup.end(); ++p) + { + if(!p->second.first.empty()) + { + _nodeRegistry->findByName(p->second.first)->destroyTmpDir(p->second.second); + } + } +} + +bool +ApplicationUpdater::visitApplicationStart(const ApplicationWrapper&, const ApplicationDescriptorPtr& application) +{ + try + { + _deployed = _applicationRegistry->getDescriptor(application->name); + _added = new ApplicationDescriptor(); + _removed = new ApplicationDescriptor(); + } + catch(const ApplicationNotExistException&) + { + exception("application `" + application->name + "' doesn't exists"); + } + return true; +} + +void +ApplicationUpdater::visitApplicationEnd(const ApplicationWrapper&, const ApplicationDescriptorPtr& application) +{ + // + // Remove servers which don't exist anymore. + // + for(ServerDescriptorSeq::const_iterator p = _deployed->servers.begin(); p != _deployed->servers.end(); ++p) + { + bool found = false; + for(ServerDescriptorSeq::const_iterator q = application->servers.begin(); q != application->servers.end(); ++q) + { + if((*p)->name == (*q)->name) + { + found = true; + break; + } + } + if(!found) + { + ServerCleaner(*this).clean(*p); + } + } +} + +bool +ApplicationUpdater::visitServerStart(const ServerWrapper&, const ServerDescriptorPtr& server) +{ + for(ServerDescriptorSeq::const_iterator p = _deployed->servers.begin(); p != _deployed->servers.end(); ++p) + { + if((*p)->name == server->name) + { + if(equal(*p, server)) + { + // + // Nothing to do, the descriptors are the same. + // + return false; + } + + _backup[server->name].second = _nodeRegistry->findByName((*p)->node)->createTmpDir(); + _backup[server->name].first = (*p)->node; + + ServerCleaner(*this).clean(*p, _backup[server->name].second); + _removed->servers.push_back(*p); + + if(server->node == ((*p)->node)) + { + ServerDeployer(*this).deploy(server, _backup[server->name].second); + } + else + { + ServerDeployer(*this).deploy(server); + } + + _added->servers.push_back(server); + return false; + } + } + + ServerDeployer(*this).deploy(server, _backup[server->name].second); + _added->servers.push_back(server); + return false; +} + +ServerDeployer::ServerDeployer(const NodeRegistryPtr& nodeRegistry, + const ApplicationRegistryPtr& applicationRegistry, + const ServerRegistryPtr& serverRegistry, + const AdapterRegistryPtr& adapterRegistry, + const ObjectRegistryPtr& objectRegistry, + const Ice::LoggerPtr& logger) : + Deployer(nodeRegistry, applicationRegistry, serverRegistry, adapterRegistry, objectRegistry, logger) +{ +} + +ServerDeployer::ServerDeployer(const Deployer& deployer) : + Deployer(deployer) +{ +} + +void +ServerDeployer::deploy(const ServerDescriptorPtr& descriptor, const string& backup) +{ + _backup = backup; + try + { + ServerWrapper(descriptor).visit(*this); + } + catch(const DeploymentException&) + { + if(_deployed) + { + ServerCleaner cleaner(*this); + cleaner.clean(_deployed); + } + throw; + } + +} + +bool +ServerDeployer::visitServerStart(const ServerWrapper&, const ServerDescriptorPtr& server) +{ + try + { + try + { + _currentNodeName = server->node; + _currentNode = _nodeRegistry->findByName(server->node); + _currentServer = _currentNode->createServer(server->name, server); + _currentProperties.clear(); + PropertyDescriptor prop; + prop.name = "# Server configuration"; + _currentProperties.push_back(prop); + prop.name = "Ice.ProgramName"; + prop.value = server->name; + _currentProperties.push_back(prop); + copy(server->properties.begin(), server->properties.end(), back_inserter(_currentProperties)); + _serverRegistry->add(server->name, _currentServer, server); + + if(JavaIceBoxDescriptorPtr::dynamicCast(server)) + { + _deployed = new JavaIceBoxDescriptor(); + } + else if(CppIceBoxDescriptorPtr::dynamicCast(server)) + { + _deployed = new CppIceBoxDescriptor(); + } + else if(JavaServerDescriptorPtr::dynamicCast(server)) + { + _deployed = new JavaServerDescriptor(); + } + else + { + _deployed = new ServerDescriptor(); + } + _deployed->node = server->node; + _deployed->name = server->name; + + if(!server->application.empty()) + { + _applicationRegistry->registerServer(server->application, server->name); + _deployed->application = server->application; + } + } + catch(const ServerExistsException&) + { + _currentServer->destroy(); + _currentServer = 0; + exception("server `" + server->name + "' already exists"); + } + catch(const ApplicationNotExistException&) + { + exception("application `" + server->application + "' doesn't exist"); + } + catch(const NodeNotExistException&) + { + exception("couldn't find node `" + server->node + "'"); + } + + _currentServer->setActivationMode(server->activation); + _currentServer->setExePath(server->exe); + _currentServer->setPwd(server->pwd); + _currentServer->setEnvs(server->envs); + } + catch(const Ice::LocalException& ex) + { + exception("couldn't contact node `" + server->node + "'", ex); + } + + return true; +} + +void +ServerDeployer::visitServerEnd(const ServerWrapper&, const ServerDescriptorPtr& server) +{ + assert(_currentServer); + + try + { + Ice::StringSeq options; + + JavaServerDescriptorPtr javaDesc = JavaServerDescriptorPtr::dynamicCast(server); + if(javaDesc) + { + copy(javaDesc->jvmOptions.begin(), javaDesc->jvmOptions.end(), back_inserter(options)); + options.push_back("-ea"); + options.push_back(javaDesc->className); + copy(javaDesc->options.begin(), javaDesc->options.end(), back_inserter(options)); + } + else + { + options = server->options; + } + + CppIceBoxDescriptorPtr cppIceBox = CppIceBoxDescriptorPtr::dynamicCast(server); + JavaIceBoxDescriptorPtr javaIceBox = JavaIceBoxDescriptorPtr::dynamicCast(server); + + const ServiceDescriptorSeq& services = + cppIceBox ? cppIceBox->services : (javaIceBox ? javaIceBox->services : ServiceDescriptorSeq()); + + if(!services.empty()) + { + PropertyDescriptor prop; + prop.name = "IceBox.LoadOrder"; + for(ServiceDescriptorSeq::const_iterator p = services.begin(); p != services.end(); ++p) + { + prop.value += (*p)->name + " "; + } + _currentProperties.push_back(prop); + } + + if(!_currentProperties.empty()) + { + string path = _currentServer->addConfigFile("config", _currentProperties); + options.push_back("--Ice.Config=" + path); + + _deployed->properties = _currentProperties; + } - ApplicationBuilder builder(_communicator, _nodeRegistry, desc.targets); - builder.addServer(name, desc.node, desc.descriptor, desc.path, "", ""); - builder.undo(); + _currentServer->setOptions(options); + } + catch(const Ice::LocalException& ex) + { + exception("couldn't contact node `" + _currentNodeName + "'", ex); + } +} + +bool +ServerDeployer::visitServiceStart(const ServiceWrapper&, const ServiceDescriptorPtr& service) +{ + assert(_currentServer); + + try + { + string path = _currentServer->addConfigFile("config_" + service->name, service->properties); + + ServiceDescriptorPtr svc = new ServiceDescriptor(); + svc->name = service->name; + svc->properties = service->properties; + if(JavaIceBoxDescriptorPtr::dynamicCast(_deployed)) + { + JavaIceBoxDescriptorPtr::dynamicCast(_deployed)->services.push_back(svc); + } + else + { + CppIceBoxDescriptorPtr::dynamicCast(_deployed)->services.push_back(svc); + } + + PropertyDescriptor prop; + _currentProperties.push_back(prop); + prop.name = "#"; + _currentProperties.push_back(prop); + prop.name = "# Service " + service->name; + _currentProperties.push_back(prop); + prop.name = "#"; + _currentProperties.push_back(prop); + prop.name = "IceBox.Service." + service->name; + prop.value = service->entry + " --Ice.Config=" + path; + _currentProperties.push_back(prop); + } + catch(const Ice::LocalException& ex) + { + exception("couldn't contact node `" + _currentNodeName + "'", ex); + } + + return true; +} + +void +ServerDeployer::visitDbEnv(const DbEnvWrapper&, const DbEnvDescriptor& dbEnv) +{ + assert(_currentServer); + + try + { + string path = _currentServer->addDbEnv(dbEnv, _backup); + _deployed->dbEnvs.push_back(dbEnv); + + PropertyDescriptor prop; + _currentProperties.push_back(prop); + prop.name = "# DbEnv " + dbEnv.name; + _currentProperties.push_back(prop); + prop.name = "Freeze.DbEnv." + dbEnv.name + ".DbHome"; + prop.value = path; + _currentProperties.push_back(prop); + } + catch(const Ice::LocalException& ex) + { + exception("couldn't contact node `" + _currentNodeName + "'", ex); + } +} + +bool +ServerDeployer::visitAdapterStart(const AdapterWrapper&, const AdapterDescriptor& adapter) +{ + assert(_currentServer); + + ServerAdapterPrx serverAdapter; + try + { + serverAdapter = _currentNode->createServerAdapter(_currentServer, adapter.id); + _adapterRegistry->add(adapter.id, serverAdapter); + _currentServer->addAdapter(serverAdapter, adapter.registerProcess); + + AdapterDescriptor adpt; + adpt.id = adapter.id; + adpt.name = adapter.name; + adpt.endpoints = adapter.endpoints; + adpt.registerProcess = adapter.registerProcess; + _deployed->adapters.push_back(adpt); + + PropertyDescriptor prop; + _currentProperties.push_back(prop); + prop.name = "# Adapter " + adapter.name; + _currentProperties.push_back(prop); + prop.name = adapter.name + ".Endpoints"; + prop.value = adapter.endpoints; + _currentProperties.push_back(prop); + prop.name = adapter.name + ".AdapterId"; + prop.value = adapter.id; + _currentProperties.push_back(prop); + if(adapter.registerProcess) + { + prop.name = adapter.name + ".RegisterProcess"; + prop.value = "1"; + _currentProperties.push_back(prop); + } + } + catch(const AdapterExistsException&) + { + serverAdapter->destroy(); + exception("adapter `" + adapter.id + "' already exists"); + } + catch(const Ice::LocalException& ex) + { + exception("couldn't contact node `" + _currentNodeName + "'", ex); + } + + return true; +} + +void +ServerDeployer::visitObject(const ObjectWrapper&, const ObjectDescriptor& object) +{ + assert(_currentServer); + + try + { + _objectRegistry->add(object); + _deployed->adapters.back().objects.push_back(object); + } + catch(const ObjectExistsException&) + { + exception("object `" + Ice::identityToString(object.proxy->ice_getIdentity()) + "' already exists"); + } +} + +ApplicationCleaner::ApplicationCleaner(const NodeRegistryPtr& nodeRegistry, + const ApplicationRegistryPtr& applicationRegistry, + const ServerRegistryPtr& serverRegistry, + const AdapterRegistryPtr& adapterRegistry, + const ObjectRegistryPtr& objectRegistry, + const Ice::LoggerPtr& logger) : + Cleaner(nodeRegistry, applicationRegistry, serverRegistry, adapterRegistry, objectRegistry, logger) +{ +} + +ApplicationCleaner::ApplicationCleaner(const Deployer& deployer) : + Cleaner(deployer) +{ +} + +void +ApplicationCleaner::clean(const ApplicationDescriptorPtr& descriptor) +{ + ApplicationWrapper(descriptor).visit(*this); +} + +void +ApplicationCleaner::visitApplicationEnd(const ApplicationWrapper&, const ApplicationDescriptorPtr& application) +{ + try + { + _applicationRegistry->remove(application->name); + } + catch(const ApplicationNotExistException&) + { + exception("application `" + application->name + " doesn't exist"); + } +} + +bool +ApplicationCleaner::visitServerStart(const ServerWrapper&, const ServerDescriptorPtr& server) +{ + ServerCleaner cleaner(*this); + cleaner.clean(server); + return false; +} + +ServerCleaner::ServerCleaner(const NodeRegistryPtr& nodeRegistry, + const ApplicationRegistryPtr& applicationRegistry, + const ServerRegistryPtr& serverRegistry, + const AdapterRegistryPtr& adapterRegistry, + const ObjectRegistryPtr& objectRegistry, + const Ice::LoggerPtr& logger) : + Cleaner(nodeRegistry, applicationRegistry, serverRegistry, adapterRegistry, objectRegistry, logger) +{ +} + +ServerCleaner::ServerCleaner(const Deployer& deployer) : + Cleaner(deployer) +{ +} + +ServerCleaner::ServerCleaner(const Cleaner& cleaner) : + Cleaner(cleaner) +{ +} + +void +ServerCleaner::clean(const ServerDescriptorPtr& descriptor, const string& backup) +{ + _backup = backup; + ServerWrapper(descriptor).visit(*this); +} + +bool +ServerCleaner::visitServerStart(const ServerWrapper&, const ServerDescriptorPtr& server) +{ + _currentNodeName = server->node; + + try + { + _currentServer = _serverRegistry->remove(server->name); + _currentServer->setActivationMode(Manual); + _currentServer->stop(); + } + catch(const ServerNotExistException&) + { + exception("server `" + server->name + "' doesn't exist"); } catch(const Ice::ObjectNotExistException&) { - throw ServerNotExistException(); + _currentServer = 0; } - catch(const Ice::LocalException&) + catch(const Ice::LocalException& ex) { - throw NodeUnreachableException(); + exception("couldn't contact node `" + server->node + "'", ex); } + + try + { + if(!server->application.empty()) + { + _applicationRegistry->unregisterServer(server->application, server->name); + } + } + catch(const ApplicationNotExistException&) + { + exception("application `" + server->application + "' doesn't exist"); + } + + return true; } -ServerDescription -IcePack::AdminI::getServerDescription(const string& name, const Current&) const +void +ServerCleaner::visitServerEnd(const ServerWrapper&, const ServerDescriptorPtr& server) { - ServerPrx server = _serverRegistry->findByName(name); + if(_currentServer) + { + try + { + _currentServer->removeConfigFile("config"); + _currentServer->destroy(); + } + catch(const Ice::ObjectNotExistException&) + { + } + catch(const Ice::LocalException& ex) + { + exception("couldn't contact node `" + _currentNodeName + "'", ex); + } + } +} + +bool +ServerCleaner::visitServiceStart(const ServiceWrapper&, const ServiceDescriptorPtr& service) +{ + if(!_currentServer) + { + return true; + } + + try + { + _currentServer->removeConfigFile("config_" + service->name); + } + catch(const Ice::LocalException& ex) + { + exception("couldn't contact node `" + _currentNodeName + "'", ex); + } + + return true; +} + +bool +ServerCleaner::visitAdapterStart(const AdapterWrapper&, const AdapterDescriptor& adapter) +{ + AdapterPrx adpt; try { - return server->getServerDescription(); + adpt = _adapterRegistry->remove(adapter.id); + adpt->destroy(); + } + catch(const AdapterNotExistException&) + { + exception("adapter `" + adapter.id + "' doesn't exist"); } catch(const Ice::ObjectNotExistException&) { - throw ServerNotExistException(); } + catch(const Ice::LocalException& ex) + { + exception("couldn't contact node `" + _currentNodeName + "'", ex); + } + + if(_currentServer) + { + try + { + _currentServer->removeAdapter(ServerAdapterPrx::uncheckedCast(adpt)); + } + catch(const Ice::LocalException& ex) + { + exception("couldn't contact node `" + _currentNodeName + "'", ex); + } + } + + return true; +} + +void +ServerCleaner::visitDbEnv(const DbEnvWrapper&, const DbEnvDescriptor& dbEnv) +{ + if(_currentServer) + { + try + { + _currentServer->removeDbEnv(dbEnv, _backup); + } + catch(const Ice::LocalException& ex) + { + exception("couldn't contact node `" + _currentNodeName + "'", ex); + } + } +} + +void +ServerCleaner::visitObject(const ObjectWrapper&, const ObjectDescriptor& object) +{ + try + { + _objectRegistry->remove(object.proxy); + } + catch(const ObjectNotExistException&) + { + exception("object `" + Ice::identityToString(object.proxy->ice_getIdentity()) + "' doesn't exist"); + } +} + +IcePack::AdminI::AdminI(const CommunicatorPtr& communicator, const NodeRegistryPtr& nodeRegistry, + const ApplicationRegistryPtr& applicationRegistry, const ServerRegistryPtr& serverRegistry, + const AdapterRegistryPtr& adapterRegistry, const ObjectRegistryPtr& objectRegistry) : + _communicator(communicator), + _nodeRegistry(nodeRegistry), + _applicationRegistry(applicationRegistry), + _serverRegistry(serverRegistry), + _adapterRegistry(adapterRegistry), + _objectRegistry(objectRegistry) +{ +} + +IcePack::AdminI::~AdminI() +{ +} + +void +IcePack::AdminI::addApplication(const ApplicationDescriptorPtr& descriptor, const Current&) +{ + ApplicationDeployer(_nodeRegistry, + _applicationRegistry, + _serverRegistry, + _adapterRegistry, + _objectRegistry, + _communicator->getLogger()).deploy(descriptor); +} + +void +IcePack::AdminI::updateApplication(const ApplicationDescriptorPtr& descriptor, const Current&) +{ + ApplicationUpdater(_nodeRegistry, + _applicationRegistry, + _serverRegistry, + _adapterRegistry, + _objectRegistry, + _communicator->getLogger()).update(descriptor); +} + +void +IcePack::AdminI::removeApplication(const string& name, const Current&) +{ + ApplicationCleaner(_nodeRegistry, + _applicationRegistry, + _serverRegistry, + _adapterRegistry, + _objectRegistry, + _communicator->getLogger()).clean(_applicationRegistry->getDescriptor(name)); +} + +ApplicationDescriptorPtr +IcePack::AdminI::getApplicationDescriptor(const string& name, const Current&) const +{ + return _applicationRegistry->getDescriptor(name); +} + +Ice::StringSeq +IcePack::AdminI::getAllApplicationNames(const Current&) const +{ + return _applicationRegistry->getAll(); +} + +void +IcePack::AdminI::addServer(const ServerDescriptorPtr& server, const Current&) +{ + if(!server->application.empty()) + { + DeploymentException ex; + ex.reason = "You need to update the descriptor of the application `" + server->application + "'" + + "to add this server."; + throw ex; + } + + ServerDeployer(_nodeRegistry, + _applicationRegistry, + _serverRegistry, + _adapterRegistry, + _objectRegistry, + _communicator->getLogger()).deploy(server); +} + +void +IcePack::AdminI::updateServer(const ServerDescriptorPtr& server, const Current&) +{ + ServerDescriptorPtr orig = _serverRegistry->getDescriptor(server->name); + if(!orig->application.empty()) + { + DeploymentException ex; + ex.reason = "You need to update the descriptor of the application `" + orig->application + "'" + + "to add this server."; + throw ex; + } + + if(!equal(orig, server)) + { + string dir = _nodeRegistry->findByName(orig->node)->createTmpDir(); + + ServerCleaner(_nodeRegistry, + _applicationRegistry, + _serverRegistry, + _adapterRegistry, + _objectRegistry, + _communicator->getLogger()).clean(orig, dir); + + try + { + if(server->node == orig->node) + { + ServerDeployer(_nodeRegistry, + _applicationRegistry, + _serverRegistry, + _adapterRegistry, + _objectRegistry, + _communicator->getLogger()).deploy(server, dir); + } + else + { + ServerDeployer(_nodeRegistry, + _applicationRegistry, + _serverRegistry, + _adapterRegistry, + _objectRegistry, + _communicator->getLogger()).deploy(server); + } + } + catch(const DeploymentException&) + { + try + { + ServerDeployer(_nodeRegistry, + _applicationRegistry, + _serverRegistry, + _adapterRegistry, + _objectRegistry, + _communicator->getLogger()).deploy(orig, dir); + } + catch(DeploymentException& ex) + { + DeploymentException e; + e.reason = "Failed to update and rollback original application: " + ex.reason; + throw e; + } + } + + _nodeRegistry->findByName(orig->node)->destroyTmpDir(dir); + } +} + +void +IcePack::AdminI::removeServer(const string& name, const Current&) +{ + ServerDescriptorPtr server = _serverRegistry->getDescriptor(name); + if(!server->application.empty()) + { + DeploymentException ex; + ex.reason = "You need to update the descriptor of the application `" + server->application + "'" + + " to remove this server."; + throw ex; + } + + ServerCleaner(_nodeRegistry, + _applicationRegistry, + _serverRegistry, + _adapterRegistry, + _objectRegistry, + _communicator->getLogger()).clean(server); +} + +ServerDescriptorPtr +IcePack::AdminI::getServerDescriptor(const string& name, const Current&) const +{ + return _serverRegistry->getDescriptor(name); } ServerState @@ -269,7 +1370,7 @@ IcePack::AdminI::getAllAdapterIds(const Current&) const void IcePack::AdminI::addObject(const Ice::ObjectPrx& proxy, const ::Ice::Current& current) const { - ObjectDescription desc; + ObjectDescriptor desc; desc.proxy = proxy; try @@ -278,9 +1379,8 @@ IcePack::AdminI::addObject(const Ice::ObjectPrx& proxy, const ::Ice::Current& cu } catch(const Ice::LocalException&) { - ObjectDeploymentException ex; + DeploymentException ex; ex.reason = "Couldn't invoke on the object to get its interface."; - ex.proxy = proxy; throw ex; } } @@ -288,7 +1388,7 @@ IcePack::AdminI::addObject(const Ice::ObjectPrx& proxy, const ::Ice::Current& cu void IcePack::AdminI::addObjectWithType(const Ice::ObjectPrx& proxy, const string& type, const ::Ice::Current&) const { - ObjectDescription desc; + ObjectDescriptor desc; desc.proxy = proxy; desc.type = type; _objectRegistry->add(desc); @@ -337,6 +1437,29 @@ IcePack::AdminI::shutdownNode(const string& name, const Current&) } } +void +IcePack::AdminI::removeNode(const string& name, const Current&) +{ + // + // Remove the node servers. + // + ServerDescriptorSeq servers = _serverRegistry->getAllDescriptorsOnNode(name); + for(ServerDescriptorSeq::const_iterator p = servers.begin(); p != servers.end(); ++p) + { + ServerCleaner(_nodeRegistry, + _applicationRegistry, + _serverRegistry, + _adapterRegistry, + _objectRegistry, + _communicator->getLogger()).clean(*p); + } + + // + // Remove the node. + // + _nodeRegistry->remove(name); +} + StringSeq IcePack::AdminI::getAllNodeNames(const Current&) const { diff --git a/cpp/src/IcePack/AdminI.h b/cpp/src/IcePack/AdminI.h index b3a095b73ee..bf501f549a2 100644 --- a/cpp/src/IcePack/AdminI.h +++ b/cpp/src/IcePack/AdminI.h @@ -19,19 +19,22 @@ class AdminI : public Admin, public IceUtil::Mutex { public: - AdminI(const Ice::CommunicatorPtr&, const NodeRegistryPtr&, const ServerRegistryPtr&, const AdapterRegistryPtr&, - const ObjectRegistryPtr&); + AdminI(const Ice::CommunicatorPtr&, const NodeRegistryPtr&, const ApplicationRegistryPtr&, + const ServerRegistryPtr&, const AdapterRegistryPtr&, const ObjectRegistryPtr&); virtual ~AdminI(); - virtual void addApplication(const std::string&, const Ice::StringSeq&, const Ice::Current& = Ice::Current()); - virtual void removeApplication(const std::string&, const Ice::Current& = Ice::Current()); + virtual void addApplication(const ApplicationDescriptorPtr&, const Ice::Current&); + virtual void updateApplication(const ApplicationDescriptorPtr&, const Ice::Current&); + virtual void removeApplication(const std::string&, const Ice::Current&); + virtual ApplicationDescriptorPtr getApplicationDescriptor(const ::std::string&, const Ice::Current&) const; + virtual Ice::StringSeq getAllApplicationNames(const Ice::Current&) const; - virtual void addServer(const std::string&, const std::string&, const std::string&, const std::string&, - const std::string&, const Ice::StringSeq&, const Ice::Current& = Ice::Current()); + virtual void addServer(const ServerDescriptorPtr&, const Ice::Current&); + virtual void updateServer(const ServerDescriptorPtr&, const Ice::Current&); virtual void removeServer(const ::std::string&, const Ice::Current&); + virtual ServerDescriptorPtr getServerDescriptor(const ::std::string&, const Ice::Current&) const; - virtual ServerDescription getServerDescription(const ::std::string&, const Ice::Current&) const; - virtual ServerState getServerState(const ::std::string&, const Ice::Current& = Ice::Current()) const; + virtual ServerState getServerState(const ::std::string&, const Ice::Current&) const; virtual Ice::Int getServerPid(const ::std::string&, const Ice::Current&) const; virtual bool startServer(const ::std::string&, const Ice::Current&); virtual void stopServer(const ::std::string&, const Ice::Current&); @@ -50,6 +53,7 @@ public: virtual bool pingNode(const std::string&, const Ice::Current&) const; virtual void shutdownNode(const std::string&, const Ice::Current&); + virtual void removeNode(const std::string&, const Ice::Current&); virtual Ice::StringSeq getAllNodeNames(const ::Ice::Current&) const; virtual void shutdown(const Ice::Current&); @@ -58,6 +62,7 @@ private: Ice::CommunicatorPtr _communicator; NodeRegistryPtr _nodeRegistry; + ApplicationRegistryPtr _applicationRegistry; ServerRegistryPtr _serverRegistry; AdapterRegistryPtr _adapterRegistry; ObjectRegistryPtr _objectRegistry; diff --git a/cpp/src/IcePack/ApplicationBuilder.cpp b/cpp/src/IcePack/ApplicationBuilder.cpp deleted file mode 100644 index 2cdd9fe4630..00000000000 --- a/cpp/src/IcePack/ApplicationBuilder.cpp +++ /dev/null @@ -1,261 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#include <IcePack/ApplicationBuilder.h> - -using namespace std; -using namespace IcePack; - -namespace IcePack -{ - -class AddServer : public Task -{ -public: - - AddServer(const ServerDeployerPrx& deployer, const string& node, const string& name, const string& descriptor, - const string& binpath, const string& libpath, const Ice::StringSeq& targets) : - _deployer(deployer), - _node(node), - _name(name), - _descriptor(descriptor), - _binpath(binpath), - _libpath(libpath), - _targets(targets) - { - } - - virtual void - execute() - { - try - { - _deployer->add(_name, _descriptor, _binpath, _libpath, _targets); - } - catch(const Ice::LocalException& lex) - { - ostringstream os; - os << "couldn't contact the node:\n" << lex; - - ServerDeploymentException ex; - ex.server = _name; - ex.reason = os.str(); - ex.component = _node + "." + _name; - throw ex; - } - } - - virtual void - undo() - { - try - { - _deployer->remove(_name); - } - catch(const ServerNotExistException& lex) - { - ostringstream os; - os << "couldn't remove server from the node:\n" << lex; - - ServerDeploymentException ex; - ex.server = _name; - ex.reason = os.str(); - ex.component = _node + "." + _name; - throw ex; - } - catch(const Ice::LocalException& lex) - { - ostringstream os; - os << "couldn't contact the node:\n" << lex; - - ServerDeploymentException ex; - ex.server = _name; - ex.reason = os.str(); - ex.component = _node + "." + _name; - throw ex; - } - } - -private: - - ServerDeployerPrx _deployer; - string _node; - string _name; - string _descriptor; - string _binpath; - string _libpath; - Ice::StringSeq _targets; -}; - -class ApplicationHandler : public ComponentHandler -{ -public: - - ApplicationHandler(ApplicationBuilder&); - - virtual void startElement(const string&, const IceXML::Attributes&, int, int); - virtual void endElement(const string&, int, int); - -private: - - string _currentNode; - string _savedBaseDir; - - ApplicationBuilder& _builder; -}; - -} - -IcePack::ApplicationHandler::ApplicationHandler(ApplicationBuilder& builder) : - ComponentHandler(builder), - _builder(builder) -{ -} - -void -IcePack::ApplicationHandler::startElement(const string& name, const IceXML::Attributes& attrs, int line, int column) -{ - ComponentHandler::startElement(name, attrs, line, column); - if(!isCurrentTargetDeployable()) - { - return; - } - - if(name == "application") - { - string basedir = getAttributeValueWithDefault(attrs, "basedir", ""); - if(!basedir.empty()) - { - _builder.overrideBaseDir(basedir); - } - } - else if(name == "node") - { - if(!_currentNode.empty()) - { - ostringstream ostr; - ostr << "line " << line << ": node element enclosed in a node element is not allowed"; - throw IceXML::ParserException(__FILE__, __LINE__, ostr.str()); - } - _currentNode = getAttributeValue(attrs, "name"); - - // - // Set the current base directory with the one defined in the - // node element or nothing if it's not defined. Relative path - // defined inside the scope of the node element, will be - // relative to this base directory. If this base directory is - // empty, these path will relative to the working directory of - // the icepacknode process. - // - _savedBaseDir = _builder.substitute("${basedir}"); - _builder.setBaseDir(getAttributeValueWithDefault(attrs, "basedir", "")); - } - else if(name == "server") - { - if(_currentNode.empty()) - { - ostringstream ostr; - ostr << "line " << line << ": server element is not allowed outside the scope of a node element"; - throw IceXML::ParserException(__FILE__, __LINE__, ostr.str()); - } - - string serverName = getAttributeValue(attrs, "name"); - string descriptor = _builder.toLocation(getAttributeValue(attrs, "descriptor")); - string binpath = _builder.toLocation(getAttributeValueWithDefault(attrs, "binpath", "")); - string libpath = getAttributeValueWithDefault(attrs, "libpath", ""); - string targets = getAttributeValueWithDefault(attrs, "targets", ""); - _builder.addServer(serverName, _currentNode, descriptor, binpath, libpath, targets); - } -} - -void -IcePack::ApplicationHandler::endElement(const string& name, int line, int column) -{ - if(isCurrentTargetDeployable()) - { - if(name == "node") - { - _currentNode = ""; - _builder.setBaseDir(_savedBaseDir); - } - } - - ComponentHandler::endElement(name, line, column); -} - -IcePack::ApplicationBuilder::ApplicationBuilder(const Ice::CommunicatorPtr& communicator, - const NodeRegistryPtr& nodeRegistry, - const vector<string>& targets) : - ComponentBuilder(communicator, map<string, string>(), targets), - _nodeRegistry(nodeRegistry) -{ -} - -void -IcePack::ApplicationBuilder::parse(const string& descriptor) -{ - ApplicationHandler handler(*this); - - ComponentBuilder::parse(descriptor, handler); -} - -void -IcePack::ApplicationBuilder::addServer(const string& name, - const string& nodeName, - const string& descriptor, - const string& binpath, - const string& libpath, - const string& additionalTargets) -{ - if(name.empty()) - { - throw IceXML::ParserException(__FILE__, __LINE__, "name attribute value is empty"); - } - if(nodeName.empty()) - { - throw IceXML::ParserException(__FILE__, __LINE__, "node attribute value is empty"); - } - if(descriptor.empty()) - { - throw IceXML::ParserException(__FILE__, __LINE__, "descriptor attribute value is empty"); - } - - vector<string> targets = toTargets(additionalTargets); - copy(_targets.begin(), _targets.end(), back_inserter(targets)); - - NodePrx node; - try - { - node = _nodeRegistry->findByName(nodeName); - } - catch(const NodeNotExistException&) - { - throw IceXML::ParserException(__FILE__, __LINE__, "can't find node `" + nodeName + "'"); - } - - // - // TODO: the path here are path which are relative to the node - // current directory. This might be very confusing. - // - try - { - ServerDeployerPrx deployer = node->getServerDeployer(); - _tasks.push_back(new AddServer(deployer, nodeName, name, descriptor, binpath, libpath, targets)); - } - catch(::Ice::LocalException&) - { - throw IceXML::ParserException(__FILE__, __LINE__, "can't contact node `" + nodeName + "'"); - } -} - -void -IcePack::ApplicationBuilder::setBaseDir(const string& basedir) -{ - setVariable("basedir", basedir); -} diff --git a/cpp/src/IcePack/ApplicationBuilder.h b/cpp/src/IcePack/ApplicationBuilder.h deleted file mode 100644 index e5d3a578a40..00000000000 --- a/cpp/src/IcePack/ApplicationBuilder.h +++ /dev/null @@ -1,39 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#ifndef ICE_PACK_SERVICE_BUILDER_H -#define ICE_PACK_SERVICE_BUILDER_H - -#include <IcePack/ComponentBuilder.h> -#include <IcePack/Internal.h> - -namespace IcePack -{ - -class ApplicationBuilder : public ComponentBuilder -{ -public: - - ApplicationBuilder(const Ice::CommunicatorPtr&, const NodeRegistryPtr&, const std::vector<std::string>&); - - using ComponentBuilder::parse; - void parse(const std::string&); - - void addServer(const std::string&, const std::string&, const std::string&, const std::string&, const std::string&, - const std::string&); - void setBaseDir(const std::string&); - -private: - - NodeRegistryPtr _nodeRegistry; -}; - -} - -#endif diff --git a/cpp/src/IcePack/ApplicationRegistryI.cpp b/cpp/src/IcePack/ApplicationRegistryI.cpp new file mode 100644 index 00000000000..3a7fa001038 --- /dev/null +++ b/cpp/src/IcePack/ApplicationRegistryI.cpp @@ -0,0 +1,157 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <IcePack/ApplicationRegistryI.h> +#include <IcePack/TraceLevels.h> +#include <Freeze/Initialize.h> + +using namespace std; +using namespace IcePack; + +IcePack::ApplicationRegistryI::ApplicationRegistryI(const Ice::CommunicatorPtr& communicator, + const ServerRegistryPtr& serverRegistry, + const string& envName, + const string& dbName, + const TraceLevelsPtr& traceLevels) : + _serverRegistry(serverRegistry), + _connectionCache(Freeze::createConnection(communicator, envName)), + _dictCache(_connectionCache, dbName), + _traceLevels(traceLevels), + _envName(envName), + _communicator(communicator), + _dbName(dbName) +{ +} + +void +IcePack::ApplicationRegistryI::add(const string& name, const Ice::Current&) +{ + Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName); + StringStringSeqDict dict(connection, _dbName); + + StringStringSeqDict::iterator p = dict.find(name); + if(p != dict.end()) + { + throw ApplicationExistsException(); + } + + dict.put(pair<const string, const Ice::StringSeq>(name, Ice::StringSeq())); + + if(_traceLevels->applicationRegistry > 0) + { + Ice::Trace out(_traceLevels->logger, _traceLevels->applicationRegistryCat); + out << "added application `" << name << "'"; + } +} + +void +IcePack::ApplicationRegistryI::remove(const string& name, const Ice::Current&) +{ + Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName); + StringStringSeqDict dict(connection, _dbName); + + StringStringSeqDict::iterator p = dict.find(name); + if(p == dict.end()) + { + throw ApplicationNotExistException(); + } + + dict.erase(p); + + if(_traceLevels->applicationRegistry > 0) + { + Ice::Trace out(_traceLevels->logger, _traceLevels->applicationRegistryCat); + out << "removed application `" << name << "'"; + } +} + +void +ApplicationRegistryI::registerServer(const string& application, const string& name, const Ice::Current&) +{ + Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName); + StringStringSeqDict dict(connection, _dbName); + + StringStringSeqDict::iterator p = dict.find(application); + if(p == dict.end()) + { + throw ApplicationNotExistException(); + } + + Ice::StringSeq servers = p->second; + servers.push_back(name); + p.set(servers); +} + +void +ApplicationRegistryI::unregisterServer(const string& application, const string& name, const Ice::Current&) +{ + Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName); + StringStringSeqDict dict(connection, _dbName); + + StringStringSeqDict::iterator p = dict.find(application); + if(p == dict.end()) + { + throw ApplicationNotExistException(); + } + + Ice::StringSeq servers = p->second; + for(Ice::StringSeq::iterator q = servers.begin(); q != servers.end(); ++q) + { + if(*q == name) + { + servers.erase(q); + break; + } + } + p.set(servers); +} + +ApplicationDescriptorPtr +ApplicationRegistryI::getDescriptor(const string& name, const Ice::Current&) +{ + Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName); + StringStringSeqDict dict(connection, _dbName); + + StringStringSeqDict::iterator p = dict.find(name); + if(p == dict.end()) + { + throw ApplicationNotExistException(); + } + + ApplicationDescriptorPtr descriptor = new ApplicationDescriptor(); + descriptor->name = name; + for(Ice::StringSeq::const_iterator q = p->second.begin(); q != p->second.end(); ++q) + { + try + { + descriptor->servers.push_back(_serverRegistry->getDescriptor(*q)); + } + catch(ServerNotExistException&) + { + } + } + return descriptor; +} + +Ice::StringSeq +IcePack::ApplicationRegistryI::getAll(const Ice::Current&) const +{ + Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName); + StringStringSeqDict dict(connection, _dbName); + + Ice::StringSeq names; + names.reserve(dict.size()); + + for(StringStringSeqDict::const_iterator p = dict.begin(); p != dict.end(); ++p) + { + names.push_back(p->first); + } + + return names; +} diff --git a/cpp/src/IcePack/ApplicationRegistryI.h b/cpp/src/IcePack/ApplicationRegistryI.h new file mode 100644 index 00000000000..9735646c05c --- /dev/null +++ b/cpp/src/IcePack/ApplicationRegistryI.h @@ -0,0 +1,51 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#ifndef ICE_PACK_APPLICATION_REGISTRY_I_H +#define ICE_PACK_APPLICATION_REGISTRY_I_H + +#include <IcePack/Internal.h> +#include <IcePack/StringStringSeqDict.h> + +namespace IcePack +{ + +class TraceLevels; +typedef IceUtil::Handle<TraceLevels> TraceLevelsPtr; + +class ApplicationRegistryI : public ApplicationRegistry +{ +public: + + ApplicationRegistryI(const Ice::CommunicatorPtr&, const ServerRegistryPtr&, const std::string&, const std::string&, + const TraceLevelsPtr&); + + virtual void add(const std::string&, const ::Ice::Current&); + virtual void remove(const std::string&, const ::Ice::Current&); + + virtual void registerServer(const std::string&, const std::string&, const Ice::Current&); + virtual void unregisterServer(const std::string&, const std::string&, const Ice::Current&); + + virtual ApplicationDescriptorPtr getDescriptor(const ::std::string&, const Ice::Current&); + virtual Ice::StringSeq getAll(const ::Ice::Current&) const; + +private: + + ServerRegistryPtr _serverRegistry; + Freeze::ConnectionPtr _connectionCache; + StringStringSeqDict _dictCache; + TraceLevelsPtr _traceLevels; + const std::string _envName; + const Ice::CommunicatorPtr _communicator; + const std::string _dbName; +}; + +} + +#endif diff --git a/cpp/src/IcePack/ComponentBuilder.cpp b/cpp/src/IcePack/ComponentBuilder.cpp deleted file mode 100644 index 2aa29dbd48a..00000000000 --- a/cpp/src/IcePack/ComponentBuilder.cpp +++ /dev/null @@ -1,825 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#ifdef __sun -#define _POSIX_PTHREAD_SEMANTICS -#endif - -#include <Ice/Ice.h> -#include <IcePack/ComponentBuilder.h> -#include <IcePack/Internal.h> - -#include <sys/types.h> -#include <sys/stat.h> - -#ifdef _WIN32 -# include <direct.h> -#else -# include <unistd.h> -# include <dirent.h> -#endif - -#include <iterator> -#include <fstream> - -using namespace std; -using namespace IcePack; - -namespace IcePack -{ - -// -// Create a directory. -// -// TODO: IcePatch implements portable version of filesystem primitives -// in the Util.cpp file. We should move these primitives in IceUtil -// and use them here. -// -class CreateDirectory : public Task -{ -public: - - CreateDirectory(const string& name, bool force) : - _name(name), - _force(force) - { - } - - virtual void - execute() - { -#ifdef _WIN32 - if(_mkdir(_name.c_str()) != 0) -#else - if(mkdir(_name.c_str(), 0755) != 0) -#endif - { - DeploymentException ex; - ex.reason = "couldn't create directory " + _name + ": " + strerror(getSystemErrno()); - throw ex; - } - } - - virtual void - undo() - { - if(_force) - { - // - // Only remove files inside the directory, don't remove - // directories (deployed directory should only be created - // through this task so other directories should be - // removed by another task). - // - - Ice::StringSeq files; - -#ifdef _WIN32 - string pattern = _name + "/*"; - WIN32_FIND_DATA data; - HANDLE hnd = FindFirstFile(pattern.c_str(), &data); - if(hnd == INVALID_HANDLE_VALUE) - { - // TODO: log a warning, throw an exception? - return; - } - - do - { - if((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) - { - files.push_back(_name + "/" + data.cFileName); - } - } while(FindNextFile(hnd, &data)); - - FindClose(hnd); -#else - DIR* dir = opendir(_name.c_str()); - if(dir == 0) - { - // TODO: log a warning, throw an exception? - return; - } - - // TODO: make the allocation/deallocation exception-safe - struct dirent* entry = static_cast<struct dirent*>(malloc(pathconf(_name.c_str(), _PC_NAME_MAX) + 1)); - - while(readdir_r(dir, entry, &entry) == 0 && entry != 0) - { - string name = _name + "/" + entry->d_name; - struct stat buf; - - if(::stat(name.c_str(), &buf) != 0) - { - if(errno != ENOENT) - { - // - // TODO: log error - // - } - } - else if(S_ISREG(buf.st_mode)) - { - files.push_back(name); - } - } - - free(entry); - closedir(dir); -#endif - - for(Ice::StringSeq::iterator p = files.begin(); p != files.end(); ++p) - { - if(unlink(p->c_str()) != 0) - { - // - // TODO: log error - // - } - } - } - - if(rmdir(_name.c_str()) != 0) - { - DeploymentException ex; - ex.reason = "couldn't remove directory " + _name + ": " + strerror(getSystemErrno()); - throw ex; - } - } - -private: - - string _name; - bool _force; -}; - -// -// Generate a configuration file from a property set. -// -class GenerateConfiguration : public Task -{ - class WriteConfigProperty : public unary_function<Ice::PropertyDict::value_type, string> - { - public: - - WriteConfigProperty(const string& sep, const string& prefix) : - _sep(sep), - _prefix(prefix) - { - } - - - string - operator()(const Ice::PropertyDict::value_type& p) const - { - return p.first.substr(_prefix.length()) + _sep + p.second; - } - - private: - - const string _sep; - const string _prefix; - }; - -public: - - GenerateConfiguration(const string& sep, const string& prefix, const string& file, - const Ice::PropertiesPtr& properties) : - _sep(sep), - _prefix(prefix), - _file(file), - _properties(properties) - { - } - - virtual void - execute() - { - ofstream configfile; - configfile.open(_file.c_str(), ios::out); - if(!configfile) - { - DeploymentException ex; - ex.reason = "couldn't create configuration file: " + _file; - throw ex; - } - - Ice::PropertyDict props = _properties->getPropertiesForPrefix(_prefix); - transform(props.begin(), props.end(), ostream_iterator<string>(configfile,"\n"), - WriteConfigProperty(_sep, _prefix)); - configfile.close(); - } - - virtual void - undo() - { - if(unlink(_file.c_str()) != 0) - { - DeploymentException ex; - ex.reason = "couldn't remove configuration file: " + _file; - throw ex; - } - } - -private: - - const string _sep; - const string _prefix; - const string _file; - Ice::PropertiesPtr _properties; -}; - -// -// Register an identity. -// -class RegisterObject : public Task -{ -public: - - RegisterObject(const ObjectRegistryPrx& registry, const ObjectDescription& desc) : - _registry(registry), - _desc(desc) - { - } - - virtual void - execute() - { - try - { - _registry->add(_desc); - } - catch(const ObjectExistsException& lex) - { - ostringstream os; - os << "couldn't add the object:\n" << lex; - - ObjectDeploymentException ex; - ex.reason = os.str(); - ex.proxy = _desc.proxy; - throw ex; - } - catch(const Ice::LocalException& lex) - { - ostringstream os; - os << "couldn't contact the object registry:\n" << lex; - - ObjectDeploymentException ex; - ex.reason = os.str(); - ex.proxy = _desc.proxy; - throw ex; - } - } - - virtual void - undo() - { - try - { - _registry->remove(_desc.proxy); - } - catch(const ObjectNotExistException& ex) - { - ostringstream os; - os << "couldn't remove the object:\n" << ex; - - ObjectDeploymentException ode; - ode.reason = os.str(); - ode.proxy = _desc.proxy; - throw ode; - } - catch(const Ice::LocalException& lex) - { - ostringstream os; - os << "couldn't contact the object registry:\n" << lex; - - ObjectDeploymentException ex; - ex.reason = os.str(); - ex.proxy = _desc.proxy; - throw ex; - } - } - -private: - - ObjectRegistryPrx _registry; - ObjectDescription _desc; -}; - -} - -IcePack::ComponentHandler::ComponentHandler(ComponentBuilder& builder) : - _builder(builder), - _isCurrentTargetDeployable(true) -{ -} - -void -IcePack::ComponentHandler::startElement(const string& name, const IceXML::Attributes& attrs, int line, int) -{ - _elements.push(""); - - if(!isCurrentTargetDeployable()) - { - return; - } - - if(name == "variable") - { - string value = getAttributeValueWithDefault(attrs, "value", ""); - if(value.empty()) - { - value = _builder.toLocation(getAttributeValueWithDefault(attrs, "location", "")); - } - _builder.addVariable(getAttributeValue(attrs, "name"), value); - } - - _builder.pushVariables(); - - if(name == "property") - { - string value = getAttributeValueWithDefault(attrs, "value", ""); - if(value.empty()) - { - value = _builder.toLocation(getAttributeValueWithDefault(attrs, "location", "")); - } - _builder.addProperty(getAttributeValue(attrs, "name"), value); - } - else if(name == "adapter") - { - if(!_currentAdapterId.empty()) - { - ostringstream ostr; - ostr << "line " << line << ": Adapter element enclosed in an adapter element is not allowed"; - throw IceXML::ParserException(__FILE__, __LINE__, ostr.str()); - } - - // - // If the id is not specified, we ask the builder to generate - // an id for us based on the adapter name. - // - string adapterName = getAttributeValue(attrs, "name"); - if(adapterName.empty()) - { - ostringstream ostr; - ostr << "line " << line << ": empty adapter name"; - throw IceXML::ParserException(__FILE__, __LINE__, ostr.str()); - } - _currentAdapterId = getAttributeValueWithDefault(attrs, "id", _builder.getDefaultAdapterId(adapterName)); - } - else if(name == "object") - { - _builder.addObject(getAttributeValue(attrs, "identity"), - _currentAdapterId, - getAttributeValue(attrs, "type")); - } - else if(name == "target") - { - if(!_currentTarget.empty()) - { - ostringstream ostr; - ostr << "line " << line << ": Target element enclosed in a target element is not allowed"; - throw IceXML::ParserException(__FILE__, __LINE__, ostr.str()); - } - _isCurrentTargetDeployable = _builder.isTargetDeployable(getAttributeValue(attrs, "name")); - } -} - -void -IcePack::ComponentHandler::endElement(const string& name, int, int) -{ - _elements.pop(); - - if(name == "target") - { - _isCurrentTargetDeployable = true; - } - - if(isCurrentTargetDeployable()) - { - _builder.popVariables(); - if(name == "adapter") - { - _currentAdapterId = ""; - } - } -} - -void -IcePack::ComponentHandler::characters(const string& chars, int, int) -{ - _elements.top().assign(chars); -} - -string -IcePack::ComponentHandler::getAttributeValue(const IceXML::Attributes& attrs, const string& name) const -{ - IceXML::Attributes::const_iterator p = attrs.find(name); - if(p == attrs.end()) - { - throw IceXML::ParserException(__FILE__, __LINE__, "missing attribute '" + name + "'"); - } - - return _builder.substitute(p->second); -} - -string -IcePack::ComponentHandler::getAttributeValueWithDefault(const IceXML::Attributes& attrs, const string& name, - const string& def) const -{ - IceXML::Attributes::const_iterator p = attrs.find(name); - if(p == attrs.end()) - { - return _builder.substitute(def); - } - else - { - return _builder.substitute(p->second); - } -} - -string -IcePack::ComponentHandler::elementValue() const -{ - return _builder.substitute(_elements.top()); -} - -bool -IcePack::ComponentHandler::isCurrentTargetDeployable() const -{ - return _isCurrentTargetDeployable; -} - -IcePack::ComponentBuilder::ComponentBuilder(const Ice::CommunicatorPtr& communicator, - const map<string, string>& variables, - const vector<string>& targets) : - _communicator(communicator), - _properties(Ice::createProperties()), - _targets(targets) -{ - _variables.push_back(variables); -} - -void -IcePack::ComponentBuilder::parse(const string& xmlFile, ComponentHandler& handler) -{ - // - // Setup the base directory for this deploment descriptor to the - // location of the desciptor file. - // - string::size_type end = xmlFile.find_last_of('/'); - if(end != string::npos) - { - setVariable("basedir", xmlFile.substr(0, end)); - } - - if(getVariable("basedir").empty()) - { - setVariable("basedir", "."); - } - - try - { - IceXML::Parser::parse(xmlFile, handler); - } - catch(const IcePack::ParserDeploymentException& ex) - { - throw ex; - } - catch(const IceXML::ParserException& e) - { - ostringstream os; - os << xmlFile << ": " << e; - - ParserDeploymentException ex; - ex.component = getVariable("fqn"); - ex.reason = os.str(); - throw ex; - } - catch(...) - { - ostringstream os; - os << xmlFile << ": unknown exception while parsing file"; - - ParserDeploymentException ex; - ex.component = getVariable("fqn"); - ex.reason = os.str(); - throw ex; - } -} - -bool -IcePack::ComponentBuilder::isTargetDeployable(const string& target) const -{ - const string fqn = getVariable("fqn"); - - for(vector<string>::const_iterator p = _targets.begin(); p != _targets.end(); ++p) - { - if((*p) == target) - { - return true; - } - else - { - string componentTarget; - string::size_type end = 0; - while(end != string::npos) - { - // - // Add the first component name from the component - // fully qualified name to the target and see if - // matches. - // - end = fqn.find('.', end); - if(end == string::npos) - { - componentTarget = fqn + "." + target; - } - else - { - componentTarget = fqn.substr(0, end) + "." + target; - ++end; - } - - if((*p) == componentTarget) - { - return true; - } - } - } - } - - return false; -} - -void -IcePack::ComponentBuilder::execute() -{ - vector<TaskPtr>::iterator p; - for(p = _tasks.begin(); p != _tasks.end(); p++) - { - try - { - (*p)->execute(); - } - catch(DeploymentException& ex) - { - if(ex.component.empty()) - { - ex.component = getVariable("fqn"); - } - undoFrom(p); - throw; - } - } -} - -void -IcePack::ComponentBuilder::undo() -{ - for(vector<TaskPtr>::reverse_iterator p = _tasks.rbegin(); p != _tasks.rend(); p++) - { - try - { - (*p)->undo(); - } - catch(const DeploymentException& ex) - { - ostringstream os; - os << "exception while removing component "; - os << (ex.component.empty() ? getVariable("fqn") : ex.component); - os << ":\n" << ex << ": " << ex.reason; - - _communicator->getLogger()->warning(os.str()); - } - } -} - -void -IcePack::ComponentBuilder::createDirectory(const string& name, bool force) -{ - string path = getVariable("datadir") + (name.empty() || name[0] == '/' ? name : "/" + name); - _tasks.push_back(new CreateDirectory(path, force)); -} - -void -IcePack::ComponentBuilder::createConfigFile(const string& name) -{ - assert(!name.empty()); - _configFile = getVariable("datadir") + (name[0] == '/' ? name : "/" + name); - _tasks.push_back(new GenerateConfiguration("=", "", _configFile, _properties)); -} - -void -IcePack::ComponentBuilder::addProperty(const string& name, const string& value) -{ - _properties->setProperty(name, value); -} - -void -IcePack::ComponentBuilder::addVariable(const string& name, const string& value) -{ - setVariable(name, value); -} - -void -IcePack::ComponentBuilder::addObject(const string& id, const string& adapterId, const string& type) -{ - assert(!adapterId.empty()); - - ObjectDescription desc; - desc.proxy = _communicator->stringToProxy(id + "@" + adapterId); - desc.type = type; - desc.adapterId = adapterId; - - _tasks.push_back(new RegisterObject(_objectRegistry, desc)); -} - -void -IcePack::ComponentBuilder::overrideBaseDir(const string& basedir) -{ - if(basedir[0] == '/') - { - setVariable("basedir", basedir); - } - else - { - setVariable("basedir", getVariable("basedir") + "/" + basedir); - } -} - -const string& -IcePack::ComponentBuilder::getVariable(const string& name) const -{ - static const string empty; - - vector< map< string, string> >::const_reverse_iterator p = _variables.rbegin(); - while(p != _variables.rend()) - { - map<string, string>::const_iterator q = p->find(name); - if(q != p->end()) - { - return q->second; - } - ++p; - } - return empty; -} - -void -IcePack::ComponentBuilder::setVariable(const string& name, const string& value) -{ - _variables.back()[name] = value; -} - -bool -IcePack::ComponentBuilder::findVariable(const string& name) const -{ - vector< map< string, string> >::const_reverse_iterator p = _variables.rbegin(); - while(p != _variables.rend()) - { - map<string, string>::const_iterator q = p->find(name); - if(q != p->end()) - { - return true; - } - ++p; - } - return false; -} - -void -IcePack::ComponentBuilder::pushVariables() -{ - _variables.push_back(map<string, string>()); -} - -void -IcePack::ComponentBuilder::popVariables() -{ - _variables.pop_back(); -} - -// -// Compute an adapter id for a given adapter name. -// -string -IcePack::ComponentBuilder::getDefaultAdapterId(const string& name) -{ - // - // Concatenate the component name to the adapter name. - // - return name + "-" + getVariable("name"); -} - -// -// Returns a path including the base directory if path is a relative -// path. -// -string -IcePack::ComponentBuilder::toLocation(const string& path) const -{ - if(path.empty()) - { - return ""; - } - - return path[0] != '/' ? getVariable("basedir") + "/" + path : path; -} - -// -// Substitute variables with their values. -// -string -IcePack::ComponentBuilder::substitute(const string& v) const -{ - string value(v); - string::size_type beg; - string::size_type end = 0; - - while((beg = value.find("${")) != string::npos) - { - end = value.find("}", beg); - - if(end == string::npos) - { - throw IceXML::ParserException(__FILE__, __LINE__, "malformed variable name in the '" + value + "' value"); - } - - - string name = value.substr(beg + 2, end - beg - 2); - if(!findVariable(name)) - { - throw IceXML::ParserException(__FILE__, __LINE__, "unknown variable name in the '" + value + "' value"); - } - - value.replace(beg, end - beg + 1, getVariable(name)); - } - - return value; -} - -vector<string> -IcePack::ComponentBuilder::toTargets(const string& targets) const -{ - vector<string> result; - - if(!targets.empty()) - { - const string delim = " \t\n\r"; - - string::size_type beg = 0; - string::size_type end = 0; - do - { - end = targets.find_first_of(delim, end); - if(end == string::npos) - { - end = targets.size(); - } - - result.push_back(targets.substr(beg, end - beg)); - beg = ++end; - } - while(end < targets.size()); - } - - return result; -} - -void -IcePack::ComponentBuilder::undoFrom(vector<TaskPtr>::iterator p) -{ - if(p != _tasks.begin()) - { - for(vector<TaskPtr>::reverse_iterator q(p); q != _tasks.rend(); q++) - { - try - { - (*q)->undo(); - } - catch(const DeploymentException& ex) - { - ostringstream os; - os << "exception while removing component " << getVariable("fqn") << ": "; - os << ex.reason << ":" << endl; - os << ex; - - _communicator->getLogger()->warning(os.str()); - } - } - } -} - -void -IcePack::ComponentBuilder::generateConfigFile(const string& sep, const string& prefix, const string& path, - const Ice::PropertiesPtr& props) -{ - _tasks.push_back(new GenerateConfiguration(sep, prefix, path, props)); -} diff --git a/cpp/src/IcePack/ComponentBuilder.h b/cpp/src/IcePack/ComponentBuilder.h deleted file mode 100644 index d4fc957e60f..00000000000 --- a/cpp/src/IcePack/ComponentBuilder.h +++ /dev/null @@ -1,130 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#ifndef ICE_PACK_COMPONENT_BUILDER_H -#define ICE_PACK_COMPONENT_BUILDER_H - -#include <IceUtil/Shared.h> -#include <IceXML/Parser.h> -#include <IcePack/Internal.h> - -#include <stack> - -namespace IcePack -{ - -// -// A deployment task. A deployment task is executed when a component -// is deployed and it's undo when the component is removed. -// -class Task : public ::IceUtil::SimpleShared -{ -public: - - virtual void execute() = 0; - virtual void undo() = 0; -}; - -typedef ::IceUtil::Handle< ::IcePack::Task> TaskPtr; - -class ComponentBuilder; - -// -// SAX parser handler for component descriptors. -// -class ComponentHandler : public IceXML::Handler -{ -public: - - ComponentHandler(ComponentBuilder&); - - virtual void startElement(const std::string&, const IceXML::Attributes&, int, int); - virtual void endElement(const std::string&, int, int); - virtual void characters(const std::string&, int, int); - -protected: - - std::string getAttributeValue(const IceXML::Attributes&, const std::string&) const; - std::string getAttributeValueWithDefault(const IceXML::Attributes&, const std::string&, - const std::string&) const; - - std::string elementValue() const; - bool isCurrentTargetDeployable() const; - - ComponentBuilder& _builder; - std::stack<std::string> _elements; - std::string _currentAdapterId; - std::string _currentTarget; - bool _isCurrentTargetDeployable; -}; - -// -// The component builder builds and execute the tasks that need to be -// executed to deploy a component described in a component -// descriptor. There's two phase to deploy or remove a component: -// -// * descriptor parsing: the builder parse() method initiate the -// parsing. The parser will call the builder methods to setup the -// deployment tasks. Once the parsing is finished all the deployment -// tasks should be ready to be executed or undo -// -// * execution of the tasks to deploy the component or undo'ing of the -// tasks to remove the component. -// -class ComponentBuilder : public Task -{ -public: - - ComponentBuilder(const Ice::CommunicatorPtr&, - const std::map<std::string, std::string>&, - const std::vector<std::string>&); - - virtual void execute(); - virtual void undo(); - - void parse(const std::string&, ComponentHandler&); - - bool isTargetDeployable(const std::string&) const; - - void createDirectory(const std::string&, bool = false); - void createConfigFile(const std::string&); - void addProperty(const std::string&, const std::string&); - void addVariable(const std::string&, const std::string&); - void addObject(const std::string&, const std::string&, const std::string&); - void overrideBaseDir(const std::string&); - - const std::string& getVariable(const std::string&) const; - void setVariable(const std::string&, const std::string&); - bool findVariable(const std::string&) const; - void pushVariables(); - void popVariables(); - - virtual std::string getDefaultAdapterId(const std::string&); - std::string toLocation(const std::string&) const; - std::string substitute(const std::string&) const; - std::vector<std::string> toTargets(const std::string&) const; - void undoFrom(std::vector<TaskPtr>::iterator); - -protected: - - void generateConfigFile(const std::string&, const std::string&, const std::string&, const Ice::PropertiesPtr&); - - Ice::CommunicatorPtr _communicator; - ObjectRegistryPrx _objectRegistry; - - Ice::PropertiesPtr _properties; - std::vector< std::map<std::string, std::string> > _variables; - std::vector<TaskPtr> _tasks; - std::string _configFile; - std::vector<std::string> _targets; -}; - -} - -#endif diff --git a/cpp/src/IcePack/DescriptorParser.cpp b/cpp/src/IcePack/DescriptorParser.cpp new file mode 100644 index 00000000000..505ffccf4f4 --- /dev/null +++ b/cpp/src/IcePack/DescriptorParser.cpp @@ -0,0 +1,814 @@ + +// ********************************************************************** +// +// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <Ice/Ice.h> +#include <IceXML/Parser.h> +#include <IcePack/Admin.h> +#include <IcePack/DescriptorParser.h> + +#include <stack> +#include <fstream> + +using namespace std; +using namespace Ice; +using namespace IcePack; + +namespace IcePack +{ + +class DescriptorHandler : public IceXML::Handler +{ +public: + + DescriptorHandler(const string&); + + void setCommunicator(const Ice::CommunicatorPtr&); + void setVariables(const std::map<std::string, std::string>&); + void setTargets(const std::vector<std::string>&); + + virtual void startElement(const string&, const IceXML::Attributes&, int, int); + virtual void endElement(const string&, int, int); + virtual void characters(const string&, int, int); + virtual void error(const string&, int, int); + + const ApplicationDescriptorPtr& getApplicationDescriptor() const; + const ServerDescriptorPtr& getServerDescriptor() const; + +private: + + std::string getAttributeValue(const IceXML::Attributes&, const std::string&) const; + std::string getAttributeValueWithDefault(const IceXML::Attributes&, const std::string&, const std::string&) const; + bool isCurrentTargetDeployable() const; + std::string substitute(const std::string&) const; + std::string elementValue() const; + std::vector<std::string> getTargets(const std::string&) const; + void error(const string&) const; + + const std::string& getVariable(const std::string&) const; + bool hasVariable(const std::string&) const; + bool isTargetDeployable(const std::string&) const; + + Ice::CommunicatorPtr _communicator; + string _filename; + std::vector<std::string> _targets; + std::vector< std::map<std::string, std::string> > _variables; + std::stack<std::string> _elements; + int _targetCounter; + bool _isCurrentTargetDeployable; + int _line; + int _column; + + ApplicationDescriptorPtr _currentApplication; + ServerDescriptorPtr _currentServer; + ServiceDescriptorPtr _currentService; + ComponentDescriptorPtr _currentComponent; + AdapterDescriptor _currentAdapter; + DbEnvDescriptor _currentDbEnv; + + bool _isTopLevel; + bool _inProperties; + bool _inAdapters; +}; + +} + +DescriptorHandler::DescriptorHandler(const string& filename) : + _filename(filename), + _isCurrentTargetDeployable(true), + _isTopLevel(true), + _inProperties(false), + _inAdapters(false) +{ + _variables.push_back(map<string, string>()); +} + +void +DescriptorHandler::setCommunicator(const Ice::CommunicatorPtr& communicator) +{ + _communicator = communicator; +} + +void +DescriptorHandler::setVariables(const std::map<std::string, std::string>& variables) +{ + _variables.clear(); + _variables.push_back(variables); +} + +void +DescriptorHandler::setTargets(const vector<string>& targets) +{ + _targets = targets; +} + +void +DescriptorHandler::startElement(const string& name, const IceXML::Attributes& attrs, int line, int column) +{ + _line = line; + _column = column; + + if(name == "icepack") + { + if(!_isTopLevel) + { + error("element <icepack> is a top level element"); + } + _isTopLevel = false; + + // + // Set the current base directory. Relative paths specified in the rest of descriptors will be + // relative to this base directory. If no base directory is specified, the default base directory + // is the directory where this descriptor is located. + // + string baseDir = getAttributeValueWithDefault(attrs, "basedir", ""); + string::size_type end = _filename.find_last_of('/'); + if(end != string::npos) + { + baseDir = _filename.substr(0, end) + (baseDir.empty() ? "" : "/") + baseDir; + } + else + { + baseDir = "."; + } + _variables.back()["basedir"] = baseDir; + } + else if(_isTopLevel) + { + error("only the <icepack> element is allowed at the top-level"); + } + else if(name == "target") + { + if(!_isCurrentTargetDeployable) + { + ++_targetCounter; + } + else + { + _isCurrentTargetDeployable = isTargetDeployable(getAttributeValue(attrs, "name")); + _targetCounter = 1; + return; + } + } + else if(!isCurrentTargetDeployable()) + { + // + // We don't bother to parse the elements if the elements are enclosed in a target element + // which won't be deployed. + // + return; + } + else if(name == "include") + { + _variables.push_back(map<string, string>()); + + string file; + string targets; + + for(IceXML::Attributes::const_iterator p = attrs.begin(); p != attrs.end(); ++p) + { + if(p->first == "descriptor") + { + file = p->second; + } + else if(p->first == "targets") + { + targets = p->second; + } + else + { + _variables.back()[p->first] = p->second; + } + } + + if(file.empty()) + { + error("attribute `descriptor' is mandatory in element <include>"); + } + + if(hasVariable("basedir") && file[0] != '/') + { + file = getVariable("basedir") + "/" + file; + } + + string oldFileName = _filename; + vector<string> oldTargets = _targets; + _isTopLevel = true; + _filename = file; + _targets = getTargets(targets); + + IceXML::Parser::parse(file, *this); + + _variables.pop_back(); + _filename = oldFileName; + _targets = oldTargets; + } + else if(name == "application") + { + if(_currentApplication) + { + error("only one <application> element is allowed"); + } + _currentApplication = new ApplicationDescriptor(); + _currentApplication->name = getAttributeValue(attrs, "name"); + _variables.back()["application"] = _currentApplication->name; + } + else if(name == "node") + { + _variables.back()["node"] = getAttributeValue(attrs, "name"); + } + else if(name == "server") + { + if(!hasVariable("node")) + { + error("the <server> element can only be a child of a <node> element"); + } + + string kind = getAttributeValue(attrs, "kind"); + if(kind == "cpp") + { + _currentServer = new ServerDescriptor(); + _currentServer->exe = getAttributeValue(attrs, "exe"); + } + else if(kind == "java") + { + JavaServerDescriptorPtr descriptor = new JavaServerDescriptor(); + _currentServer = descriptor; + _currentServer->exe = getAttributeValueWithDefault(attrs, "exe", "java"); + descriptor->className = getAttributeValue(attrs, "classname"); + } + else if(kind == "cpp-icebox") + { + _currentServer = new CppIceBoxDescriptor(); + _currentServer->exe = getAttributeValueWithDefault(attrs, "exe", "icebox"); + } + else if(kind == "java-icebox") + { + JavaIceBoxDescriptorPtr descriptor = new JavaIceBoxDescriptor(); + _currentServer = descriptor; + _currentServer->exe = getAttributeValueWithDefault(attrs, "exe", "java"); + descriptor->className = getAttributeValueWithDefault(attrs, "classname", "IceBox.Server"); + } + + _currentServer->name = getAttributeValue(attrs, "name"); + _currentServer->node = getVariable("node"); + _currentServer->pwd = getAttributeValueWithDefault(attrs, "pwd", ""); + _currentServer->activation = + getAttributeValueWithDefault(attrs, "activation", "manual") == "on-demand" ? OnDemand : Manual; + + if(_currentApplication) + { + _currentServer->application = _currentApplication->name; + } + + if(kind == "cpp-icebox" || kind == "java-icebox") + { + CppIceBoxDescriptorPtr cppIceBox = CppIceBoxDescriptorPtr::dynamicCast(_currentServer); + if(cppIceBox) + { + cppIceBox->endpoints = getAttributeValue(attrs, "endpoints"); + } + JavaIceBoxDescriptorPtr javaIceBox = JavaIceBoxDescriptorPtr::dynamicCast(_currentServer); + if(javaIceBox) + { + javaIceBox->endpoints = getAttributeValue(attrs, "endpoints"); + } + + PropertyDescriptor prop; + prop.name = "IceBox.ServiceManager.Identity"; + prop.value = _currentServer->name + "/ServiceManager"; + _currentServer->properties.push_back(prop); + + AdapterDescriptor adapter; + adapter.name = "IceBox.ServiceManager"; + adapter.endpoints = getAttributeValue(attrs, "endpoints"); + adapter.id = _currentServer->name + "." + adapter.name; + adapter.registerProcess = true; + _currentServer->adapters.push_back(adapter); + } + + _currentComponent = _currentServer; + _variables.back()["server"] = _currentServer->name; + } + else if(name == "service") + { + if(!CppIceBoxDescriptorPtr::dynamicCast(_currentServer) && + !JavaIceBoxDescriptorPtr::dynamicCast(_currentServer)) + { + error("element <service> can only be a child of an IceBox <server> element"); + } + + _currentService = new ServiceDescriptor(); + _currentService->name = getAttributeValue(attrs, "name"); + _currentService->entry = getAttributeValue(attrs, "entry"); + + _currentComponent = _currentService; + _variables.back()["service"] = _currentService->name; + } + else if(name == "variable") + { + _variables.back()[getAttributeValue(attrs, "name")] = getAttributeValueWithDefault(attrs, "value", ""); + } + else if(name == "properties") + { + if(!_currentComponent) + { + error("the <properties> element can only be a child of a <server> or <service> element"); + } + + _inProperties = true; + } + else if(name == "property") + { + if(!_inProperties) + { + error("the <property> element can only be a child of a <properties> element"); + } + + PropertyDescriptor prop; + prop.name = getAttributeValue(attrs, "name"); + prop.value = getAttributeValueWithDefault(attrs, "value", ""); + _currentComponent->properties.push_back(prop); + } + else if(name == "adapters") + { + if(!_currentComponent) + { + error("the <adapters> element can only be a child of a <server> or <service> element"); + } + + _inAdapters = true; + } + else if(name == "adapter") + { + if(!_inAdapters) + { + error("the <adapter> element can only be a child of an <adapters> element"); + } + + _currentAdapter.name = getAttributeValue(attrs, "name"); + _currentAdapter.id = getAttributeValueWithDefault(attrs, "id", ""); + if(_currentAdapter.id.empty()) + { + string service = getVariable("service"); + const string fqn = getVariable("server") + (service.empty() ? "" : ".") + service; + _currentAdapter.id = fqn + "." + _currentAdapter.name; + } + _currentAdapter.endpoints = getAttributeValue(attrs, "endpoints"); + _currentAdapter.registerProcess = getAttributeValueWithDefault(attrs, "register", "false") == "true"; + } + else if(name == "object") + { + if(_currentAdapter.name.empty()) + { + error("the <object> element can only be a child of an <adapter> element"); + } + + ObjectDescriptor object; + object.type = getAttributeValue(attrs, "type"); + object.proxy = _communicator->stringToProxy(getAttributeValue(attrs, "identity") + "@" + _currentAdapter.id); + object.adapterId = _currentAdapter.id; + _currentAdapter.objects.push_back(object); + } + else if(name == "dbenv") + { + if(!_currentComponent) + { + error("the <dbenv> element can only be a child of a <server> or <service> element"); + } + + _currentDbEnv.name = getAttributeValue(attrs, "name"); + + DbEnvDescriptorSeq::iterator p; + for(p = _currentComponent->dbEnvs.begin(); p != _currentComponent->dbEnvs.end(); ++p) + { + // + // We are re-opening the dbenv element to define more properties. + // + if(p->name == _currentDbEnv.name) + { + break; + } + } + + if(p != _currentComponent->dbEnvs.end()) + { + // + // Remove the previously defined dbenv, we'll add it back again when + // the dbenv element end tag is reached. + // + _currentDbEnv = *p; + _currentComponent->dbEnvs.erase(p); + } + + if(_currentDbEnv.dbHome.empty()) + { + _currentDbEnv.dbHome = getAttributeValueWithDefault(attrs, "home", ""); + } + } + else if(name == "dbproperty") + { + if(_currentDbEnv.name.empty()) + { + error("the <dbproperty> element can only be a child of a <dbenv> element"); + } + + PropertyDescriptor prop; + prop.name = getAttributeValue(attrs, "name"); + prop.value = getAttributeValueWithDefault(attrs, "value", ""); + _currentDbEnv.properties.push_back(prop); + } + + _elements.push(""); +} + +void +DescriptorHandler::endElement(const string& name, int line, int column) +{ + _line = line; + _column = column; + + if(name == "target") + { + if(!_isCurrentTargetDeployable && --_targetCounter == 0) + { + _isCurrentTargetDeployable = true; + _targetCounter = 0; + } + return; + } + else if(!isCurrentTargetDeployable()) + { + // + // We don't bother to parse the elements if the elements are enclosed in a target element + // which won't be deployed. + // + return; + } + else if(name == "application") + { + _variables.back()["application"] = ""; + } + else if(name == "node") + { + _variables.back()["node"] = ""; + } + else if(name == "server") + { + if(_currentApplication) + { + _currentApplication->servers.push_back(_currentServer); + _currentServer = 0; + } + _currentComponent = 0; + _variables.back()["server"] = ""; + } + else if(name == "service") + { + CppIceBoxDescriptorPtr cppIceBox = CppIceBoxDescriptorPtr::dynamicCast(_currentServer); + if(cppIceBox) + { + cppIceBox->services.push_back(_currentService); + } + JavaIceBoxDescriptorPtr javaIceBox = JavaIceBoxDescriptorPtr::dynamicCast(_currentServer); + if(javaIceBox) + { + javaIceBox->services.push_back(_currentService); + } + _currentService = 0; + _currentComponent = _currentServer; + _variables.back()["service"] = ""; + } + else if(name == "comment") + { + if(_currentComponent) + { + _currentComponent->comment = elementValue(); + } + else if(_currentApplication) + { + _currentApplication->comment = elementValue(); + } + } + else if(name == "exe") + { + if(!_currentServer) + { + error("element <exe> can only be the child of a <server> element"); + } + } + else if(name == "pwd") + { + if(!_currentServer) + { + error("element <pwd> can only be the child of a <server> element"); + } + } + else if(name == "option") + { + if(!_currentServer) + { + error("element <option> can only be the child of a <server> element"); + } + _currentServer->options.push_back(elementValue()); + } + else if(name == "env") + { + if(!_currentServer) + { + error("element <env> can only be the child of a <server> element"); + } + _currentServer->envs.push_back(elementValue()); + } + else if(name == "classname") + { + JavaServerDescriptorPtr descriptor = JavaServerDescriptorPtr::dynamicCast(_currentServer); + if(!descriptor) + { + error("element <classname> can only be the child of a Java <server> element"); + } + } + else if(name == "jvm-option") + { + JavaServerDescriptorPtr descriptor = JavaServerDescriptorPtr::dynamicCast(_currentServer); + if(!descriptor) + { + error("element <jvm-option> can only be the child of a Java <server> element"); + } + descriptor->jvmOptions.push_back(elementValue()); + } + else if(name == "properties") + { + _inProperties = false; + } + else if(name == "adapters") + { + _inAdapters = false; + } + else if(name == "adapter") + { + _currentComponent->adapters.push_back(_currentAdapter); + _currentAdapter = AdapterDescriptor(); + } + else if(name == "dbenv") + { + _currentComponent->dbEnvs.push_back(_currentDbEnv); + _currentDbEnv = DbEnvDescriptor(); + } + + _elements.pop(); +} + +void +DescriptorHandler::characters(const string& chars, int, int) +{ + _elements.top().assign(chars); +} + +void +DescriptorHandler::error(const string& msg, int line, int column) +{ + ostringstream os; + os << "error in <" << _filename << "> descriptor, line " << line << ", column " << column << ":\n" << msg; + throw IceXML::ParserException(__FILE__, __LINE__, os.str()); +} + +const ApplicationDescriptorPtr& +DescriptorHandler::getApplicationDescriptor() const +{ + if(!_currentApplication) + { + error("no application descriptor defined in this file"); + } + return _currentApplication; +} + +const ServerDescriptorPtr& +DescriptorHandler::getServerDescriptor() const +{ + if(!_currentServer) + { + error("no server descriptor defined in this file"); + } + return _currentServer; +} + +string +DescriptorHandler::getAttributeValue(const IceXML::Attributes& attrs, const string& name) const +{ + IceXML::Attributes::const_iterator p = attrs.find(name); + if(p == attrs.end()) + { + error("missing attribute '" + name + "'"); + } + return substitute(p->second); +} + +string +DescriptorHandler::getAttributeValueWithDefault(const IceXML::Attributes& attrs, + const string& name, + const string& def) const +{ + IceXML::Attributes::const_iterator p = attrs.find(name); + if(p == attrs.end()) + { + return substitute(def); + } + else + { + return substitute(p->second); + } +} + +bool +DescriptorHandler::isCurrentTargetDeployable() const +{ + return _isCurrentTargetDeployable; +} + +vector<string> +DescriptorHandler::getTargets(const string& targets) const +{ + vector<string> result; + + if(!targets.empty()) + { + const string delim = " \t\n\r"; + + string::size_type beg = 0; + string::size_type end = 0; + do + { + end = targets.find_first_of(delim, end); + if(end == string::npos) + { + end = targets.size(); + } + + result.push_back(targets.substr(beg, end - beg)); + beg = ++end; + } + while(end < targets.size()); + } + + copy(_targets.begin(), _targets.end(), back_inserter(result)); + + return result; +} + +void +DescriptorHandler::error(const string& msg) const +{ + ostringstream os; + os << "error in <" << _filename << "> descriptor, line " << _line << ", column " << _column << ":\n" << msg; + throw IceXML::ParserException(__FILE__, __LINE__, os.str()); +} + +const string& +DescriptorHandler::getVariable(const string& name) const +{ + static const string empty; + + vector< map< string, string> >::const_reverse_iterator p = _variables.rbegin(); + while(p != _variables.rend()) + { + map<string, string>::const_iterator q = p->find(name); + if(q != p->end()) + { + return q->second; + } + ++p; + } + return empty; +} + +string +DescriptorHandler::substitute(const string& v) const +{ + string value(v); + string::size_type beg = 0; + string::size_type end = 0; + + while((beg = value.find("${", beg)) != string::npos) + { + end = value.find("}", beg); + + if(end == string::npos) + { + error("malformed variable name in the '" + value + "' value"); + } + + string name = value.substr(beg + 2, end - beg - 2); + if(!hasVariable(name)) + { + error("unknown variable `" + name + "'"); + } + else + { + value.replace(beg, end - beg + 1, getVariable(name)); + } + } + + return value; +} + +string +DescriptorHandler::elementValue() const +{ + return substitute(_elements.top()); +} + +bool +DescriptorHandler::hasVariable(const string& name) const +{ + vector< map< string, string> >::const_reverse_iterator p = _variables.rbegin(); + while(p != _variables.rend()) + { + map<string, string>::const_iterator q = p->find(name); + if(q != p->end()) + { + return true; + } + ++p; + } + return false; +} + +bool +DescriptorHandler::isTargetDeployable(const string& target) const +{ + string service = getVariable("service"); + const string fqn = getVariable("server") + (service.empty() ? "" : ".") + service; + + for(vector<string>::const_iterator p = _targets.begin(); p != _targets.end(); ++p) + { + if((*p) == target) + { + return true; + } + else + { + string componentTarget; + string::size_type end = 0; + while(end != string::npos) + { + // + // Add the first component name from the component + // fully qualified name to the target and see if + // matches. + // + end = fqn.find('.', end); + if(end == string::npos) + { + componentTarget = fqn + "." + target; + } + else + { + componentTarget = fqn.substr(0, end) + "." + target; + ++end; + } + + if((*p) == componentTarget) + { + return true; + } + } + } + } + + return false; +} + +ApplicationDescriptorPtr +DescriptorParser::parseApplicationDescriptor(const string& descriptor, + const Ice::StringSeq& targets, + const map<string, string>& variables, + const Ice::CommunicatorPtr& communicator) +{ + DescriptorHandler handler(descriptor); + handler.setCommunicator(communicator); + handler.setTargets(targets); + handler.setVariables(variables); + IceXML::Parser::parse(descriptor, handler); + return handler.getApplicationDescriptor(); +} + +ServerDescriptorPtr +DescriptorParser::parseServerDescriptor(const string& descriptor, + const Ice::StringSeq& targets, + const map<string, string>& variables, + const Ice::CommunicatorPtr& communicator) +{ + DescriptorHandler handler(descriptor); + handler.setCommunicator(communicator); + handler.setTargets(targets); + handler.setVariables(variables); + IceXML::Parser::parse(descriptor, handler); + return handler.getServerDescriptor(); +} diff --git a/cpp/src/IcePack/DescriptorParser.h b/cpp/src/IcePack/DescriptorParser.h new file mode 100644 index 00000000000..46c27148fb6 --- /dev/null +++ b/cpp/src/IcePack/DescriptorParser.h @@ -0,0 +1,34 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#ifndef ICEPACK_DESCRIPTOR_PARSER_H +#define ICEPACK_DESCRIPTOR_PARSER_H + +namespace IcePack +{ + +class DescriptorParser +{ +public: + + static ApplicationDescriptorPtr parseApplicationDescriptor(const std::string&, + const Ice::StringSeq&, + const std::map<std::string, std::string>&, + const Ice::CommunicatorPtr&); + + static ServerDescriptorPtr parseServerDescriptor(const std::string&, + const Ice::StringSeq&, + const std::map<std::string, std::string>&, + const Ice::CommunicatorPtr&); + +}; + +} + +#endif diff --git a/cpp/src/IcePack/DescriptorUtil.cpp b/cpp/src/IcePack/DescriptorUtil.cpp new file mode 100644 index 00000000000..a1902eef888 --- /dev/null +++ b/cpp/src/IcePack/DescriptorUtil.cpp @@ -0,0 +1,216 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <IcePack/DescriptorUtil.h> + +using namespace std; + +namespace IcePack +{ + +bool equal(const ServiceDescriptorPtr&, const ServiceDescriptorPtr&); + +} + +bool +IcePack::equal(const ServiceDescriptorPtr& lhs, const ServiceDescriptorPtr& rhs) +{ + if(lhs->ice_id() != rhs->ice_id()) + { + return false; + } + + if(lhs->name != rhs->name) + { + return false; + } + + if(lhs->comment != rhs->comment) + { + return false; + } + + if(lhs->entry != rhs->entry) + { + return false; + } + + if(set<AdapterDescriptor>(lhs->adapters.begin(), lhs->adapters.end()) != + set<AdapterDescriptor>(rhs->adapters.begin(), rhs->adapters.end())) + { + return false; + } + + if(set<PropertyDescriptor>(lhs->properties.begin(), lhs->properties.end()) != + set<PropertyDescriptor>(rhs->properties.begin(), rhs->properties.end())) + { + return false; + } + + if(set<DbEnvDescriptor>(lhs->dbEnvs.begin(), lhs->dbEnvs.end()) != + set<DbEnvDescriptor>(rhs->dbEnvs.begin(), rhs->dbEnvs.end())) + { + return false; + } + + return true; +} + +bool +IcePack::equal(const ServerDescriptorPtr& lhs, const ServerDescriptorPtr& rhs) +{ + if(lhs->ice_id() != rhs->ice_id()) + { + return false; + } + + if(lhs->name != rhs->name) + { + return false; + } + + if(lhs->comment != rhs->comment) + { + return false; + } + + if(lhs->exe != rhs->exe) + { + return false; + } + + if(lhs->pwd != rhs->pwd) + { + return false; + } + + if(lhs->node != rhs->node) + { + return false; + } + + if(lhs->application != rhs->application) + { + return false; + } + + if(set<AdapterDescriptor>(lhs->adapters.begin(), lhs->adapters.end()) != + set<AdapterDescriptor>(rhs->adapters.begin(), rhs->adapters.end())) + { + return false; + } + + if(set<PropertyDescriptor>(lhs->properties.begin(), lhs->properties.end()) != + set<PropertyDescriptor>(rhs->properties.begin(), rhs->properties.end())) + { + return false; + } + + if(set<DbEnvDescriptor>(lhs->dbEnvs.begin(), lhs->dbEnvs.end()) != + set<DbEnvDescriptor>(rhs->dbEnvs.begin(), rhs->dbEnvs.end())) + { + return false; + } + + if(set<string>(lhs->options.begin(), rhs->options.end()) != set<string>(rhs->options.begin(), rhs->options.end())) + { + return false; + } + + if(set<string>(lhs->envs.begin(), lhs->envs.end()) != set<string>(rhs->envs.begin(), rhs->envs.end())) + { + return false; + } + + // + // TODO: perhaps if would be better to define an equal operation on the Slice class? + // + ServiceDescriptorSeq slhs; + ServiceDescriptorSeq srhs; + + if(lhs->ice_id() == JavaServerDescriptor::ice_staticId()) + { + JavaServerDescriptorPtr jlhs = JavaServerDescriptorPtr::dynamicCast(lhs); + JavaServerDescriptorPtr jrhs = JavaServerDescriptorPtr::dynamicCast(rhs); + + if(jlhs->className != jrhs->className) + { + return false; + } + + if(set<string>(jlhs->jvmOptions.begin(), jlhs->jvmOptions.end()) != + set<string>(jrhs->jvmOptions.begin(), jrhs->jvmOptions.end())) + { + return false; + } + + if(lhs->ice_id() == JavaIceBoxDescriptor::ice_staticId()) + { + JavaIceBoxDescriptorPtr ilhs = JavaIceBoxDescriptorPtr::dynamicCast(lhs); + JavaIceBoxDescriptorPtr irhs = JavaIceBoxDescriptorPtr::dynamicCast(rhs); + + if(ilhs->endpoints != irhs->endpoints) + { + return false; + } + + if(ilhs->services.size() != irhs->services.size()) + { + return false; + } + + slhs = ilhs->services; + srhs = irhs->services; + } + } + else if(lhs->ice_id() == CppIceBoxDescriptor::ice_staticId()) + { + CppIceBoxDescriptorPtr ilhs = CppIceBoxDescriptorPtr::dynamicCast(lhs); + CppIceBoxDescriptorPtr irhs = CppIceBoxDescriptorPtr::dynamicCast(rhs); + + if(ilhs->endpoints != irhs->endpoints) + { + return false; + } + + if(ilhs->services.size() != irhs->services.size()) + { + return false; + } + + slhs = ilhs->services; + srhs = irhs->services; + } + + if(!slhs.empty()) + { + for(ServiceDescriptorSeq::const_iterator p = slhs.begin(); p != slhs.end(); ++p) + { + bool found = false; + for(ServiceDescriptorSeq::const_iterator q = srhs.begin(); q != srhs.end(); ++q) + { + if((*p)->name == (*q)->name) + { + if(!equal(*p, *q)) + { + return false; + } + found = true; + break; + } + } + if(!found) + { + return false; + } + } + } + + return true; +} diff --git a/cpp/src/IcePack/DescriptorUtil.h b/cpp/src/IcePack/DescriptorUtil.h new file mode 100644 index 00000000000..6165b995eed --- /dev/null +++ b/cpp/src/IcePack/DescriptorUtil.h @@ -0,0 +1,22 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#ifndef ICEPACK_DESCRIPTOR_UTIL_H +#define ICEPACK_DESCRIPTOR_UTIL_H + +#include <IcePack/Admin.h> + +namespace IcePack +{ + +bool equal(const ServerDescriptorPtr&, const ServerDescriptorPtr&); + +} + +#endif diff --git a/cpp/src/IcePack/DescriptorVisitor.cpp b/cpp/src/IcePack/DescriptorVisitor.cpp new file mode 100644 index 00000000000..879e129264b --- /dev/null +++ b/cpp/src/IcePack/DescriptorVisitor.cpp @@ -0,0 +1,176 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <Ice/Ice.h> +#include <IcePack/Admin.h> +#include <IcePack/DescriptorVisitor.h> + +using namespace std; +using namespace Ice; +using namespace IcePack; + +ApplicationWrapper::ApplicationWrapper(const ApplicationDescriptorPtr& descriptor) : _descriptor(descriptor) +{ +} + +void +ApplicationWrapper::visit(DescriptorVisitor& visitor) +{ + if(visitor.visitApplicationStart(*this, _descriptor)) + { + for(ServerDescriptorSeq::const_iterator p = _descriptor->servers.begin(); p != _descriptor->servers.end(); ++p) + { + ServerWrapper(*p).visit(visitor); + } + visitor.visitApplicationEnd(*this, _descriptor); + } +} + +const ApplicationDescriptorPtr& +ApplicationWrapper::getDescriptor() const +{ + return _descriptor; +} + +ComponentWrapper::ComponentWrapper(const ComponentDescriptorPtr& descriptor) : _descriptor(descriptor) +{ +} + +void +ComponentWrapper::visit(DescriptorVisitor& visitor) +{ + for(AdapterDescriptorSeq::const_iterator p = _descriptor->adapters.begin(); p != _descriptor->adapters.end(); ++p) + { + AdapterWrapper(*this, *p).visit(visitor); + } + + for(DbEnvDescriptorSeq::const_iterator q = _descriptor->dbEnvs.begin(); q != _descriptor->dbEnvs.end(); ++q) + { + DbEnvWrapper(*this, *q).visit(visitor); + } +} + +ServerWrapper::ServerWrapper(const ServerDescriptorPtr& descriptor) : + ComponentWrapper(descriptor), + _descriptor(descriptor) +{ +} + +void +ServerWrapper::visit(DescriptorVisitor& visitor) +{ + if(visitor.visitServerStart(*this, _descriptor)) + { + ComponentWrapper::visit(visitor); + + CppIceBoxDescriptorPtr cppIceBox = CppIceBoxDescriptorPtr::dynamicCast(_descriptor); + JavaIceBoxDescriptorPtr javaIceBox = JavaIceBoxDescriptorPtr::dynamicCast(_descriptor); + + const ServiceDescriptorSeq& services = + cppIceBox ? cppIceBox->services : (javaIceBox ? javaIceBox->services : ServiceDescriptorSeq()); + + for(ServiceDescriptorSeq::const_iterator p = services.begin(); p != services.end(); ++p) + { + ServiceWrapper(*this, *p).visit(visitor); + } + visitor.visitServerEnd(*this, _descriptor); + } +} + +const ServerDescriptorPtr& +ServerWrapper::getDescriptor() const +{ + return _descriptor; +} + +ServiceWrapper::ServiceWrapper(const ServerWrapper& server, const ServiceDescriptorPtr& descriptor) : + ComponentWrapper(descriptor), + _server(server), + _descriptor(descriptor) +{ +} + +void +ServiceWrapper::visit(DescriptorVisitor& visitor) +{ + if(visitor.visitServiceStart(*this, _descriptor)) + { + ComponentWrapper::visit(visitor); + visitor.visitServiceEnd(*this, _descriptor); + } +} + +const ServiceDescriptorPtr& +ServiceWrapper::getDescriptor() const +{ + return _descriptor; +} + +DbEnvWrapper::DbEnvWrapper(const ComponentWrapper& component, const DbEnvDescriptor& descriptor) : + _component(component), + _descriptor(descriptor) +{ +} + +void +DbEnvWrapper::visit(DescriptorVisitor& visitor) +{ + visitor.visitDbEnv(*this, _descriptor); +} + +const DbEnvDescriptor& +DbEnvWrapper::getDescriptor() const +{ + return _descriptor; +} + +AdapterWrapper::AdapterWrapper(const ComponentWrapper& component, const AdapterDescriptor& descriptor) : + _component(component), + _descriptor(descriptor) +{ +} + +void +AdapterWrapper::visit(DescriptorVisitor& visitor) +{ + if(visitor.visitAdapterStart(*this, _descriptor)) + { + for(ObjectDescriptorSeq::const_iterator p = _descriptor.objects.begin(); p != _descriptor.objects.end(); ++p) + { + ObjectWrapper(*this, *p).visit(visitor); + } + visitor.visitAdapterEnd(*this, _descriptor); + } +} + +const AdapterDescriptor& +AdapterWrapper::getDescriptor() const +{ + return _descriptor; +} + +ObjectWrapper::ObjectWrapper(const AdapterWrapper& adapter, const ObjectDescriptor& descriptor): + _adapter(adapter), + _descriptor(descriptor) +{ +} + +void +ObjectWrapper::visit(DescriptorVisitor& visitor) +{ + visitor.visitObject(*this, _descriptor); +} + +const ObjectDescriptor& +ObjectWrapper::getDescriptor() const +{ + return _descriptor; +} + + diff --git a/cpp/src/IcePack/DescriptorVisitor.h b/cpp/src/IcePack/DescriptorVisitor.h new file mode 100644 index 00000000000..cecd07f002d --- /dev/null +++ b/cpp/src/IcePack/DescriptorVisitor.h @@ -0,0 +1,147 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#ifndef ICEPACK_DESCRIPTOR_VISITOR_H +#define ICEPACK_DESCRIPTOR_VISITOR_H + +namespace IcePack +{ + +class ApplicationWrapper; +class ServerWrapper; +class ServiceWrapper; +class AdapterWrapper; +class ObjectWrapper; +class DbEnvWrapper; + +class DescriptorVisitor +{ +public: + + virtual ~DescriptorVisitor() { } + + virtual bool visitApplicationStart(const ApplicationWrapper&, const ApplicationDescriptorPtr&) { return true; } + virtual void visitApplicationEnd(const ApplicationWrapper&, const ApplicationDescriptorPtr&) { } + virtual bool visitServerStart(const ServerWrapper&, const ServerDescriptorPtr&) { return true; } + virtual void visitServerEnd(const ServerWrapper&, const ServerDescriptorPtr&) { } + virtual bool visitServiceStart(const ServiceWrapper&, const ServiceDescriptorPtr&) { return true; } + virtual void visitServiceEnd(const ServiceWrapper&, const ServiceDescriptorPtr&) { } + virtual bool visitAdapterStart(const AdapterWrapper&, const AdapterDescriptor&) { return true; } + virtual void visitAdapterEnd(const AdapterWrapper&, const AdapterDescriptor&) { } + virtual void visitDbEnv(const DbEnvWrapper&, const DbEnvDescriptor&) { } + virtual void visitObject(const ObjectWrapper&, const ObjectDescriptor&) { } +}; + +class ApplicationWrapper +{ +public: + + ApplicationWrapper(const ApplicationDescriptorPtr&); + + void visit(DescriptorVisitor&); + const ApplicationDescriptorPtr& getDescriptor() const; + +private: + + const ApplicationDescriptorPtr _descriptor; +}; + +class ComponentWrapper +{ +public: + + ComponentWrapper(const ComponentDescriptorPtr&); + + void visit(DescriptorVisitor&); + +private: + + ComponentDescriptorPtr _descriptor; + +}; + +class ServerWrapper : public ComponentWrapper +{ +public: + + ServerWrapper(const ServerDescriptorPtr&); + + void visit(DescriptorVisitor&); + const ServerDescriptorPtr& getDescriptor() const; + +private: + + ServerDescriptorPtr _descriptor; +}; + +class ServiceWrapper : public ComponentWrapper +{ +public: + + ServiceWrapper(const ServerWrapper&, const ServiceDescriptorPtr&); + + void visit(DescriptorVisitor&); + const ServiceDescriptorPtr& getDescriptor() const; + +private: + + const ServerWrapper& _server; + ServiceDescriptorPtr _descriptor; +}; + +class DbEnvWrapper +{ +public: + + DbEnvWrapper(const ComponentWrapper&, const DbEnvDescriptor&); + + void visit(DescriptorVisitor&); + const DbEnvDescriptor& getDescriptor() const; + +private: + + const ComponentWrapper& _component; + const DbEnvDescriptor& _descriptor; +}; + +class AdapterWrapper +{ +public: + + AdapterWrapper(const ComponentWrapper&, const AdapterDescriptor&); + + void visit(DescriptorVisitor&); + const AdapterDescriptor& getDescriptor() const; + +private: + + const ComponentWrapper& _component; + const AdapterDescriptor& _descriptor; +}; + +class ObjectWrapper +{ +public: + + ObjectWrapper(const AdapterWrapper&, const ObjectDescriptor&); + + void visit(DescriptorVisitor&); + const ObjectDescriptor& getDescriptor() const; + +private: + + const AdapterWrapper& _adapter; + const ObjectDescriptor& _descriptor; +}; + +} + +#endif + + diff --git a/cpp/src/IcePack/Grammar.y b/cpp/src/IcePack/Grammar.y index a571aeb8ea7..01810a77ccc 100644 --- a/cpp/src/IcePack/Grammar.y +++ b/cpp/src/IcePack/Grammar.y @@ -61,6 +61,8 @@ yyerror(const char* s) %token ICE_PACK_SHOW %token ICE_PACK_COPYING %token ICE_PACK_WARRANTY +%token ICE_PACK_DIFF +%token ICE_PACK_UPDATE %% @@ -105,6 +107,22 @@ command { parser->removeApplication($3); } +| ICE_PACK_APPLICATION ICE_PACK_DIFF strings ';' +{ + parser->diffApplication($3); +} +| ICE_PACK_APPLICATION ICE_PACK_UPDATE strings ';' +{ + parser->updateApplication($3); +} +| ICE_PACK_APPLICATION ICE_PACK_DESCRIBE strings ';' +{ + parser->describeApplication($3); +} +| ICE_PACK_APPLICATION ICE_PACK_LIST ';' +{ + parser->listAllApplications(); +} | ICE_PACK_NODE ICE_PACK_PING strings ';' { parser->pingNode($3); @@ -113,6 +131,10 @@ command { parser->shutdownNode($3); } +| ICE_PACK_NODE ICE_PACK_REMOVE strings ';' +{ + parser->removeNode($3); +} | ICE_PACK_NODE ICE_PACK_LIST ';' { parser->listAllNodes(); @@ -121,6 +143,14 @@ command { parser->addServer($3); } +| ICE_PACK_SERVER ICE_PACK_UPDATE strings ';' +{ + parser->updateServer($3); +} +| ICE_PACK_SERVER ICE_PACK_DESCRIBE strings ';' +{ + parser->describeServer($3); +} | ICE_PACK_SERVER ICE_PACK_START strings ';' { parser->startServer($3); @@ -141,10 +171,6 @@ command { parser->writeMessage($3, 2); } -| ICE_PACK_SERVER ICE_PACK_DESCRIBE strings ';' -{ - parser->describeServer($3); -} | ICE_PACK_SERVER ICE_PACK_STATE strings ';' { parser->stateServer($3); diff --git a/cpp/src/IcePack/IcePackNode.cpp b/cpp/src/IcePack/IcePackNode.cpp index 3cd502fdce9..19ab674c7cc 100644 --- a/cpp/src/IcePack/IcePackNode.cpp +++ b/cpp/src/IcePack/IcePackNode.cpp @@ -7,20 +7,18 @@ // // ********************************************************************** +#include <IceUtil/UUID.h> #include <Ice/Ice.h> #include <Ice/Service.h> #include <IcePack/Activator.h> #include <IcePack/WaitQueue.h> #include <IcePack/Registry.h> -#include <IcePack/ActivatorI.h> #include <IcePack/ServerFactory.h> #include <IcePack/AdapterFactory.h> -#include <IcePack/ServerDeployerI.h> #include <IcePack/AdapterI.h> #include <IcePack/NodeI.h> -#include <IcePack/NodeInfo.h> #include <IcePack/TraceLevels.h> -#include <IceUtil/UUID.h> +#include <IcePack/DescriptorParser.h> #ifdef _WIN32 # include <direct.h> @@ -125,6 +123,7 @@ IcePack::NodeService::start(int argc, char* argv[]) #endif bool nowarn = false; + bool checkdb = false; string descriptor; vector<string> targets; for(int i = 1; i < argc; ++i) @@ -159,6 +158,10 @@ IcePack::NodeService::start(int argc, char* argv[]) targets.push_back(argv[i]); } } + else if(strcmp(argv[i], "--checkdb") == 0) + { + checkdb = true; + } } Ice::PropertiesPtr properties = communicator()->getProperties(); @@ -184,12 +187,6 @@ IcePack::NodeService::start(int argc, char* argv[]) // if(properties->getPropertyAsInt("IcePack.Node.CollocateRegistry") > 0) { - _registry = auto_ptr<Registry>(new Registry(communicator())); - if(!_registry->start(nowarn, true)) - { - return false; - } - // // The node needs a different thread pool to avoid // deadlocks in connection validation. @@ -207,6 +204,12 @@ IcePack::NodeService::start(int argc, char* argv[]) properties->setProperty("Ice.ThreadPool.Server.Size", os2.str()); } + _registry = auto_ptr<Registry>(new Registry(communicator())); + if(!_registry->start(nowarn, true)) + { + return false; + } + // // Set the Ice.Default.Locator property to point to the // collocated locator (this property is passed by the @@ -260,6 +263,7 @@ IcePack::NodeService::start(int argc, char* argv[]) envName = dataPath + "db"; string serversPath = dataPath + "servers"; + string tmpPath = dataPath + "tmp"; #ifdef _WIN32 if(::_stat(envName.c_str(), &filestat) != 0) @@ -270,6 +274,10 @@ IcePack::NodeService::start(int argc, char* argv[]) { _mkdir(serversPath.c_str()); } + if(::_stat(tmpPath.c_str(), &filestat) != 0) + { + _mkdir(tmpPath.c_str()); + } #else if(::stat(envName.c_str(), &filestat) != 0) { @@ -279,6 +287,10 @@ IcePack::NodeService::start(int argc, char* argv[]) { mkdir(serversPath.c_str(), 0755); } + if(::stat(tmpPath.c_str(), &filestat) != 0) + { + mkdir(tmpPath.c_str(), 0755); + } #endif } @@ -310,7 +322,7 @@ IcePack::NodeService::start(int argc, char* argv[]) // Set the adapter id for this node and create the node object // adapter. // - properties->setProperty("IcePack.Node.AdapterId", "IcePack.Node-" + name); + properties->setProperty("IcePack.Node.AdapterId", "IcePack.Node." + name); Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("IcePack.Node"); @@ -319,7 +331,7 @@ IcePack::NodeService::start(int argc, char* argv[]) // // Create the activator. // - _activator = new ActivatorI(traceLevels, properties); + _activator = new Activator(traceLevels, properties); // // Create the wait queue. @@ -334,25 +346,9 @@ IcePack::NodeService::start(int argc, char* argv[]) // ServerFactoryPtr serverFactory = new ServerFactory(adapter, traceLevels, envName, _activator, _waitQueue); - // - // Create the node object and the node info. Because of circular - // dependencies on the node info we need to create the proxy for - // the server registry and deployer now. - // - Ice::Identity deployerId; - deployerId.name = IceUtil::generateUUID(); - - NodePtr node = new NodeI(_activator, name, ServerDeployerPrx::uncheckedCast(adapter->createProxy(deployerId))); + NodePtr node = new NodeI(_activator, name, serverFactory, properties); NodePrx nodeProxy = NodePrx::uncheckedCast(adapter->addWithUUID(node)); - NodeInfoPtr nodeInfo = new NodeInfo(communicator(), serverFactory, node, traceLevels); - - // - // Create the server deployer. - // - ServerDeployerPtr deployer = new ServerDeployerI(nodeInfo); - adapter->add(deployer, deployerId); - // // Register this node with the node registry. // @@ -374,6 +370,14 @@ IcePack::NodeService::start(int argc, char* argv[]) } // + // Check the consistency of the databases. + // + if(checkdb) + { + serverFactory->checkConsistency(); + } + + // // Start the activator. // _activator->start(); @@ -405,20 +409,15 @@ IcePack::NodeService::start(int argc, char* argv[]) { try { - admin->addApplication(descriptor, targets); - } - catch(const ServerDeploymentException& ex) - { - ostringstream ostr; - ostr << "failed to deploy application `" << descriptor << "':" << endl - << ex << ": " << ex.server << ": " << ex.reason; - warning(ostr.str()); + map<string, string> vars; + admin->addApplication( + DescriptorParser::parseApplicationDescriptor(descriptor, targets, vars, communicator())); } catch(const DeploymentException& ex) { ostringstream ostr; ostr << "failed to deploy application `" << descriptor << "':" << endl - << ex << ": " << ex.component << ": " << ex.reason; + << ex << ": " << ex.reason; warning(ostr.str()); } catch(const Ice::LocalException& ex) @@ -503,7 +502,8 @@ IcePack::NodeService::usage(const string& appName) "\n" "--deploy DESCRIPTOR [TARGET1 [TARGET2 ...]]\n" " Deploy descriptor in file DESCRIPTOR, with\n" - " optional targets."; + " optional targets.\n" + "--checkdb Do a consistency check of the node database."; #ifdef _WIN32 if(checkSystem()) { diff --git a/cpp/src/IcePack/Internal.ice b/cpp/src/IcePack/Internal.ice index 7b3d7869727..74b821d4679 100644 --- a/cpp/src/IcePack/Internal.ice +++ b/cpp/src/IcePack/Internal.ice @@ -18,13 +18,6 @@ module IcePack { -struct ObjectDescription -{ - Object* proxy; - string type; - string adapterId; -}; - /** * * The object registry interface. @@ -37,7 +30,7 @@ interface ObjectRegistry * Add an object to the registry. * **/ - void add(ObjectDescription desc) + void add(ObjectDescriptor desc) throws ObjectExistsException; /** @@ -53,7 +46,7 @@ interface ObjectRegistry * Find an object by identity and returns its description. * **/ - nonmutating ObjectDescription getObjectDescription(Ice::Identity id) + nonmutating ObjectDescriptor getObjectDescriptor(Ice::Identity id) throws ObjectNotExistException; /** @@ -160,7 +153,7 @@ interface AdapterRegistry * Remove an adapter from the registry. * **/ - void remove(string id) + Adapter* remove(string id) throws AdapterNotExistException; /** @@ -208,6 +201,13 @@ class ServerAdapter implements Adapter { /** * + * Returns the adaper id. + * + **/ + string getId(); + + /** + * * The adapter server. * **/ @@ -226,21 +226,12 @@ class ServerAdapter implements Adapter * A sequence of server adapter proxies. * **/ -sequence<ServerAdapter*> ServerAdapters; +dictionary<Ice::Identity, ServerAdapter*> ServerAdapterPrxDict; class Server { /** * - * Server description. - * - * @return The server description. - * - **/ - ServerDescription getServerDescription(); - - /** - * * Start the server. * * @param mode The activation mode requested, start returns false @@ -269,7 +260,8 @@ class Server * Send signal to the server * **/ - void sendSignal(string signal) throws BadSignalException; + void sendSignal(string signal) + throws BadSignalException; /** * @@ -317,6 +309,13 @@ class Server /** * + * Get the descriptor used to deploy this server. + * + **/ + ServerDescriptor getDescriptor(); + + /** + * * Set the server activation mode. * **/ @@ -338,33 +337,103 @@ class Server /** * - * Get the proxy for the server's process. + * Set the server executable path. + * + **/ + void setExePath(string name); + + /** + * + * Set the path of the server working directory. + * + **/ + void setPwd(string path); + + /** + * + * Set the server environment variables. + * + **/ + void setEnvs(Ice::StringSeq envs); + + /** + * + * Set the server command line options. + * + **/ + void setOptions(Ice::StringSeq options); + + /** + * + * Add an adapter to this server. + * + **/ + void addAdapter(ServerAdapter* adapter, bool registerProcess) + throws DeploymentException; + + /** + * + * Remove an adapter from this server. * **/ - Ice::Process* getProcess(); + void removeAdapter(ServerAdapter* adapter); /** - * - * The description of this server. * - * @return The server description. + * Add a configuration file. * - */ - ServerDescription description; + **/ + string addConfigFile(string name, PropertyDescriptorSeq properties) + throws DeploymentException; /** * - * The server adapter proxies. + * Remove a configuration file. * **/ - ServerAdapters adapters; + void removeConfigFile(string name); /** * - * The server activation mode. + * Add a database environment. * **/ + string addDbEnv(DbEnvDescriptor dbEnv, string path) + throws DeploymentException; + + /** + * + * Remove a database environment. + * + **/ + void removeDbEnv(DbEnvDescriptor dbEnv, string path); + + /** The server name. */ + string name; + + /** The path of the server executable. */ + string exePath; + + /** The server environment variables. */ + Ice::StringSeq envs; + + /** The server command line options. */ + Ice::StringSeq options; + + /** The path to the server working directory. */ + string pwd; + + /** The server adapter proxies. */ + ServerAdapterPrxDict adapters; + + /** The server activation mode. */ ServerActivation activation; + + /** True if an adapter is configured to register a process object. */ + bool processRegistered; + + /** The descriptor used to deploy this server. */ + ServerDescriptor descriptor; }; /** @@ -384,7 +453,7 @@ interface ServerRegistry * Add a server to the registry. * **/ - void add(string name, Server* svr) + void add(string name, Server* svr, ServerDescriptor descriptor) throws ServerExistsException; /** @@ -392,7 +461,7 @@ interface ServerRegistry * Remove a server from the registry. * **/ - void remove(string name) + Server* remove(string name) throws ServerNotExistException; /** @@ -409,72 +478,132 @@ interface ServerRegistry /** * + * Get a server descriptor. + * + **/ + ServerDescriptor getDescriptor(string name) + throws ServerNotExistException; + + /** + * * Get all the server names. * **/ nonmutating Ice::StringSeq getAll(); + + /** + * + * Get all the server descriptors for servers deployed on the given node. + * + **/ + nonmutating ServerDescriptorSeq getAllDescriptorsOnNode(string node); }; -interface ServerDeployer +/** + * + * This exception is raised if a server with the same name already + * exists. + * + **/ +exception ApplicationExistsException +{ +}; + +interface ApplicationRegistry { /** * - * Deploy a new server. [add] will create and register a new - * server with the server registry. The server components - * described in the given XML descriptor file will also be created - * or registered with the appropriate services. + * Add an application to the registry. * - * @param name The server name. + **/ + void add(string name) + throws ApplicationExistsException; + + /** * - * @param xmlfile Path to the XML file containing the server - * deployment descriptor. + * Remove an application from the registry. * - * @param binPath The server path. For C++ servers, this is the - * path of the executable. For C++ icebox, this is the path of the - * C++ icebox executable or if empty IcePack will rely on the path - * to find it. For Java server or Java icebox, this is the path of - * the java command or if empty IcePack will rely on the path to - * find it. + **/ + void remove(string name) + throws ApplicationNotExistException; + + /** * - * @param libPath Specify the CLASSPATH value for Java servers, - * ignored for C++ servers. + * Register a server with the given application. * - * @param targets The optional targets to be executed during the - * deployment. + **/ + void registerServer(string application, string name) + throws ApplicationNotExistException; + + /** + * + * Unregister a server from the given application. * **/ - void add(string name, string xmlfile, string binPath, string libPath, Ice::StringSeq targets) - throws DeploymentException; + void unregisterServer(string application, string name) + throws ApplicationNotExistException; /** * - * Remove a server. [remove] will destroy the server and - * unregister it from the server registry. The server components - * described in the given XML descriptor file will also be - * destroyed or unregistered with the appropriate services. + * Get an application descriptor. * - * @param name The server name. + **/ + ApplicationDescriptor getDescriptor(string name) + throws ApplicationNotExistException; + + /** + * + * Get all the application names. * **/ - void remove(string name) - throws DeploymentException; + nonmutating Ice::StringSeq getAll(); }; interface Node { /** * - * Get the node name. + * Create a new server on this node. + * + * @param The name of the server. + * + * @param The descriptor of the server. * **/ - nonmutating string getName(); + nonmutating Server* createServer(string name, ServerDescriptor desc) + throws DeploymentException; /** * - * Get the node server deployer. + * Create a new adapter of a given server on this node. + * + * @param server The server associted to the adapter. + * + * @param id The id of the adapter. * **/ - nonmutating ServerDeployer* getServerDeployer(); + nonmutating ServerAdapter* createServerAdapter(Server* srv, string id); + + /** + * + * Create a temporary directory. + * + **/ + nonmutating string createTmpDir(); + + /** + * + * Destroy a temporary directory. + * + **/ + nonmutating void destroyTmpDir(string path); + + /** + * + * Get the node name. + * + **/ + nonmutating string getName(); /** * diff --git a/cpp/src/IcePack/LocatorI.cpp b/cpp/src/IcePack/LocatorI.cpp index 354e1c5b939..56f2cb1c4e6 100644 --- a/cpp/src/IcePack/LocatorI.cpp +++ b/cpp/src/IcePack/LocatorI.cpp @@ -175,10 +175,10 @@ void IcePack::LocatorI::findObjectById_async(const Ice::AMD_Locator_findObjectByIdPtr& response, const Ice::Identity& id, const Ice::Current& current) const { - ObjectDescription obj; + ObjectDescriptor obj; try { - obj = _objectRegistry->getObjectDescription(id); + obj = _objectRegistry->getObjectDescriptor(id); } catch(const ObjectNotExistException&) { diff --git a/cpp/src/IcePack/Makefile b/cpp/src/IcePack/Makefile index 933db49c224..f57f5015dfd 100644 --- a/cpp/src/IcePack/Makefile +++ b/cpp/src/IcePack/Makefile @@ -27,38 +27,40 @@ LIB_OBJS = Admin.o \ ADMIN_OBJS = Grammar.o \ Scanner.o \ Parser.o \ + DescriptorVisitor.o \ + DescriptorParser.o \ + DescriptorUtil.o \ Client.o COMMON_OBJS = Internal.o \ - TraceLevels.o \ - ComponentBuilder.o + TraceLevels.o -NODE_OBJS = NodeInfo.o \ - NodeI.o \ - ServiceBuilder.o \ - ServerBuilder.o \ +NODE_OBJS = NodeI.o \ + ServerFactory.o \ ServerI.o \ ServerAdapterI.o \ - ServerFactory.o \ - ServerDeployerI.o \ Activator.o \ - ActivatorI.o \ - WaitQueue.o + WaitQueue.o \ + DescriptorParser.o REGISTRY_OBJS = Registry.o \ ObjectRegistryI.o \ AdapterRegistryI.o \ ServerRegistryI.o \ NodeRegistryI.o \ + ApplicationRegistryI.o \ StringObjectProxyDict.o \ StringObjectProxySeqDict.o \ + StringServerDescriptorDict.o \ + StringStringSeqDict.o \ IdentityObjectDescDict.o \ LocatorI.o \ LocatorRegistryI.o \ - ApplicationBuilder.o \ AdapterFactory.o \ AdapterI.o \ AdminI.o \ + DescriptorVisitor.o \ + DescriptorUtil.o \ QueryI.o NODE_SVR_OBJS = $(COMMON_OBJS) \ @@ -82,8 +84,7 @@ SRCS = $(LIB_OBJS:.o=.cpp) \ SLICE_SRCS = $(SDIR)/Admin.ice \ $(SDIR)/Exception.ice \ $(SDIR)/Query.ice \ - Internal.ice \ - Activator.ice + Internal.ice HDIR = $(includedir)/IcePack LOCAL_HDIR = ../IcePack @@ -113,7 +114,7 @@ $(libdir)/$(LIBNAME): $(libdir)/$(SONAME) $(ADMIN): $(ADMIN_OBJS) $(libdir)/$(LIBNAME) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(ADMIN_OBJS) -lIcePack -lIceBox $(LIBS) $(READLINE_LIBS) + $(CXX) $(LDFLAGS) -o $@ $(ADMIN_OBJS) -lIceXML -lIcePack -lIceBox $(LIBS) $(READLINE_LIBS) $(REGISTRY_SERVER): $(REGISTRY_SVR_OBJS) $(libdir)/$(LIBNAME) rm -f $@ @@ -136,9 +137,25 @@ $(LOCAL_HDIR)/StringObjectProxyDict.h StringObjectProxyDict.cpp: $(SLICE2FREEZE) clean:: rm -f StringObjectProxyDict.h StringObjectProxyDict.cpp +$(LOCAL_HDIR)/StringStringSeqDict.h StringStringSeqDict.cpp: $(SLICE2FREEZE) + rm -f StringStringSeqDict.h StringStringSeqDict.cpp + $(SLICE2FREEZECMD) --dict IcePack::StringStringSeqDict,string,Ice::StringSeq \ + StringStringSeqDict ../../slice/Ice/BuiltinSequences.ice + +clean:: + rm -f StringStringSeqDict.h StringStringSeqDict.cpp + +$(LOCAL_HDIR)/StringServerDescriptorDict.h StringServerDescriptorDict.cpp: $(SLICE2FREEZE) + rm -f StringServerDescriptorDict.h StringServerDescriptorDict.cpp + $(SLICE2FREEZECMD) --dict IcePack::StringServerDescriptorDict,string,IcePacK::ServerDescriptor \ + StringServerDescriptorDict ../../slice/IcePack/Admin.ice + +clean:: + rm -f StringServerDescriptorDict.h StringServerDescriptorDict.cpp + $(LOCAL_HDIR)/IdentityObjectDescDict.h IdentityObjectDescDict.cpp: $(SLICE2FREEZE) rm -f IdentityObjectDescDict.h IdentityObjectDescDict.cpp - $(SLICE2FREEZECMD) --dict IcePack::IdentityObjectDescDict,Ice::Identity,IcePack::ObjectDescription \ + $(SLICE2FREEZECMD) --dict IcePack::IdentityObjectDescDict,Ice::Identity,IcePack::ObjectDescriptor \ IdentityObjectDescDict ../../slice/Ice/Identity.ice $(LOCAL_SDIR)/Internal.ice clean:: diff --git a/cpp/src/IcePack/NodeI.cpp b/cpp/src/IcePack/NodeI.cpp index 4243b7ec0d1..bf710d885f4 100644 --- a/cpp/src/IcePack/NodeI.cpp +++ b/cpp/src/IcePack/NodeI.cpp @@ -7,33 +7,72 @@ // // ********************************************************************** +#include <IceUtil/UUID.h> #include <Ice/Ice.h> #include <IcePack/NodeI.h> +#include <IcePack/Activator.h> +#include <IcePack/ServerFactory.h> + +#include <sys/types.h> +#include <sys/stat.h> + +#ifdef _WIN32 +# include <direct.h> +#endif using namespace std; using namespace IcePack; -IcePack::NodeI::NodeI(const ActivatorPtr& activator, const string& name, const ServerDeployerPrx& deployer) : +NodeI::NodeI(const ActivatorPtr& activator, + const string& name, + const ServerFactoryPtr& factory, + const Ice::PropertiesPtr& properties) : _activator(activator), _name(name), - _deployer(deployer) + _factory(factory) { + _tmpDir = properties->getProperty("IcePack.Node.Data"); + _tmpDir = _tmpDir + (_tmpDir[_tmpDir.length() - 1] == '/' ? "" : "/") + "tmp/"; } -std::string -IcePack::NodeI::getName(const Ice::Current&) const +ServerPrx +NodeI::createServer(const string& name, const ServerDescriptorPtr& desc, const ::Ice::Current&) const { - return _name; + return _factory->createServer(name, desc); +} + +ServerAdapterPrx +NodeI::createServerAdapter(const ServerPrx& server, const string& id, const ::Ice::Current&) const +{ + return _factory->createServerAdapter(id, server); +} + +string +NodeI::createTmpDir(const Ice::Current&) const +{ + string dir = _tmpDir + IceUtil::generateUUID(); +#ifdef _WIN32 + _mkdir(dir.c_str()); +#else + mkdir(dir.c_str(), 0755); +#endif + return dir; +} + +void +NodeI::destroyTmpDir(const string& path, const Ice::Current&) const +{ + rmdir(path.c_str()); } -ServerDeployerPrx -IcePack::NodeI::getServerDeployer(const Ice::Current&) const +std::string +NodeI::getName(const Ice::Current&) const { - return _deployer; + return _name; } void -IcePack::NodeI::shutdown(const Ice::Current&) const +NodeI::shutdown(const Ice::Current&) const { _activator->shutdown(); } diff --git a/cpp/src/IcePack/NodeI.h b/cpp/src/IcePack/NodeI.h index 38361cb6c80..d93cb65de03 100644 --- a/cpp/src/IcePack/NodeI.h +++ b/cpp/src/IcePack/NodeI.h @@ -11,27 +11,37 @@ #define ICE_PACK_NODE_I_H #include <IcePack/Internal.h> -#include <IcePack/Activator.h> namespace IcePack { +class Activator; +typedef IceUtil::Handle<Activator> ActivatorPtr; + +class ServerFactory; +typedef IceUtil::Handle<ServerFactory> ServerFactoryPtr; + class NodeI : public Node { public: - NodeI(const ActivatorPtr&, const std::string&, const ServerDeployerPrx&); + NodeI(const ActivatorPtr&, const std::string&, const ServerFactoryPtr&, const Ice::PropertiesPtr&); - virtual std::string getName(const Ice::Current& = Ice::Current()) const; - virtual IcePack::ServerDeployerPrx getServerDeployer(const Ice::Current& = Ice::Current()) const; - virtual void shutdown(const Ice::Current& = Ice::Current()) const; + virtual ServerPrx createServer(const std::string&, const ServerDescriptorPtr&, const Ice::Current&) const; + virtual ServerAdapterPrx createServerAdapter(const ServerPrx&, const std::string&, const Ice::Current&) const; -private: + virtual std::string createTmpDir(const Ice::Current&) const; + virtual void destroyTmpDir(const std::string&, const Ice::Current&) const; - ActivatorPtr _activator; - std::string _name; - ServerDeployerPrx _deployer; + virtual std::string getName(const Ice::Current&) const; + virtual void shutdown(const Ice::Current&) const; + +private: + const ActivatorPtr _activator; + const std::string _name; + const ServerFactoryPtr _factory; + std::string _tmpDir; }; } diff --git a/cpp/src/IcePack/NodeInfo.cpp b/cpp/src/IcePack/NodeInfo.cpp deleted file mode 100644 index 9e7963ea0bc..00000000000 --- a/cpp/src/IcePack/NodeInfo.cpp +++ /dev/null @@ -1,93 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#include <Ice/Ice.h> -#include <IcePack/NodeInfo.h> -#include <IcePack/ServerFactory.h> -#include <IcePack/TraceLevels.h> - -using namespace std; -using namespace IcePack; - -IcePack::NodeInfo::NodeInfo(const Ice::CommunicatorPtr& communicator, - const ServerFactoryPtr& serverFactory, - const NodePtr& node, - const TraceLevelsPtr& traceLevels) : - _communicator(communicator), - _serverFactory(serverFactory), - _node(node), - _traceLevels(traceLevels) -{ -} - -Ice::CommunicatorPtr -IcePack::NodeInfo::getCommunicator() const -{ - return _communicator; -} - -ServerFactoryPtr -IcePack::NodeInfo::getServerFactory() const -{ - return _serverFactory; -} - -TraceLevelsPtr -IcePack::NodeInfo::getTraceLevels() const -{ - return _traceLevels; -} - -NodePtr -IcePack::NodeInfo::getNode() const -{ - return _node; -} - -AdapterRegistryPrx -IcePack::NodeInfo::getAdapterRegistry() const -{ - try - { - return AdapterRegistryPrx::checkedCast( - _communicator->stringToProxy("IcePack/AdapterRegistry@IcePack.Registry.Internal")); - } - catch(const Ice::LocalException&) - { - return 0; - } -} - -ObjectRegistryPrx -IcePack::NodeInfo::getObjectRegistry() const -{ - try - { - return ObjectRegistryPrx::checkedCast( - _communicator->stringToProxy("IcePack/ObjectRegistry@IcePack.Registry.Internal")); - } - catch(const Ice::LocalException&) - { - return 0; - } -} - -ServerRegistryPrx -IcePack::NodeInfo::getServerRegistry() const -{ - try - { - return ServerRegistryPrx::checkedCast( - _communicator->stringToProxy("IcePack/ServerRegistry@IcePack.Registry.Internal")); - } - catch(const Ice::LocalException&) - { - return 0; - } -} diff --git a/cpp/src/IcePack/NodeInfo.h b/cpp/src/IcePack/NodeInfo.h deleted file mode 100644 index 610f4d966f1..00000000000 --- a/cpp/src/IcePack/NodeInfo.h +++ /dev/null @@ -1,51 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#ifndef ICE_PACK_NODE_INFO_H -#define ICE_PACK_NODE_INFO_H - -#include <IcePack/Internal.h> - -namespace IcePack -{ - -class ServerFactory; -typedef IceUtil::Handle<ServerFactory> ServerFactoryPtr; - -class TraceLevels; -typedef IceUtil::Handle<TraceLevels> TraceLevelsPtr; - -class NodeInfo : public ::IceUtil::Shared -{ -public: - - NodeInfo(const Ice::CommunicatorPtr&, const ServerFactoryPtr&, const NodePtr&, const TraceLevelsPtr&); - - Ice::CommunicatorPtr getCommunicator() const; - ServerFactoryPtr getServerFactory() const; - TraceLevelsPtr getTraceLevels() const; - NodePtr getNode() const; - - AdapterRegistryPrx getAdapterRegistry() const; - ObjectRegistryPrx getObjectRegistry() const; - ServerRegistryPrx getServerRegistry() const; - -private: - - Ice::CommunicatorPtr _communicator; - ServerFactoryPtr _serverFactory; - NodePtr _node; - TraceLevelsPtr _traceLevels; -}; - -typedef IceUtil::Handle<NodeInfo> NodeInfoPtr; - -} - -#endif diff --git a/cpp/src/IcePack/NodeRegistryI.cpp b/cpp/src/IcePack/NodeRegistryI.cpp index 521b059989f..14d75679d79 100644 --- a/cpp/src/IcePack/NodeRegistryI.cpp +++ b/cpp/src/IcePack/NodeRegistryI.cpp @@ -93,7 +93,7 @@ IcePack::NodeRegistryI::add(const string& name, const NodePrx& node, const Ice:: try { - _adapterRegistry->findById("IcePack.Node-" + name); + _adapterRegistry->findById("IcePack.Node." + name); // // TODO: ensure this adapter has been created by the adapter @@ -112,7 +112,7 @@ IcePack::NodeRegistryI::add(const string& name, const NodePrx& node, const Ice:: AdapterPrx adapter = _adapterFactory->createStandaloneAdapter("IcePackNodeAdapter." + name); try { - _adapterRegistry->add("IcePack.Node-" + name, adapter); + _adapterRegistry->add("IcePack.Node." + name, adapter); } catch(const AdapterExistsException&) { @@ -149,9 +149,9 @@ IcePack::NodeRegistryI::remove(const string& name, const Ice::Current&) // try { - AdapterPrx adapter = _adapterRegistry->findById("IcePack.Node-" + name); + AdapterPrx adapter = _adapterRegistry->findById("IcePack.Node." + name); adapter->destroy(); - _adapterRegistry->remove("IcePack.Node-" + name); + _adapterRegistry->remove("IcePack.Node." + name); } catch(const AdapterNotExistException&) { diff --git a/cpp/src/IcePack/ObjectRegistryI.cpp b/cpp/src/IcePack/ObjectRegistryI.cpp index 016538cd7e3..c43cc0c1931 100644 --- a/cpp/src/IcePack/ObjectRegistryI.cpp +++ b/cpp/src/IcePack/ObjectRegistryI.cpp @@ -31,7 +31,7 @@ IcePack::ObjectRegistryI::ObjectRegistryI(const Ice::CommunicatorPtr& communicat } void -IcePack::ObjectRegistryI::add(const ObjectDescription& obj, const Ice::Current&) +IcePack::ObjectRegistryI::add(const ObjectDescriptor& obj, const Ice::Current&) { IceUtil::Mutex::Lock sync(*this); @@ -50,7 +50,7 @@ IcePack::ObjectRegistryI::add(const ObjectDescription& obj, const Ice::Current&) // // Add the object to the object dictionary. // - objects.put(pair<const Ice::Identity, const ObjectDescription>(id, obj)); + objects.put(pair<const Ice::Identity, const ObjectDescriptor>(id, obj)); // // Add the object to the interface dictionary. @@ -101,7 +101,7 @@ IcePack::ObjectRegistryI::remove(const Ice::ObjectPrx& object, const Ice::Curren throw ObjectNotExistException(); } - ObjectDescription obj = p->second; + ObjectDescriptor obj = p->second; if(!obj.type.empty()) { @@ -147,8 +147,8 @@ IcePack::ObjectRegistryI::remove(const Ice::ObjectPrx& object, const Ice::Curren } } -ObjectDescription -IcePack::ObjectRegistryI::getObjectDescription(const Ice::Identity& id, const Ice::Current&) const +ObjectDescriptor +IcePack::ObjectRegistryI::getObjectDescriptor(const Ice::Identity& id, const Ice::Current&) const { Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName); IdentityObjectDescDict objects(connection, _objectsDbName); diff --git a/cpp/src/IcePack/ObjectRegistryI.h b/cpp/src/IcePack/ObjectRegistryI.h index 52973a92dcd..a75d455a26b 100644 --- a/cpp/src/IcePack/ObjectRegistryI.h +++ b/cpp/src/IcePack/ObjectRegistryI.h @@ -31,10 +31,10 @@ public: const std::string&, const TraceLevelsPtr& traceLevels); - virtual void add(const IcePack::ObjectDescription&, const ::Ice::Current&); + virtual void add(const IcePack::ObjectDescriptor&, const ::Ice::Current&); virtual void remove(const Ice::ObjectPrx&, const ::Ice::Current&); - virtual ObjectDescription getObjectDescription(const Ice::Identity&, const ::Ice::Current&) const; + virtual ObjectDescriptor getObjectDescriptor(const Ice::Identity&, const ::Ice::Current&) const; virtual Ice::ObjectPrx findById(const ::Ice::Identity&, const ::Ice::Current&) const; virtual Ice::ObjectPrx findByType(const std::string&, const ::Ice::Current&) const; diff --git a/cpp/src/IcePack/Parser.cpp b/cpp/src/IcePack/Parser.cpp index 183825eb110..f48e202d5f0 100644 --- a/cpp/src/IcePack/Parser.cpp +++ b/cpp/src/IcePack/Parser.cpp @@ -7,8 +7,13 @@ // // ********************************************************************** +#include <IceUtil/OutputUtil.h> #include <Ice/Ice.h> +#include <IceXML/Parser.h> #include <IcePack/Parser.h> +#include <IcePack/DescriptorVisitor.h> +#include <IcePack/DescriptorParser.h> +#include <IcePack/DescriptorUtil.h> #ifdef GPL_BUILD # include <IcePack/GPL.h> @@ -25,6 +30,7 @@ extern FILE* yyin; extern int yydebug; using namespace std; +using namespace IceUtil; using namespace Ice; using namespace IcePack; @@ -33,6 +39,227 @@ namespace IcePack Parser* parser; +class ServerDescribe : public DescriptorVisitor +{ +public: + + ServerDescribe(IceUtil::Output&, const Ice::CommunicatorPtr&, AdminPrx&); + + void describe(const ServerDescriptorPtr&); + +private: + + virtual bool visitServerStart(const ServerWrapper&, const ServerDescriptorPtr&); + virtual void visitServerEnd(const ServerWrapper&, const ServerDescriptorPtr&); + virtual bool visitServiceStart(const ServiceWrapper&, const ServiceDescriptorPtr&); + virtual void visitServiceEnd(const ServiceWrapper&, const ServiceDescriptorPtr&); + virtual void visitDbEnv(const DbEnvWrapper&, const DbEnvDescriptor&); + virtual bool visitAdapterStart(const AdapterWrapper&, const AdapterDescriptor&); + virtual void visitAdapterEnd(const AdapterWrapper&, const AdapterDescriptor&); + virtual void visitObject(const ObjectWrapper&, const ObjectDescriptor&); + + IceUtil::Output& _out; + Ice::CommunicatorPtr _communicator; + AdminPrx _admin; +}; + +} + +ServerDescribe::ServerDescribe(IceUtil::Output& out, const Ice::CommunicatorPtr& communicator, AdminPrx& admin) : + _out(out), + _communicator(communicator), + _admin(admin) +{ +} + +void +ServerDescribe::describe(const ServerDescriptorPtr& desc) +{ + ServerWrapper(desc).visit(*this); +} + +bool +ServerDescribe::visitServerStart(const ServerWrapper&, const ServerDescriptorPtr& server) +{ + _out << "server '" << server->name << "' "; + if(JavaServerDescriptorPtr::dynamicCast(server)) + { + if(JavaIceBoxDescriptorPtr::dynamicCast(server)) + { + _out << " (Java IceBox)"; + } + else + { + _out << " (Java)"; + } + } + else if(CppIceBoxDescriptorPtr::dynamicCast(server)) + { + _out << " (IceBox)"; + } + + _out << sb; + _out << nl << "node = '" << server->node << "'"; + _out << nl << "application = '" << server->application << "'"; + _out << nl << "exe = '" << server->exe << "'"; + if(!server->pwd.empty()) + { + _out << nl << "pwd = '" << server->pwd << "'"; + } + _out << nl << "activation = '" << (_admin->getServerActivation(server->name) == OnDemand ? "on-demand" : "manual") + << "'"; + if(JavaServerDescriptorPtr::dynamicCast(server)) + { + JavaServerDescriptorPtr s = JavaServerDescriptorPtr::dynamicCast(server); + _out << nl << "className = '" << s->className << "'"; + if(!s->jvmOptions.empty()) + { + _out << nl << "jvmOptions = '"; + for(Ice::StringSeq::const_iterator p = s->jvmOptions.begin(); p != s->jvmOptions.end(); ++p) + { + _out << *p << " "; + } + } + } + if(JavaIceBoxDescriptorPtr::dynamicCast(server)) + { + JavaIceBoxDescriptorPtr s = JavaIceBoxDescriptorPtr::dynamicCast(server); + _out << nl << "service manager endpoints = '" << s->endpoints << "'"; + } + if(CppIceBoxDescriptorPtr::dynamicCast(server)) + { + CppIceBoxDescriptorPtr s = CppIceBoxDescriptorPtr::dynamicCast(server); + _out << nl << "service manager endpoints = '" << s->endpoints << "'"; + } + if(!server->comment.empty()) + { + _out << nl << "comment"; + _out << sb; + _out << nl << server->comment; + _out << eb; + } + if(!server->options.empty()) + { + _out << nl << "options = '"; + for(Ice::StringSeq::const_iterator p = server->options.begin(); p != server->options.end(); ++p) + { + _out << *p << " "; + } + } + if(!server->envs.empty()) + { + _out << nl << "envs = '"; + for(Ice::StringSeq::const_iterator p = server->envs.begin(); p != server->envs.end(); ++p) + { + _out << *p << " "; + } + } + if(!server->properties.empty()) + { + _out << nl << "properties"; + _out << sb; + for(PropertyDescriptorSeq::const_iterator p = server->properties.begin(); p != server->properties.end(); ++p) + { + _out << nl << p->name << "=" << p->value; + } + _out << eb; + } + + return true; +} + +void +ServerDescribe::visitServerEnd(const ServerWrapper&, const ServerDescriptorPtr& server) +{ + _out << eb; + _out << nl; +} + +bool +ServerDescribe::visitServiceStart(const ServiceWrapper&, const ServiceDescriptorPtr& service) +{ + _out << nl << "service '" << service->name << "'"; + _out << sb; + _out << nl << "entry = '" << service->entry << "'"; + if(!service->comment.empty()) + { + _out << nl << "comment"; + _out << sb; + _out << nl << service->comment; + _out << eb; + } + if(!service->properties.empty()) + { + _out << nl << "properties"; + _out << sb; + for(PropertyDescriptorSeq::const_iterator p = service->properties.begin(); p != service->properties.end(); ++p) + { + _out << nl << p->name << "=" << p->value; + } + _out << eb; + } + return true; +} + +void +ServerDescribe::visitServiceEnd(const ServiceWrapper&, const ServiceDescriptorPtr& service) +{ + _out << eb; +} + +void +ServerDescribe::visitDbEnv(const DbEnvWrapper&, const DbEnvDescriptor& dbEnv) +{ + _out << nl << "database environment '" << dbEnv.name << "'"; + if(!dbEnv.dbHome.empty() || !dbEnv.properties.empty()) + { + _out << sb; + if(!dbEnv.dbHome.empty()) + { + _out << nl << "home = '" << dbEnv.dbHome << "'"; + } + if(!dbEnv.properties.empty()) + { + _out << nl << "properties"; + _out << sb; + for(PropertyDescriptorSeq::const_iterator p = dbEnv.properties.begin(); p != dbEnv.properties.end(); ++p) + { + _out << nl << p->name << "=" << p->value; + } + _out << eb; + } + _out << eb; + } +} + +bool +ServerDescribe::visitAdapterStart(const AdapterWrapper&, const AdapterDescriptor& adapter) +{ + _out << nl << "adapter '" << adapter.name << "'"; + _out << sb; + _out << nl << "id = '" << adapter.id << "'"; + _out << nl << "endpoints = '" << adapter.endpoints << "'"; + _out << nl << "register process = '" << (adapter.registerProcess ? "true" : "false") << "'"; + return true; +} + +void +ServerDescribe::visitAdapterEnd(const AdapterWrapper&, const AdapterDescriptor& adapter) +{ + _out << eb; +} + +void +ServerDescribe::visitObject(const ObjectWrapper&, const ObjectDescriptor& object) +{ + _out << nl << "object"; + if(!object.type.empty()) + { + _out << sb; + _out << nl << "proxy = '" << _communicator->proxyToString(object.proxy) << "' "; + _out << nl << "type = '" << object.type << "'"; + _out << eb; + } } ParserPtr @@ -48,25 +275,35 @@ IcePack::Parser::usage() "help Print this message.\n" "exit, quit Exit this program.\n" "\n" - "application add DESC [TARGET1 [TARGET2 ...]]\n" - " Add servers described in application descriptor\n" - " DESC. If specified the optional targets TARGET will\n" - " be deployed.\n" - "application remove DESC Remove servers described in application descriptor\n" - " DESC.\n" - "\n" + "application add DESC [TARGET ... ] [NAME=VALUE ... ]\n" + " Add application described in DESC. If specified\n" + " the optional targets TARGET will be deployed.\n" + "application remove NAME Remove application NAME.\n" + "application describe NAME Describe application NAME.\n" + "application diff DESC [TARGET ... ] [NAME=VALUE ... ]\n" + " Print the differences betwen the application\n" + " described in DESC and the current deployment.\n" + "application update DESC [TARGET ... ] [NAME=VALUE ... ]\n" + " Update the application described in DESC.\n" + "application list List all deployed applications.\n" + "\n" "node list List all registered nodes.\n" "node ping NAME Ping node NAME.\n" + "node remove NAME Remove the servers deployed on node NAME and\n" + " the node NAME.\n" "node shutdown NAME Shutdown node NAME.\n" "\n" "server list List all registered servers.\n" - "server add NODE NAME DESC [PATH [LIBPATH [TARGET1 [TARGET2 ...]]]]\n" - " Add server NAME to node NODE with deployment\n" - " descriptor DESC, optional PATH and LIBPATH. If\n" - " specified the optional targets TARGET will be\n" - " deployed.\n" + "server add DESC NODE [TARGET ... ] [NAME=VALUE ... ]\n" + " Add server described in descriptor DESC to the node\n" + " NODE. If specified the optional targets TARGET will\n" + " be deployed.\n" + "server update DESC NODE [TARGET ... ] [NAME=VALUE ... ]\n" + " Update server described in descriptor DESC on the\n" + " node NODE. If specified the optional targets TARGET\n" + " will be deployed.\n" "server remove NAME Remove server NAME.\n" - "server describe NAME Get server NAME description.\n" + "server describe NAME Describe server NAME.\n" "server state NAME Get server NAME state.\n" "server pid NAME Get server NAME pid.\n" "server start NAME Start server NAME.\n" @@ -88,13 +325,13 @@ IcePack::Parser::usage() "\n" "shutdown Shut the IcePack registry down.\n" #ifdef GPL_BUILD - "show copying Show conditions for redistributing copies of this program.\n" + "show copying Show conditions for redistributing copies of this\n" + " program.\n" "show warranty Show the warranty for this program.\n" #endif ; } - void IcePack::Parser::addApplication(const list<string>& args) { @@ -106,31 +343,40 @@ IcePack::Parser::addApplication(const list<string>& args) try { - list<string>::const_iterator p = args.begin(); + StringSeq targets; + map<string, string> vars; + list<string>::const_iterator p = args.begin(); string descriptor = *p++; - StringSeq targets; for(; p != args.end(); ++p) { - targets.push_back(*p); + string::size_type pos = p->find('='); + if(pos != string::npos) + { + vars[p->substr(0, pos)] = p->substr(pos + 1); + } + else + { + targets.push_back(*p); + } } - _admin->addApplication(descriptor, targets); + _admin->addApplication(DescriptorParser::parseApplicationDescriptor(descriptor, targets, vars, _communicator)); } - catch(const ServerDeploymentException& ex) + catch(const IceXML::ParserException& ex) { ostringstream s; - s << ex << ": " << ex.server << ":\n" << ex.reason; - error(s.str()); + s << ex; + error(s.str()); } catch(const DeploymentException& ex) { ostringstream s; - s << ex << ": " << ex.component << ":\n" << ex.reason; + s << ex << ":\n" << ex.reason; error(s.str()); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -151,17 +397,259 @@ IcePack::Parser::removeApplication(const list<string>& args) { list<string>::const_iterator p = args.begin(); + string name = *p++; + + _admin->removeApplication(name); + } + catch(const DeploymentException& ex) + { + ostringstream s; + s << ex << ":\n" << ex.reason; + error(s.str()); + } + catch(const Ice::Exception& ex) + { + ostringstream s; + s << ex; + error(s.str()); + } +} + +void +IcePack::Parser::describeApplication(const list<string>& args) +{ + if(args.size() < 1) + { + error("`application describe' requires at exactly one argument\n(`help' for more info)"); + return; + } + + try + { + list<string>::const_iterator p = args.begin(); + + string name = *p++; + + ApplicationDescriptorPtr application = _admin->getApplicationDescriptor(name); + + IceUtil::Output out(cout); + out << "application '" << application->name << "'"; + out << sb; + if(!application->comment.empty()) + { + out << nl << "comment = " << application->comment; + } + if(!application->servers.empty()) + { + map<string, set<string> > servers; + { + for(ServerDescriptorSeq::const_iterator p = application->servers.begin(); + p != application->servers.end(); + ++p) + { + map<string, set<string> >::iterator q = servers.find((*p)->node); + if(q == servers.end()) + { + q = servers.insert(make_pair((*p)->node, set<string>())).first; + } + q->second.insert((*p)->name); + } + } + { + for(map<string, set<string> >::const_iterator p = servers.begin(); p != servers.end(); ++p) + { + out << nl << "node '" << p->first << "'"; + out << sb; + for(set<string>::const_iterator q = p->second.begin(); q != p->second.end(); ++q) + { + out << nl << *q; + } + out << eb; + } + } + } + out << eb; + out << nl; + } + catch(const DeploymentException& ex) + { + ostringstream s; + s << ex << ":\n" << ex.reason; + error(s.str()); + } + catch(const Ice::Exception& ex) + { + ostringstream s; + s << ex; + error(s.str()); + } +} + +void +IcePack::Parser::diffApplication(const list<string>& args) +{ + if(args.size() < 1) + { + error("`application diff' requires at exactly one argument\n(`help' for more info)"); + return; + } + + ApplicationDescriptorPtr newApp; + ApplicationDescriptorPtr origApp; + + try + { + StringSeq targets; + map<string, string> vars; + + list<string>::const_iterator p = args.begin(); string descriptor = *p++; - _admin->removeApplication(descriptor); + for(; p != args.end(); ++p) + { + string::size_type pos = p->find('='); + if(pos != string::npos) + { + vars[p->substr(0, pos)] = p->substr(pos + 1); + } + else + { + targets.push_back(*p); + } + } + + newApp = DescriptorParser::parseApplicationDescriptor(descriptor, targets, vars, _communicator); + origApp = _admin->getApplicationDescriptor(newApp->name); + } + catch(const DeploymentException& ex) + { + ostringstream s; + s << ex << ":\n" << ex.reason; + error(s.str()); + return; + } + catch(const Ice::Exception& ex) + { + ostringstream s; + s << ex; + error(s.str()); + return; + } + + Output out(cout); + out << "application `" << newApp->name << "'"; + out << sb; + + ServerDescriptorSeq::const_iterator p; + for(p = newApp->servers.begin(); p != newApp->servers.end(); ++p) + { + ServerDescriptorPtr orig; + for(ServerDescriptorSeq::const_iterator q = origApp->servers.begin(); q != origApp->servers.end(); ++q) + { + if((*q)->name == (*p)->name) + { + orig = *q; + break; + } + } + + if(orig) + { + if(!equal(orig, *p)) + { + out << nl << "server `" << orig->name << "' updated"; + } + } + else + { + out << nl << "server `" << (*p)->name << "' added"; + } + } + + for(p = origApp->servers.begin(); p != origApp->servers.end(); ++p) + { + bool found = false; + for(ServerDescriptorSeq::const_iterator q = newApp->servers.begin(); q != newApp->servers.end(); ++q) + { + if((*q)->name == (*p)->name) + { + found = true; + break; + } + } + + if(!found) + { + out << nl << "server `" << (*p)->name << "' removed"; + } + } + + out << eb; + out << nl; +} + +void +IcePack::Parser::updateApplication(const list<string>& args) +{ + if(args.size() < 1) + { + error("`application diff' requires at exactly one argument\n(`help' for more info)"); + return; + } + + try + { + StringSeq targets; + map<string, string> vars; + + list<string>::const_iterator p = args.begin(); + string descriptor = *p++; + + for(; p != args.end(); ++p) + { + string::size_type pos = p->find('='); + if(pos != string::npos) + { + vars[p->substr(0, pos)] = p->substr(pos + 1); + } + else + { + targets.push_back(*p); + } + } + + _admin->updateApplication( + DescriptorParser::parseApplicationDescriptor(descriptor, targets, vars, _communicator)); + } + catch(const IceXML::ParserException& ex) + { + ostringstream s; + s << ex; + error(s.str()); } catch(const DeploymentException& ex) { ostringstream s; - s << ex << ": " << ex.component << ":\n" << ex.reason; + s << ex << ":\n" << ex.reason; error(s.str()); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) + { + ostringstream s; + s << ex; + error(s.str()); + } +} + +void +IcePack::Parser::listAllApplications() +{ + try + { + Ice::StringSeq names = _admin->getAllApplicationNames(); + copy(names.begin(), names.end(), ostream_iterator<string>(cout,"\n")); + } + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -189,7 +677,7 @@ IcePack::Parser::pingNode(const list<string>& args) cout << "node is down" << endl; } } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -210,7 +698,28 @@ IcePack::Parser::shutdownNode(const list<string>& args) { _admin->shutdownNode(args.front()); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) + { + ostringstream s; + s << ex; + error(s.str()); + } +} + +void +IcePack::Parser::removeNode(const list<string>& args) +{ + if(args.size() != 1) + { + error("`node remove' requires exactly one argument\n(`help' for more info)"); + return; + } + + try + { + _admin->removeNode(args.front()); + } + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -226,7 +735,7 @@ IcePack::Parser::listAllNodes() Ice::StringSeq names = _admin->getAllNodeNames(); copy(names.begin(), names.end(), ostream_iterator<string>(cout,"\n")); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -245,43 +754,82 @@ IcePack::Parser::addServer(const list<string>& args) try { - list<string>::const_iterator p = args.begin(); - string node = *p++; - string name = *p++; - string descriptor = *p++; - string path; - string ldpath; StringSeq targets; + map<string, string> vars; - if(p != args.end()) - { - path = *p++; - } - if(p != args.end()) - { - ldpath = *p++; - } + list<string>::const_iterator p = args.begin(); + string descriptor = *p++; + vars["node"] = *p++; for(; p != args.end(); ++p) { - targets.push_back(*p); + string::size_type pos = p->find('='); + if(pos != string::npos) + { + vars[p->substr(0, pos)] = p->substr(pos + 1); + } + else + { + targets.push_back(*p); + } } - _admin->addServer(node, name, path, ldpath, descriptor, targets); + _admin->addServer(DescriptorParser::parseServerDescriptor(descriptor, targets, vars, _communicator)); } - catch(const ServerDeploymentException& ex) + catch(const DeploymentException& ex) { ostringstream s; - s << ex << ": " << ex.server << ":\n" << ex.reason; + s << ex << ":\n" << ex.reason; error(s.str()); } + catch(const Ice::Exception& ex) + { + ostringstream s; + s << ex; + error(s.str()); + } +} + +void +IcePack::Parser::updateServer(const list<string>& args) +{ + if(args.size() < 3) + { + error("`server add' requires at least three arguments\n(`help' for more info)"); + return; + } + + try + { + StringSeq targets; + map<string, string> vars; + + list<string>::const_iterator p = args.begin(); + string descriptor = *p++; + vars["node"] = *p++; + + for(; p != args.end(); ++p) + { + string::size_type pos = p->find('='); + if(pos != string::npos) + { + vars[p->substr(0, pos)] = p->substr(pos + 1); + } + else + { + targets.push_back(*p); + } + } + + _admin->updateServer(DescriptorParser::parseServerDescriptor(descriptor, targets, vars, _communicator)); + } catch(const DeploymentException& ex) { ostringstream s; - s << ex << ": " << ex.component << ":\n" << ex.reason; + s << ex << ":\n" << ex.reason; error(s.str()); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -305,7 +853,7 @@ IcePack::Parser::startServer(const list<string>& args) error("the server didn't start successfully"); } } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -326,7 +874,7 @@ IcePack::Parser::stopServer(const list<string>& args) { _admin->stopServer(args.front()); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -349,7 +897,7 @@ IcePack::Parser::signalServer(const list<string>& args) string server = *p++; _admin->sendSignal(server, *p); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -373,7 +921,7 @@ IcePack::Parser::writeMessage(const list<string>& args, int fd) string server = *p++; _admin->writeMessage(server, *p, fd); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -381,21 +929,23 @@ IcePack::Parser::writeMessage(const list<string>& args, int fd) } } - void -IcePack::Parser::removeServer(const list<string>& args) +IcePack::Parser::describeServer(const list<string>& args) { if(args.size() != 1) { - error("`server remove' requires exactly one argument\n(`help' for more info)"); + error("`server describe' requires exactly one argument\n(`help' for more info)"); return; } - + try { - _admin->removeServer(args.front()); + ServerDescriptorPtr desc = _admin->getServerDescriptor(args.front()); + + IceUtil::Output out(cout); + ServerDescribe(out, _communicator, _admin).describe(desc); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -404,32 +954,25 @@ IcePack::Parser::removeServer(const list<string>& args) } void -IcePack::Parser::describeServer(const list<string>& args) +IcePack::Parser::removeServer(const list<string>& args) { if(args.size() != 1) { - error("`server describe' requires exactly one argument\n(`help' for more info)"); + error("`server remove' requires exactly one argument\n(`help' for more info)"); return; } try { - ServerDescription desc = _admin->getServerDescription(args.front()); - ServerActivation activation = _admin->getServerActivation(args.front()); - - cout << "name = " << desc.name << endl; - cout << "node = " << desc.node << endl; - cout << "path = " << desc.path << endl; - cout << "pwd = " << desc.pwd << endl; - cout << "activation = " << (activation == OnDemand ? "on-demand" : "manual") << endl; - cout << "args = "; - copy(desc.args.begin(), desc.args.end(), ostream_iterator<string>(cout," ")); - cout << endl; - cout << "envs = "; - copy(desc.envs.begin(), desc.envs.end(), ostream_iterator<string>(cout," ")); - cout << endl; + _admin->removeServer(args.front()); } - catch(const Exception& ex) + catch(const DeploymentException& ex) + { + ostringstream s; + s << ex << ":\n" << ex.reason; + error(s.str()); + } + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -482,7 +1025,7 @@ IcePack::Parser::stateServer(const list<string>& args) assert(false); } } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -503,7 +1046,7 @@ IcePack::Parser::pidServer(const list<string>& args) { cout << _admin->getServerPid(args.front()) << endl; } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -539,7 +1082,7 @@ IcePack::Parser::activationServer(const list<string>& args) error("Unknown mode: " + mode); } } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -555,7 +1098,7 @@ IcePack::Parser::listAllServers() Ice::StringSeq names = _admin->getAllServerNames(); copy(names.begin(), names.end(), ostream_iterator<string>(cout,"\n")); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -577,7 +1120,7 @@ IcePack::Parser::endpointsAdapter(const list<string>& args) string endpoints = _admin->getAdapterEndpoints(args.front()); cout << endpoints << endl; } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -593,7 +1136,7 @@ IcePack::Parser::listAllAdapters() Ice::StringSeq names = _admin->getAllAdapterIds(); copy(names.begin(), names.end(), ostream_iterator<string>(cout,"\n")); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -626,19 +1169,13 @@ IcePack::Parser::addObject(const list<string>& args) _admin->addObject(_communicator->stringToProxy(proxy)); } } - catch(const ObjectDeploymentException& ex) - { - ostringstream s; - s << ex << ": " << _communicator->proxyToString(ex.proxy) << ":\n" << ex.reason; - error(s.str()); - } catch(const DeploymentException& ex) { ostringstream s; - s << ex << ": " << ex.component << ":\n" << ex.reason; + s << ex << ":\n" << ex.reason; error(s.str()); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -659,7 +1196,7 @@ IcePack::Parser::removeObject(const list<string>& args) { _admin->removeObject(_communicator->stringToProxy((*(args.begin())))); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -684,7 +1221,7 @@ IcePack::Parser::findObject(const list<string>& args) cout << _communicator->proxyToString(*p) << endl; } } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; @@ -699,7 +1236,7 @@ IcePack::Parser::shutdown() { _admin->shutdown(); } - catch(const Exception& ex) + catch(const Ice::Exception& ex) { ostringstream s; s << ex; diff --git a/cpp/src/IcePack/Parser.h b/cpp/src/IcePack/Parser.h index bfa10cd5784..9ee4f3997d5 100644 --- a/cpp/src/IcePack/Parser.h +++ b/cpp/src/IcePack/Parser.h @@ -69,12 +69,18 @@ public: void addApplication(const std::list<std::string>&); void removeApplication(const std::list<std::string>&); + void describeApplication(const std::list<std::string>&); + void diffApplication(const std::list<std::string>&); + void updateApplication(const std::list<std::string>&); + void listAllApplications(); void pingNode(const std::list<std::string>&); void shutdownNode(const std::list<std::string>&); + void removeNode(const std::list<std::string>&); void listAllNodes(); void addServer(const std::list<std::string>&); + void updateServer(const std::list<std::string>&); void startServer(const std::list<std::string>&); void stopServer(const std::list<std::string>&); void signalServer(const std::list<std::string>&); diff --git a/cpp/src/IcePack/Registry.cpp b/cpp/src/IcePack/Registry.cpp index 183009ae173..712d40d1527 100644 --- a/cpp/src/IcePack/Registry.cpp +++ b/cpp/src/IcePack/Registry.cpp @@ -14,6 +14,7 @@ #include <IcePack/Registry.h> #include <IcePack/AdapterI.h> #include <IcePack/AdapterFactory.h> +#include <IcePack/ApplicationRegistryI.h> #include <IcePack/ServerRegistryI.h> #include <IcePack/AdapterRegistryI.h> #include <IcePack/ObjectRegistryI.h> @@ -145,7 +146,11 @@ IcePack::Registry::start(bool nowarn, bool requiresInternalEndpoints) AdapterRegistryPtr adapterRegistry = new AdapterRegistryI(_communicator, _envName, "adapterregistry", traceLevels); - ServerRegistryPtr serverRegistry = new ServerRegistryI(_communicator, _envName, "serverregistry", traceLevels); + ServerRegistryPtr serverRegistry = new ServerRegistryI(_communicator, _envName, "serverregistry", + "serverdescriptors", traceLevels); + + ApplicationRegistryPtr applicationRegistry = new ApplicationRegistryI(_communicator, serverRegistry, _envName, + "applicationregistry", traceLevels); NodeRegistryPtr nodeRegistry = new NodeRegistryI(_communicator, _envName, "noderegistry", adapterRegistry, adapterFactory, traceLevels); @@ -153,6 +158,7 @@ IcePack::Registry::start(bool nowarn, bool requiresInternalEndpoints) registryAdapter->add(objectRegistry, stringToIdentity("IcePack/ObjectRegistry")); registryAdapter->add(adapterRegistry, stringToIdentity("IcePack/AdapterRegistry")); registryAdapter->add(serverRegistry, stringToIdentity("IcePack/ServerRegistry")); + registryAdapter->add(serverRegistry, stringToIdentity("IcePack/ApplicationRegistry")); registryAdapter->add(nodeRegistry, stringToIdentity("IcePack/NodeRegistry")); // @@ -190,7 +196,8 @@ IcePack::Registry::start(bool nowarn, bool requiresInternalEndpoints) properties->setProperty("IcePack.Registry.Admin.AdapterId", "IcePack.Registry.Admin"); adminAdapter = _communicator->createObjectAdapter("IcePack.Registry.Admin"); - AdminPtr admin = new AdminI(_communicator, nodeRegistry, serverRegistry, adapterRegistry, objectRegistry); + AdminPtr admin = new AdminI(_communicator, nodeRegistry, applicationRegistry, serverRegistry, adapterRegistry, + objectRegistry); adminAdapter->add(admin, stringToIdentity("IcePack/Admin")); // @@ -207,7 +214,7 @@ IcePack::Registry::start(bool nowarn, bool requiresInternalEndpoints) { } - IcePack::ObjectDescription desc; + IcePack::ObjectDescriptor desc; desc.proxy = adminPrx; desc.type = "::IcePack::Admin"; @@ -226,7 +233,7 @@ IcePack::Registry::start(bool nowarn, bool requiresInternalEndpoints) { } - IcePack::ObjectDescription desc; + IcePack::ObjectDescriptor desc; desc.proxy = queryPrx; desc.type = "::IcePack::Query"; objectRegistry->add(desc); diff --git a/cpp/src/IcePack/Scanner.l b/cpp/src/IcePack/Scanner.l index a0391874da1..59406e80681 100644 --- a/cpp/src/IcePack/Scanner.l +++ b/cpp/src/IcePack/Scanner.l @@ -197,7 +197,13 @@ NL [\n] return ICE_PACK_WARRANTY; } +"diff" { + return ICE_PACK_DIFF; +} +"update" { + return ICE_PACK_UPDATE; +} {WS}*(\\{WS}*{NL})? { size_t len = strlen(yytext); diff --git a/cpp/src/IcePack/ServerAdapterI.cpp b/cpp/src/IcePack/ServerAdapterI.cpp index 9b4698dc9e0..a8a61e61253 100644 --- a/cpp/src/IcePack/ServerAdapterI.cpp +++ b/cpp/src/IcePack/ServerAdapterI.cpp @@ -69,6 +69,12 @@ IcePack::ServerAdapterI::~ServerAdapterI() { } +string +IcePack::ServerAdapterI::getId(const Ice::Current&) +{ + return id; +} + void IcePack::ServerAdapterI::getDirectProxy_async(const AMD_Adapter_getDirectProxyPtr& cb, bool activate, @@ -145,14 +151,13 @@ IcePack::ServerAdapterI::getDirectProxy_async(const AMD_Adapter_getDirectProxyPt } void -IcePack::ServerAdapterI::setDirectProxy(const Ice::ObjectPrx& prx, const Ice::Current&) +IcePack::ServerAdapterI::setDirectProxy(const Ice::ObjectPrx& prx, const Ice::Current& current) { ::IceUtil::Mutex::Lock sync(*this); // - // If the adapter proxy is not null the given proxy can only be - // null. We don't allow to overide an existing proxy by another - // non null proxy if the server is active. + // If the adapter proxy is not null the given proxy can only be null. We don't allow to overide an + // existing proxy by another non null proxy if the server is active. // if(prx && _proxy) { @@ -162,8 +167,19 @@ IcePack::ServerAdapterI::setDirectProxy(const Ice::ObjectPrx& prx, const Ice::Cu } } + // + // Prevent eviction of an active adapter object. + // + if(prx && !_proxy) + { + _factory->getServerAdapterEvictor()->keep(current.id); + } + else if(!prx && _proxy) + { + _factory->getServerAdapterEvictor()->release(current.id); + } + _proxy = prx; - _notified = true; if(_traceLevels->adapter > 1) { diff --git a/cpp/src/IcePack/ServerAdapterI.h b/cpp/src/IcePack/ServerAdapterI.h index 8f1c77aea08..4d20c179df9 100644 --- a/cpp/src/IcePack/ServerAdapterI.h +++ b/cpp/src/IcePack/ServerAdapterI.h @@ -30,6 +30,8 @@ public: ServerAdapterI(const ServerFactoryPtr&, const TraceLevelsPtr&, Ice::Int waitTime); virtual ~ServerAdapterI(); + virtual std::string getId(const Ice::Current&); + virtual void getDirectProxy_async(const AMD_Adapter_getDirectProxyPtr& cb, bool, const Ice::Current&); virtual void setDirectProxy(const ::Ice::ObjectPrx&, const ::Ice::Current&); virtual void destroy(const ::Ice::Current&); @@ -41,7 +43,6 @@ private: IceUtil::Time _waitTime; Ice::ObjectPrx _proxy; - bool _notified; }; } diff --git a/cpp/src/IcePack/ServerBuilder.cpp b/cpp/src/IcePack/ServerBuilder.cpp deleted file mode 100644 index 3747926f79a..00000000000 --- a/cpp/src/IcePack/ServerBuilder.cpp +++ /dev/null @@ -1,710 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#include <IceUtil/UUID.h> -#include <Ice/Ice.h> -#include <IcePack/ServerBuilder.h> -#include <IcePack/ServiceBuilder.h> -#include <IcePack/AdapterFactory.h> -#include <IcePack/ServerFactory.h> - -#include <iterator> - -using namespace std; -using namespace IcePack; - -namespace IcePack -{ - -// -// Server registration task. -// -class RegisterServerTask : public Task -{ -public: - - RegisterServerTask(const ServerRegistryPrx& registry, const string& name, const ServerBuilder& builder) : - _registry(registry), - _name(name), - _builder(builder) - { - } - - virtual void - execute() - { - try - { - _registry->add(_name, _builder.getServer()); - } - catch(const ServerExistsException& lex) - { - ostringstream os; - os << "couldn't add the server to the registry:\n" << lex; - - ServerDeploymentException ex; - ex.server = _name; - ex.reason = os.str(); - throw ex; - } - catch(const Ice::LocalException& lex) - { - ostringstream os; - os << "couldn't contact the server registry:\n" << lex << endl; - - ServerDeploymentException ex; - ex.server = _name; - ex.reason = os.str(); - throw ex; - } - } - - virtual void - undo() - { - try - { - _registry->remove(_name); - } - catch(const ServerNotExistException& lex) - { - ostringstream os; - os << "couldn't remove the server from the registry:\n" << lex; - - ServerDeploymentException ex; - ex.server = _name; - ex.reason = os.str(); - throw ex; - } - catch(const Ice::LocalException& lex) - { - ostringstream os; - os << "couldn't contact the server registry:\n" << lex; - - ServerDeploymentException ex; - ex.server = _name; - ex.reason = os.str(); - throw ex; - } - } - -private: - - ServerRegistryPrx _registry; - string _name; - const ServerBuilder& _builder; -}; - -// -// Adapter registration task. -// -class RegisterServerAdapterTask : public Task -{ -public: - - RegisterServerAdapterTask(const AdapterRegistryPrx& registry, const string& id, const ServerBuilder& builder) : - _registry(registry), - _id(id), - _builder(builder) - { - } - - virtual void - execute() - { - try - { - _registry->add(_id, _builder.getServerAdapter(_id)); - } - catch(const AdapterExistsException& lex) - { - ostringstream os; - os << "couldn't add the adapter to the registry:\n" << lex; - - AdapterDeploymentException ex; - ex.id = _id; - ex.reason = os.str(); - throw ex; - } - catch(const Ice::LocalException& lex) - { - ostringstream os; - os << "couldn't contact the adapter registry: " << lex << endl; - - AdapterDeploymentException ex; - ex.id = _id; - ex.reason = os.str(); - throw ex; - } - } - - virtual void - undo() - { - try - { - _registry->remove(_id); - } - catch(const AdapterNotExistException& lex) - { - ostringstream os; - os << "couldn't remove the adapter from the registry:\n" << lex; - - AdapterDeploymentException ex; - ex.id = _id; - ex.reason = os.str(); - throw ex; - } - catch(const Ice::LocalException& lex) - { - ostringstream os; - os << "couldn't contact the adapter registry:\n" << lex; - - AdapterDeploymentException ex; - ex.id = _id; - ex.reason = os.str(); - throw ex; - } - } - -private: - - AdapterRegistryPrx _registry; - string _id; - const ServerBuilder& _builder; -}; - -// -// Server builder handler. -// -class ServerHandler : public ComponentHandler -{ -public: - - ServerHandler(ServerBuilder&); - - virtual void startElement(const string&, const IceXML::Attributes&, int, int); - virtual void endElement(const string&, int, int); - -private: - - ServerBuilder& _builder; -}; - -} - -IcePack::ServerHandler::ServerHandler(ServerBuilder& builder) : - ComponentHandler(builder), - _builder(builder) -{ - // - // Create top level directory and configuration directory. - // - _builder.createDirectory(""); - _builder.createDirectory("/config"); - _builder.registerServer(); -} - -void -IcePack::ServerHandler::startElement(const string& name, const IceXML::Attributes& attrs, int line, int column) -{ - ComponentHandler::startElement(name, attrs, line, column); - if(!isCurrentTargetDeployable()) - { - return; - } - - if(name == "server") - { - string basedir = getAttributeValueWithDefault(attrs, "basedir", ""); - if(!basedir.empty()) - { - _builder.overrideBaseDir(basedir); - } - - string kind = getAttributeValue(attrs, "kind"); - if(kind == "cpp") - { - _builder.setKind(ServerBuilder::ServerKindCppServer); - _builder.createConfigFile("/config/config_server"); - } - else if(kind == "java") - { - _builder.setKind(ServerBuilder::ServerKindJavaServer); - _builder.createConfigFile("/config/config_server"); - } - else if(kind == "cpp-icebox") - { - _builder.setKind(ServerBuilder::ServerKindCppIceBox); - _builder.createConfigFile("/config/config_icebox"); - _builder.createDirectory("/dbs"); - - // - // TODO: is the server name a good category? - // - _builder.addProperty("IceBox.ServiceManager.Identity", _builder.substitute("${name}/ServiceManager")); - - _builder.registerAdapter("IceBox.ServiceManager", - getAttributeValue(attrs, "endpoints"), true, - _builder.getDefaultAdapterId("IceBox.ServiceManager")); - } - else if(kind == "java-icebox") - { - _builder.setKind(ServerBuilder::ServerKindJavaIceBox); - _builder.createConfigFile("/config/config_icebox"); - _builder.createDirectory("/dbs"); - - // - // TODO: is the server name a good category? - // - _builder.addProperty("IceBox.ServiceManager.Identity", _builder.substitute("${name}/ServiceManager")); - - _builder.registerAdapter("IceBox.ServiceManager", - getAttributeValue(attrs, "endpoints"), true, - _builder.getDefaultAdapterId("IceBox.ServiceManager")); - } - } - else if(name == "service") - { - string serviceName = getAttributeValue(attrs, "name"); - string descriptor = getAttributeValue(attrs, "descriptor"); - string targets = getAttributeValueWithDefault(attrs, "targets", ""); - _builder.addService(serviceName, descriptor, targets); - } - else if(name == "adapter") - { - assert(!_currentAdapterId.empty()); - string adapterName = getAttributeValue(attrs, "name"); - bool registerProcess = getAttributeValueWithDefault(attrs, "register", "false") == "true"; - _builder.registerAdapter(adapterName, getAttributeValue(attrs, "endpoints"), registerProcess, - _currentAdapterId); - } -} - -void -IcePack::ServerHandler::endElement(const string& name, int line, int column) -{ - if(isCurrentTargetDeployable()) - { - if(name == "classname") - { - _builder.setClassName(elementValue()); - } - else if(name == "pwd") - { - _builder.setWorkingDirectory(elementValue()); - } - else if(name == "option") - { - _builder.addOption(elementValue()); - } - else if(name == "vm-option") - { - _builder.addJavaOption(elementValue()); - } - else if(name == "env") - { - _builder.addEnvVar(elementValue()); - } - } - - ComponentHandler::endElement(name, line, column); -} - -IcePack::ServerBuilder::ServerBuilder(const NodeInfoPtr& nodeInfo, - const map<string, string>& variables, - const vector<string>& targets) : - ComponentBuilder(nodeInfo->getCommunicator(), variables, targets), - _nodeInfo(nodeInfo) -{ - assert(_variables.back().find("parent") != _variables.back().end()); - assert(_variables.back().find("name") != _variables.back().end()); - assert(_variables.back().find("fqn") != _variables.back().end()); - assert(_variables.back().find("datadir") != _variables.back().end()); - assert(_variables.back().find("binpath") != _variables.back().end()); - assert(_variables.back().find("libpath") != _variables.back().end()); - - // - // Required for the component builder. - // - _objectRegistry = _nodeInfo->getObjectRegistry(); - - // - // Begin to populate the server description. - // - _description.name = getVariable("name"); - _description.path = getVariable("binpath"); - _libraryPath = getVariable("libpath"); - _description.node = nodeInfo->getNode()->getName(); - _description.targets = targets; -} - -void -IcePack::ServerBuilder::parse(const std::string& descriptor) -{ - ServerHandler handler(*this); - - // - // Parse the deployment descriptor. - // - ComponentBuilder::parse(descriptor, handler); - - // - // Once everything is parsed, we can perform some final setup - // before the deployment starts. - // - _description.descriptor = descriptor; - - Ice::PropertiesPtr props = _nodeInfo->getCommunicator()->getProperties(); - _properties->setProperty("Ice.ProgramName", getVariable("name")); - - if(_kind == ServerKindJavaServer || _kind == ServerKindJavaIceBox) - { - if(!_libraryPath.empty()) - { - _javaOptions.push_back("-classpath"); - _javaOptions.push_back(_libraryPath); - } - _javaOptions.push_back("-ea"); - _javaOptions.push_back(_className); - - for(vector<string>::reverse_iterator p = _javaOptions.rbegin(); p != _javaOptions.rend(); ++p) - { - _description.args.insert(_description.args.begin(), *p); - } - } - - if(_kind == ServerKindCppIceBox || _kind == ServerKindJavaIceBox) - { - ostringstream os; - copy(_serviceNames.begin(), _serviceNames.end(), ostream_iterator<string>(os," ")); - addProperty("IceBox.LoadOrder", os.str()); - } - - _description.args.push_back("--Ice.Config=" + _configFile); -} - -void -IcePack::ServerBuilder::execute() -{ - // - // Creates the server from _description and the server adapters - // listed in _serverAdapterIds. The adapter proxies are returned - // in _serverAdapters. - // - try - { - _server = _nodeInfo->getServerFactory()->createServerAndAdapters(_description, - _serverAdapterIds, - _serverAdapters); - } - catch(const Freeze::DatabaseException& lex) - { - ostringstream os; - os << "couldn't create the server: " << lex.message << ":" << endl; - os << lex; - - ServerDeploymentException ex; - ex.server = _description.name; - ex.reason = os.str(); - throw ex; - } - - // - // Deploy the server components. If something goes wrong it's our - // responsability to destroy the server object. Note: destroying - // the server object will also destroy the server adapters. - // - try - { - ComponentBuilder::execute(); - } - catch(const DeploymentException& ex) - { - _server->destroy(); - throw ex; - } -} - -void -IcePack::ServerBuilder::undo() -{ - if(!_server) - { - ServerRegistryPrx registry = _nodeInfo->getServerRegistry(); - if(registry) - { - try - { - _server = registry->findByName(_description.name); - } - catch(const ServerNotExistException&) - { - ostringstream os; - os << "couldn't find server in the registry"; - - ServerDeploymentException ex; - ex.server = _description.name; - ex.reason = os.str(); - throw ex; - } - catch(const Ice::LocalException& lex) - { - ostringstream os; - os << "couldn't contact the server registry:\n" << lex; - - ServerDeploymentException ex; - ex.server = _description.name; - ex.reason = os.str(); - throw ex; - } - } - } - - // - // Set the server activation mode to manual (to avoid it to be - // restarted on demand) and stop it before removing its - // components. - // - _server->setActivationMode(Manual); - _server->stop(); - - // - // Remove all the server components. - // - ComponentBuilder::undo(); - - try - { - _server->destroy(); - } - catch(const Ice::LocalException& lex) - { - ostringstream os; - os << "couldn't destroy the server:\n" << lex; - - ServerDeploymentException ex; - ex.server = _description.name; - ex.reason = os.str(); - throw ex; - } -} - -void -IcePack::ServerBuilder::setClassName(const string& name) -{ - if(_kind != ServerKindJavaServer) - { - throw IceXML::ParserException(__FILE__, __LINE__, "classname element only allowed for Java servers"); - } - - if(name.empty()) - { - throw IceXML::ParserException(__FILE__, __LINE__, "empty classname element value"); - } - - _className = name; -} - -void -IcePack::ServerBuilder::setWorkingDirectory(const string& pwd) -{ - if(pwd.empty()) - { - throw IceXML::ParserException(__FILE__, __LINE__, "no working directory"); - } - - _description.pwd = pwd; -} - -void -IcePack::ServerBuilder::registerServer() -{ - _tasks.push_back(new RegisterServerTask(_nodeInfo->getServerRegistry(), getVariable("name"), *this)); -} - -void -IcePack::ServerBuilder::registerAdapter(const string& name, const string& endpoints, bool registerProcess, - const string& adapterId) -{ - AdapterRegistryPrx adapterRegistry = _nodeInfo->getAdapterRegistry(); - if(!adapterRegistry) - { - throw IceXML::ParserException(__FILE__, __LINE__, "IcePack is not configured to register adapters"); - } - - if(name.empty()) - { - throw IceXML::ParserException(__FILE__, __LINE__, "empty adapter name"); - } - if(endpoints.empty()) - { - throw IceXML::ParserException(__FILE__, __LINE__, "empty adapter endpoints"); - } - if(adapterId.empty()) - { - throw IceXML::ParserException(__FILE__, __LINE__, "empty adapter id"); - } - - // - // A server adapter object will be created with the server when - // the server is created (see ServerBuilder::execute() - // method). The RegisterServerAdapter task will get the server - // adapter proxy through the builder method getServerAdapter(). - // - _serverAdapterIds.push_back(adapterId); - _tasks.push_back(new RegisterServerAdapterTask(adapterRegistry, adapterId, *this)); - - // - // Generate adapter configuration properties. - // - addProperty(name + ".Endpoints", endpoints); - addProperty(name + ".AdapterId", adapterId); - if(registerProcess) - { - addProperty(name + ".RegisterProcess", "1"); - } -} - -void -IcePack::ServerBuilder::addService(const string& name, const string& descriptor, const string& additionalTargets) -{ - if(_kind != ServerKindCppIceBox && _kind != ServerKindJavaIceBox) - { - throw IceXML::ParserException(__FILE__, __LINE__, "services are only allowed in IceBox servers"); - } - - if(name.empty()) - { - throw IceXML::ParserException(__FILE__, __LINE__, "name attribute value is empty"); - } - if(descriptor.empty()) - { - throw IceXML::ParserException(__FILE__, __LINE__, "descriptor attribute value is empty"); - } - - // - // Setup new variables for the service, overides the name value. - // - std::map<std::string, std::string> variables; - vector< map< string, string> >::reverse_iterator p = _variables.rbegin(); - while(p != _variables.rend()) - { - variables.insert(p->begin(), p->end()); - ++p; - } - - variables["parent"] = getVariable("name"); - variables["name"] = name; - variables["fqn"] = getVariable("fqn") + "." + name; - - vector<string> targets = toTargets(additionalTargets); - copy(_targets.begin(), _targets.end(), back_inserter(targets)); - - ServiceBuilder* task = new ServiceBuilder(_nodeInfo, *this, variables, targets); - TaskPtr t = task; - task->parse(toLocation(descriptor)); - _tasks.push_back(t); - - _serviceNames.push_back(name); -} - -void -IcePack::ServerBuilder::addOption(const string& option) -{ - _description.args.push_back(option); -} - -void -IcePack::ServerBuilder::addJavaOption(const string& option) -{ - _javaOptions.push_back(option); -} - -void -IcePack::ServerBuilder::addEnvVar(const string& env) -{ - _description.envs.push_back(env); -} - -void -IcePack::ServerBuilder::setKind(ServerBuilder::ServerKind kind) -{ - switch(kind) - { - case ServerKindCppServer: - { - if(_description.path.empty()) - { - throw IceXML::ParserException(__FILE__, __LINE__, "C++ server path is not specified"); - } - break; - } - case ServerKindJavaServer: - { - if(_description.path.empty()) - { - _description.path = "java"; - } - break; - } - case ServerKindJavaIceBox: - { - if(_description.path.empty()) - { - _description.path = "java"; - } - - _description.serviceManager = IceBox::ServiceManagerPrx::uncheckedCast( - _nodeInfo->getCommunicator()->stringToProxy( - getVariable("name") + "/ServiceManager @ IceBox.ServiceManager-" + getVariable("name"))); - - _className = "IceBox.Server"; - - break; - } - case ServerKindCppIceBox: - { - if(_description.path.empty()) - { - _description.path = "icebox"; - } - - _description.serviceManager = IceBox::ServiceManagerPrx::uncheckedCast( - _nodeInfo->getCommunicator()->stringToProxy( - getVariable("name") + "/ServiceManager @ IceBox.ServiceManager-" + getVariable("name"))); - - break; - } - } - - _kind = kind; -} - -ServerPrx -IcePack::ServerBuilder::getServer() const -{ - assert(_server); - return _server; -} - -ServerAdapterPrx -IcePack::ServerBuilder::getServerAdapter(const std::string& id) const -{ - map<string, ServerAdapterPrx>::const_iterator p = _serverAdapters.find(id); - if(p != _serverAdapters.end()) - { - return p->second; - } - else - { - assert(false); - return 0; // Keep the compiler happy. - } -} diff --git a/cpp/src/IcePack/ServerBuilder.h b/cpp/src/IcePack/ServerBuilder.h deleted file mode 100644 index 22f332744e8..00000000000 --- a/cpp/src/IcePack/ServerBuilder.h +++ /dev/null @@ -1,74 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#ifndef ICE_PACK_SERVER_BUILDER_H -#define ICE_PACK_SERVER_BUILDER_H - -#include <IcePack/Internal.h> -#include <IcePack/NodeInfo.h> -#include <IcePack/ComponentBuilder.h> - -namespace IcePack -{ - -class ServerBuilder : public ComponentBuilder -{ -public: - - enum ServerKind - { - ServerKindCppIceBox, - ServerKindJavaIceBox, - ServerKindCppServer, - ServerKindJavaServer - }; - - ServerBuilder(const NodeInfoPtr&, - const std::map<std::string, std::string>&, - const std::vector<std::string>&); - - - using ComponentBuilder::parse; - void parse(const std::string&); - - virtual void execute(); - virtual void undo(); - - void setClassName(const std::string&); - void setWorkingDirectory(const std::string&); - void registerServer(); - void registerAdapter(const std::string&, const std::string&, bool, const std::string&); - void addService(const std::string&, const std::string&, const std::string&); - void addOption(const std::string&); - void addJavaOption(const std::string&); - void addEnvVar(const std::string&); - void setKind(ServerKind); - - ServerPrx getServer() const; - ServerAdapterPrx getServerAdapter(const std::string& name) const; - -private: - - NodeInfoPtr _nodeInfo; - - ServerDescription _description; - std::vector<std::string> _serverAdapterIds; - ServerKind _kind; - std::string _className; - std::string _libraryPath; - std::vector<std::string> _javaOptions; - std::vector<std::string> _serviceNames; - - ServerPrx _server; - std::map<std::string, ServerAdapterPrx> _serverAdapters; -}; - -} - -#endif diff --git a/cpp/src/IcePack/ServerFactory.cpp b/cpp/src/IcePack/ServerFactory.cpp index 9eaa1bf7a3a..1304209cd81 100644 --- a/cpp/src/IcePack/ServerFactory.cpp +++ b/cpp/src/IcePack/ServerFactory.cpp @@ -7,6 +7,10 @@ // // ********************************************************************** +#ifdef __sun +#define _POSIX_PTHREAD_SEMANTICS +#endif + #include <Ice/Ice.h> #include <IceUtil/UUID.h> #include <Freeze/Evictor.h> @@ -15,47 +19,75 @@ #include <IcePack/ServerI.h> #include <IcePack/ServerAdapterI.h> #include <IcePack/TraceLevels.h> +#include <IcePack/DescriptorVisitor.h> #include <map> +#include <sys/types.h> +#include <sys/stat.h> + +#ifdef _WIN32 +# include <direct.h> +#else +# include <unistd.h> +# include <dirent.h> +#endif + using namespace std; using namespace IcePack; namespace IcePack { -class ServerFactoryServantLocator : public Ice::ServantLocator +class NodeServerCleaner : public DescriptorVisitor { +public: + + void clean(const ServerPrx&, const ServerDescriptorPtr&); + +private: + + virtual void visitServerEnd(const ServerWrapper&, const ServerDescriptorPtr&); + virtual bool visitServiceStart(const ServiceWrapper&, const ServiceDescriptorPtr&); + virtual void visitDbEnv(const DbEnvWrapper&, const DbEnvDescriptor&); + + ServerPrx _currentServer; }; +}; -class ServerFactoryServantInitializer : public Freeze::ServantInitializer +void +NodeServerCleaner::clean(const ServerPrx& server, const ServerDescriptorPtr& descriptor) { -public: + _currentServer = server; + ServerWrapper(descriptor).visit(*this); +} - virtual void - initialize(const Ice::ObjectAdapterPtr& adapter, const Ice::Identity& identity, const string& facet, const Ice::ObjectPtr& servant) - { - // - // Add the servant to the adapter active object map. This will - // prevent the evictor from evicting the servant. We just use - // the evictor to load servants from the database. - // - // TODO: Implement our own servant locator instead of using - // the evictor. - // - adapter->add(servant, identity); - } +void +NodeServerCleaner::visitServerEnd(const ServerWrapper&, const ServerDescriptorPtr& server) +{ + _currentServer->removeConfigFile("config"); + _currentServer->destroy(); +} -}; +bool +NodeServerCleaner::visitServiceStart(const ServiceWrapper&, const ServiceDescriptorPtr& service) +{ + _currentServer->removeConfigFile("config_" + service->name); + return true; +} -}; +void +NodeServerCleaner::visitDbEnv(const DbEnvWrapper&, const DbEnvDescriptor& dbEnv) +{ + _currentServer->removeDbEnv(dbEnv, ""); +} -IcePack::ServerFactory::ServerFactory(const Ice::ObjectAdapterPtr& adapter, - const TraceLevelsPtr& traceLevels, - const string& envName, - const ActivatorPtr& activator, - const WaitQueuePtr& waitQueue) : +ServerFactory::ServerFactory(const Ice::ObjectAdapterPtr& adapter, + const TraceLevelsPtr& traceLevels, + const string& envName, + const ActivatorPtr& activator, + const WaitQueuePtr& waitQueue) : _adapter(adapter), _traceLevels(traceLevels), _activator(activator), @@ -64,18 +96,19 @@ IcePack::ServerFactory::ServerFactory(const Ice::ObjectAdapterPtr& adapter, Ice::PropertiesPtr properties = _adapter->getCommunicator()->getProperties(); _waitTime = properties->getPropertyAsIntWithDefault("IcePack.Node.WaitTime", 60); - Freeze::ServantInitializerPtr initializer = new ServerFactoryServantInitializer(); + _serversDir = properties->getProperty("IcePack.Node.Data"); + _serversDir = _serversDir + (_serversDir[_serversDir.length() - 1] == '/' ? "" : "/") + "servers/"; // // Create and install the freeze evictor for server objects. // - _serverEvictor = Freeze::createEvictor(_adapter, envName, "servers", initializer); + _serverEvictor = Freeze::createEvictor(_adapter, envName, "servers", 0); _serverEvictor->setSize(10000); // // Create and install the freeze evictor for server adapter objects. // - _serverAdapterEvictor = Freeze::createEvictor(_adapter, envName, "serveradapters", initializer); + _serverAdapterEvictor = Freeze::createEvictor(_adapter, envName, "serveradapters", 0); _serverAdapterEvictor->setSize(10000); // @@ -95,11 +128,11 @@ IcePack::ServerFactory::ServerFactory(const Ice::ObjectAdapterPtr& adapter, // Ice::ObjectFactory::create method implementation // Ice::ObjectPtr -IcePack::ServerFactory::create(const string& type) +ServerFactory::create(const string& type) { if(type == "::IcePack::Server") { - return new ServerI(this, _traceLevels, _activator, _waitTime); + return new ServerI(this, _traceLevels, _activator, _waitTime, _serversDir); } else if(type == "::IcePack::ServerAdapter") { @@ -116,7 +149,7 @@ IcePack::ServerFactory::create(const string& type) // Ice::ObjectFactory::destroy method implementation // void -IcePack::ServerFactory::destroy() +ServerFactory::destroy() { _adapter = 0; _serverEvictor = 0; @@ -125,59 +158,127 @@ IcePack::ServerFactory::destroy() _activator = 0; } +void +ServerFactory::checkConsistency() +{ + try + { + Ice::CommunicatorPtr communicator = _adapter->getCommunicator(); + + // + // Make sure that all the servers in this node server database are registered with the + // IcePack server registry. If a server isn't registered with the registry, we remove + // it from the node and also delete any resources associated with it (config files, + // db envs, ...). + // + ServerRegistryPrx serverRegistry = ServerRegistryPrx::checkedCast( + communicator->stringToProxy("IcePack/ServerRegistry@IcePack.Registry.Internal")); + + Freeze::EvictorIteratorPtr p = _serverEvictor->getIterator("", 50); + while(p->hasNext()) + { + ServerPrx server = ServerPrx::uncheckedCast(_adapter->createProxy(p->next())); + ServerDescriptorPtr descriptor = server->getDescriptor(); + try + { + if(Ice::proxyIdentityEqual(serverRegistry->findByName(descriptor->name), server)) + { + continue; + } + } + catch(const ServerNotExistException&) + { + } + + NodeServerCleaner().clean(server, descriptor); + } + + // + // Make sure all the adapters in this node adapter database are registered with the + // IcePack adapter registry. If an adapter isn't registered with the registry, we + // remove it from this node. + // + AdapterRegistryPrx adapterRegistry = AdapterRegistryPrx::checkedCast( + communicator->stringToProxy("IcePack/AdapterRegistry@IcePack.Registry.Internal")); + + p = _serverAdapterEvictor->getIterator("", 50); + while(p->hasNext()) + { + ServerAdapterPrx adapter = ServerAdapterPrx::uncheckedCast(_adapter->createProxy(p->next())); + try + { + if(Ice::proxyIdentityEqual(adapterRegistry->findById(adapter->getId()), adapter)) + { + continue; + } + } + catch(const AdapterNotExistException&) + { + } + + adapter->destroy(); + } + } + catch(const Ice::LocalException& ex) + { + ostringstream os; + os << "couldn't contact the IcePack registry for the consistency check:\n" << ex; + _traceLevels->logger->warning(os.str()); + return; + } + +} + // // Create a new server servant and new server adapter servants from // the given description. // ServerPrx -IcePack::ServerFactory::createServerAndAdapters(const ServerDescription& description, - const vector<string>& adapterIds, - map<string, ServerAdapterPrx>& adapters) +ServerFactory::createServer(const string& name, const ServerDescriptorPtr& desc) { // // Create the server object. // - ServerPtr serverI = new ServerI(this, _traceLevels, _activator, _waitTime); - - serverI->description = description; - - Ice::Identity id; - id.category = "IcePackServer"; - id.name = description.name + "-" + IceUtil::generateUUID(); - - // - // Create the server adapters. - // - ServerPrx proxy = ServerPrx::uncheckedCast(_adapter->createProxy(id)); - for(Ice::StringSeq::const_iterator p = adapterIds.begin(); p != adapterIds.end(); ++p) + ServerPtr serverI = new ServerI(this, _traceLevels, _activator, _waitTime, _serversDir); + + serverI->name = name; + serverI->activation = Manual; + serverI->processRegistered = false; + serverI->descriptor = desc; + + string path = _serversDir + name; +#ifdef _WIN32 + if(_mkdir(path.c_str()) != 0) +#else + if(mkdir(path.c_str(), 0755) != 0) +#endif { - ServerAdapterPrx adapterProxy = createServerAdapter(*p, proxy); - adapters[*p] = adapterProxy; - serverI->adapters.push_back(adapterProxy); + DeploymentException ex; + ex.reason = "couldn't create directory " + path + ": " + strerror(getSystemErrno()); + throw ex; } - // - // By default server is always activated on demand. - // - serverI->activation = OnDemand; - - _adapter->add(serverI, id); +#ifdef _WIN32 + _mkdir(string(path + "/config").c_str()); + _mkdir(string(path + "/dbs").c_str()); +#else + mkdir(string(path + "/config").c_str(), 0755); + mkdir(string(path + "/dbs").c_str(), 0755); +#endif + + Ice::Identity id; + id.category = "IcePackServer"; + id.name = name + "-" + IceUtil::generateUUID(); _serverEvictor->add(serverI, id); if(_traceLevels->server > 0) { Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "created server `" << description.name << "'"; + out << "created server `" << name << "'"; } - return proxy; -} - -const WaitQueuePtr& -IcePack::ServerFactory::getWaitQueue() const -{ - return _waitQueue; + return ServerPrx::uncheckedCast(_adapter->createProxy(id)); } // @@ -185,7 +286,7 @@ IcePack::ServerFactory::getWaitQueue() const // and add it the evictor database. // ServerAdapterPrx -IcePack::ServerFactory::createServerAdapter(const string& adapterId, const ServerPrx& server) +ServerFactory::createServerAdapter(const string& adapterId, const ServerPrx& server) { ServerAdapterPtr adapterI = new ServerAdapterI(this, _traceLevels, _waitTime); adapterI->id = adapterId; @@ -194,8 +295,6 @@ IcePack::ServerFactory::createServerAdapter(const string& adapterId, const Serve Ice::Identity id; id.category = "IcePackServerAdapter"; id.name = adapterId + "-" + IceUtil::generateUUID(); - - _adapter->add(adapterI, id); _serverAdapterEvictor->add(adapterI, id); @@ -208,8 +307,26 @@ IcePack::ServerFactory::createServerAdapter(const string& adapterId, const Serve return ServerAdapterPrx::uncheckedCast(_adapter->createProxy(id)); } +const WaitQueuePtr& +ServerFactory::getWaitQueue() const +{ + return _waitQueue; +} + +const Freeze::EvictorPtr& +ServerFactory::getServerEvictor() const +{ + return _serverEvictor; +} + +const Freeze::EvictorPtr& +ServerFactory::getServerAdapterEvictor() const +{ + return _serverAdapterEvictor; +} + void -IcePack::ServerFactory::destroy(const ServerPtr& server, const Ice::Identity& ident) +ServerFactory::destroy(const ServerPtr& server, const Ice::Identity& ident) { try { @@ -218,13 +335,13 @@ IcePack::ServerFactory::destroy(const ServerPtr& server, const Ice::Identity& id if(_traceLevels->server > 0) { Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "destroyed server `" << server->description.name << "'"; + out << "destroyed server `" << server->name << "'"; } } catch(const Freeze::DatabaseException& ex) { ostringstream os; - os << "couldn't destroy server `" << server->description.name << "':\n" << ex; + os << "couldn't destroy server `" << server->name << "':\n" << ex; _traceLevels->logger->warning(os.str()); } catch(const Freeze::EvictorDeactivatedException&) @@ -232,11 +349,14 @@ IcePack::ServerFactory::destroy(const ServerPtr& server, const Ice::Identity& id assert(false); } - _adapter->remove(ident); + string path = _serversDir + server->name; + rmdir(string(path + "/config").c_str()); + rmdir(string(path + "/dbs").c_str()); + rmdir(path.c_str()); } void -IcePack::ServerFactory::destroy(const ServerAdapterPtr& adapter, const Ice::Identity& ident) +ServerFactory::destroy(const ServerAdapterPtr& adapter, const Ice::Identity& ident) { try { @@ -258,6 +378,5 @@ IcePack::ServerFactory::destroy(const ServerAdapterPtr& adapter, const Ice::Iden { assert(false); } - - _adapter->remove(ident); } + diff --git a/cpp/src/IcePack/ServerFactory.h b/cpp/src/IcePack/ServerFactory.h index 7493d302078..417df0e684f 100644 --- a/cpp/src/IcePack/ServerFactory.h +++ b/cpp/src/IcePack/ServerFactory.h @@ -25,8 +25,11 @@ class ServerFactory : public Ice::ObjectFactory { public: - ServerFactory(const Ice::ObjectAdapterPtr&, const TraceLevelsPtr&, const std::string&, - const ActivatorPtr&, const WaitQueuePtr&); + ServerFactory(const Ice::ObjectAdapterPtr&, + const TraceLevelsPtr&, + const std::string&, + const ActivatorPtr&, + const WaitQueuePtr&); // // Ice::ObjectFactory method implementation. @@ -34,21 +37,23 @@ public: virtual Ice::ObjectPtr create(const std::string&); virtual void destroy(); - ServerPrx createServerAndAdapters(const ServerDescription&, const std::vector<std::string>&, - std::map<std::string, ServerAdapterPrx>&); + void checkConsistency(); + + ServerPrx createServer(const std::string&, const ServerDescriptorPtr&); + ServerAdapterPrx createServerAdapter(const std::string& name, const ServerPrx& server); const WaitQueuePtr& getWaitQueue() const; + const Freeze::EvictorPtr& getServerEvictor() const; + const Freeze::EvictorPtr& getServerAdapterEvictor() const; private: friend class ServerI; friend class ServerAdapterI; - ServerAdapterPrx createServerAdapter(const std::string& name, const ServerPrx& server); - void destroy(const ServerPtr&, const Ice::Identity&); void destroy(const ServerAdapterPtr&, const Ice::Identity&); - + Ice::ObjectAdapterPtr _adapter; TraceLevelsPtr _traceLevels; ActivatorPtr _activator; @@ -57,6 +62,7 @@ private: Freeze::EvictorPtr _serverEvictor; Freeze::EvictorPtr _serverAdapterEvictor; Ice::Int _waitTime; + std::string _serversDir; }; typedef ::IceUtil::Handle< ServerFactory> ServerFactoryPtr; diff --git a/cpp/src/IcePack/ServerI.cpp b/cpp/src/IcePack/ServerI.cpp index f4a9d4fd0b3..794b33c94ef 100644 --- a/cpp/src/IcePack/ServerI.cpp +++ b/cpp/src/IcePack/ServerI.cpp @@ -7,42 +7,59 @@ // // ********************************************************************** +#ifdef __sun +#define _POSIX_PTHREAD_SEMANTICS +#endif + +#include <IceUtil/UUID.h> #include <Ice/Ice.h> #include <IcePack/ServerI.h> #include <IcePack/ServerFactory.h> #include <IcePack/TraceLevels.h> #include <IcePack/Activator.h> -#include <IceBox/IceBox.h> +#include <sys/types.h> +#include <sys/stat.h> + +#ifdef _WIN32 +# include <direct.h> +#else +# include <unistd.h> +# include <dirent.h> +#endif + +#include <fstream> using namespace std; using namespace IcePack; -IcePack::ServerI::ServerI(const ServerFactoryPtr& factory, const TraceLevelsPtr& traceLevels, - const ActivatorPtr& activator, Ice::Int waitTime) : +ServerI::ServerI(const ServerFactoryPtr& factory, + const TraceLevelsPtr& traceLevels, + const ActivatorPtr& activator, + Ice::Int waitTime, + const string& serversDir) : _factory(factory), _traceLevels(traceLevels), _activator(activator), _waitTime(waitTime), + _serversDir(serversDir), _state(Inactive) { assert(_activator); - } -IcePack::ServerI::~ServerI() +ServerI::~ServerI() { } -ServerDescription -IcePack::ServerI::getServerDescription(const Ice::Current&) -{ - return description; // Description is immutable. -} - bool -IcePack::ServerI::start(ServerActivation act, const Ice::Current& current) +ServerI::start(ServerActivation act, const Ice::Current& current) { + string exe; + string wd; + Ice::StringSeq opts; + Ice::StringSeq evs; + while(true) { IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); @@ -56,6 +73,12 @@ IcePack::ServerI::start(ServerActivation act, const Ice::Current& current) } _state = Activating; + + // + // Prevent eviction of the server object once it's not anymore in the inactive state. + // + _factory->getServerEvictor()->keep(current.id); + break; } case Activating: @@ -80,31 +103,37 @@ IcePack::ServerI::start(ServerActivation act, const Ice::Current& current) if(_traceLevels->server > 2) { Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "changed server `" << description.name << "' state to `Activating'"; + out << "changed server `" << name << "' state to `Activating'"; } assert(_state == Activating); + + exe = exePath; + wd = pwd; + opts = options; + evs = envs; break; } try { - bool active = _activator->activate(this); - setState(active ? Active : Inactive); + ServerPrx self = ServerPrx::uncheckedCast(current.adapter->createProxy(current.id)); + bool active = _activator->activate(name, exe, wd, opts, evs, self); + setState(active ? Active : Inactive, current); return active; } catch(const Ice::SyscallException& ex) { Ice::Warning out(_traceLevels->logger); - out << "activation failed for server `" << description.name << "':\n"; + out << "activation failed for server `" << name << "':\n"; out << ex; - setState(Inactive); + setState(Inactive, current); return false; } } void -IcePack::ServerI::stop(const Ice::Current& current) +ServerI::stop(const Ice::Current& current) { while(true) { @@ -116,6 +145,7 @@ IcePack::ServerI::stop(const Ice::Current& current) return; } case Activating: + case Deactivating: { wait(); // TODO: Timeout? continue; @@ -125,11 +155,6 @@ IcePack::ServerI::stop(const Ice::Current& current) _state = Deactivating; break; } - case Deactivating: - { - wait(); - continue; - } case Destroying: case Destroyed: { @@ -142,30 +167,29 @@ IcePack::ServerI::stop(const Ice::Current& current) if(_traceLevels->server > 2) { Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "changed server `" << description.name << "' state to `Deactivating'"; + out << "changed server `" << name << "' state to `Deactivating'"; } assert(_state == Deactivating); break; } - stopInternal(); + stopInternal(current); } void -IcePack::ServerI::sendSignal(const string& signal, const Ice::Current& current) +ServerI::sendSignal(const string& signal, const Ice::Current& current) { - _activator->sendSignal(this, signal); + _activator->sendSignal(name, signal); } void -IcePack::ServerI::writeMessage(const string& message, Ice::Int fd, const Ice::Current& current) +ServerI::writeMessage(const string& message, Ice::Int fd, const Ice::Current& current) { - _activator->writeMessage(this, message, fd); + _activator->writeMessage(name, message, fd); } - void -IcePack::ServerI::destroy(const Ice::Current& current) +ServerI::destroy(const Ice::Current& current) { bool stop = false; @@ -205,7 +229,7 @@ IcePack::ServerI::destroy(const Ice::Current& current) if(_traceLevels->server > 2) { Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "changed server `" << description.name << "' state to `"; + out << "changed server `" << name << "' state to `"; out << (_state == Destroyed ? "Destroyed" : "Destroying") << "'"; } break; @@ -213,30 +237,18 @@ IcePack::ServerI::destroy(const Ice::Current& current) if(stop) { - stopInternal(); - } - - // - // Destroy the server adapters. - // - for(ServerAdapters::const_iterator p = adapters.begin(); p != adapters.end(); ++p) - { - try - { - (*p)->destroy(); - } - catch(const Ice::ObjectNotExistException&) - { - } + stopInternal(current); } + _factory->destroy(this, current.id); } void -IcePack::ServerI::terminated(const Ice::Current&) +ServerI::terminated(const Ice::Current& current) { ServerState newState = Inactive; // Initialize to keep the compiler happy. + ServerAdapterPrxDict adpts; while(true) { IceUtil::Monitor< IceUtil::Mutex>::Lock sync(*this); @@ -257,7 +269,7 @@ IcePack::ServerI::terminated(const Ice::Current&) if(_traceLevels->server > 2) { Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "changed server `" << description.name << "' state to `Deactivating'"; + out << "changed server `" << name << "' state to `Deactivating'"; } newState = Inactive; break; @@ -280,11 +292,17 @@ IcePack::ServerI::terminated(const Ice::Current&) } case Destroyed: { - assert(false); + assert(false); } } assert(_state == Deactivating || _state == Destroying); + adpts = adapters; + + // + // Clear the process proxy. + // + _process = 0; break; } @@ -295,135 +313,374 @@ IcePack::ServerI::terminated(const Ice::Current&) // null to cause the server re-activation if one of its adapter // direct proxy is requested. // - for(ServerAdapters::iterator p = adapters.begin(); p != adapters.end(); ++p) + for(ServerAdapterPrxDict::iterator p = adpts.begin(); p != adpts.end(); ++p) { try { - (*p)->setDirectProxy(0); + p->second->setDirectProxy(0); } catch(const Ice::ObjectNotExistException&) { - // - // TODO: Inconsistent database. - // - } - catch(const Ice::LocalException&) - { - //cerr << (*p)->__reference()->toString() << endl; - //cerr << ex << endl; - throw; } } } - setState(newState); + setState(newState, current); } ServerState -IcePack::ServerI::getState(const Ice::Current&) +ServerI::getState(const Ice::Current&) { - IceUtil::Monitor< ::IceUtil::Mutex>::Lock sync(*this); + Lock sync(*this); return _state; } Ice::Int -IcePack::ServerI::getPid(const Ice::Current& current) +ServerI::getPid(const Ice::Current& current) { - return _activator->getServerPid(this); + return _activator->getServerPid(name); } void -IcePack::ServerI::setActivationMode(ServerActivation mode, const ::Ice::Current&) +ServerI::setActivationMode(ServerActivation mode, const ::Ice::Current&) { - IceUtil::Monitor< ::IceUtil::Mutex>::Lock sync(*this); + Lock sync(*this); activation = mode; } ServerActivation -IcePack::ServerI::getActivationMode(const ::Ice::Current&) +ServerI::getActivationMode(const ::Ice::Current&) { - IceUtil::Monitor< ::IceUtil::Mutex>::Lock sync(*this); + Lock sync(*this); return activation; } -void -IcePack::ServerI::setProcess(const ::Ice::ProcessPrx& proc, const ::Ice::Current&) +ServerDescriptorPtr +ServerI::getDescriptor(const Ice::Current&) { - IceUtil::Monitor< ::IceUtil::Mutex>::Lock sync(*this); - _process = proc; + Lock sync(*this); + return descriptor; } -Ice::ProcessPrx -IcePack::ServerI::getProcess(const ::Ice::Current&) +void +ServerI::setExePath(const string& path, const ::Ice::Current&) { - IceUtil::Monitor< ::IceUtil::Mutex>::Lock sync(*this); - return _process; + Lock sync(*this); + exePath = path; +} + +void +ServerI::setPwd(const string& path,const ::Ice::Current&) +{ + Lock sync(*this); + pwd = path; +} + +void +ServerI::setEnvs(const Ice::StringSeq& s, const ::Ice::Current&) +{ + Lock sync(*this); + envs = s; +} + +void +ServerI::setOptions(const Ice::StringSeq& opts, const ::Ice::Current&) +{ + Lock sync(*this); + options = opts; +} + +void +ServerI::addAdapter(const ServerAdapterPrx& adapter, bool registerProcess, const ::Ice::Current&) +{ + Lock sync(*this); + ServerAdapterPrxDict::const_iterator p = adapters.find(adapter->ice_getIdentity()); + if(p != adapters.end()) + { + DeploymentException ex; + ex.reason = "failed to add adapter because it already exists"; + throw ex; + } + adapters[adapter->ice_getIdentity()] = adapter; + processRegistered |= registerProcess; } void -IcePack::ServerI::stopInternal() +ServerI::removeAdapter(const ServerAdapterPrx& adapter, const ::Ice::Current&) { - // - // If the server is an icebox, first try to use the IceBox service - // manager to shutdown the server. - // - bool deactivate = true; + Lock sync(*this); + adapters.erase(adapter->ice_getIdentity()); +} + +string +ServerI::addConfigFile(const string& n, const PropertyDescriptorSeq& properties, const ::Ice::Current&) +{ + string file = _serversDir + name + "/config/" + n; + + ofstream configfile; + configfile.open(file.c_str(), ios::out); + if(!configfile) + { + DeploymentException ex; + ex.reason = "couldn't create configuration file: " + file; + throw ex; + } + + for(PropertyDescriptorSeq::const_iterator p = properties.begin(); p != properties.end(); ++p) + { + configfile << p->name; + if(!p->value.empty()) + { + configfile << "=" << p->value; + } + configfile << endl; + } + configfile.close(); + return file; +} + +void +ServerI::removeConfigFile(const string& n, const ::Ice::Current&) +{ + string file = _serversDir + name + "/config/" + n; + if(unlink(file.c_str()) != 0) + { + Ice::Warning out(_traceLevels->logger); + out << "couldn't remove configuration file: " + file + ": " + strerror(getSystemErrno()); + } +} + +string +ServerI::addDbEnv(const DbEnvDescriptor& dbEnv, const string& path, const ::Ice::Current&) +{ + string dir; + if(dbEnv.dbHome.empty()) + { + dir = _serversDir + name + "/dbs/" + dbEnv.name; + } + else + { + dir = dbEnv.dbHome; + } + // - // TODO: use the service manager to shutdown icebox servers. The - // following code should work once it's possible to set an - // activation mode on a per adapter basis -- we really don't want - // to activate the icebox in this method if it's already - // deactivated. + // If no db home directory is specified for this db env, we provide one. // + if(dbEnv.dbHome.empty()) + { + // + // First, we try to move the given backup if specified, if not successful, we just + // create the database environment directory. + // + if(path.empty() || rename((path + "/" + dbEnv.name).c_str(), dir.c_str()) != 0) + { + // + // Create the database environment directory. + // +#ifdef _WIN32 + if(_mkdir(dir.c_str()) != 0) +#else + if(mkdir(dir.c_str(), 0755) != 0) +#endif + { + DeploymentException ex; + ex.reason = "couldn't create directory " + dir + ": " + strerror(getSystemErrno()); + throw ex; + } + } + } -// if(description.serviceManager) -// { -// if(_state == Deactivating) -// { -// try -// { -// // -// // Set a timeout on the service manager proxy and try to -// // shutdown the icebox. -// // -// IceBox::ServiceManagerPrx serviceManager = -// IceBox::ServiceManagerPrx::uncheckedCast(description.serviceManager->ice_timeout(_waitTime)); - -// serviceManager->shutdown(); + string file = dir + "/DB_CONFIG"; + ofstream configfile; + configfile.open(file.c_str(), ios::out); + if(!configfile) + { + rmdir(dir.c_str()); + + DeploymentException ex; + ex.reason = "couldn't create configuration file: " + file; + throw ex; + } + + for(PropertyDescriptorSeq::const_iterator p = dbEnv.properties.begin(); p != dbEnv.properties.end(); ++p) + { + if(!p->name.empty()) + { + configfile << p->name; + if(!p->value.empty()) + { + configfile << " " << p->value; + } + configfile << endl; + } + } + configfile.close(); + + return dir; +} + +void +ServerI::removeDbEnv(const DbEnvDescriptor& dbEnv, const string& moveTo, const ::Ice::Current&) +{ + string path; + if(dbEnv.dbHome.empty()) + { + path = _serversDir + name + "/dbs/" + dbEnv.name; + } + else + { + path = dbEnv.dbHome; + } + + if(unlink((path + "/DB_CONFIG").c_str()) != 0) + { + Ice::Warning out(_traceLevels->logger); + out << "couldn't remove file: " + path + "/DB_CONFIG: " + strerror(getSystemErrno()); + } + + // + // If no db home directory was specified for this db env, we provided one. We need to cleanup + // this directory now. + // + if(dbEnv.dbHome.empty()) + { + if(!moveTo.empty()) + { + // + // Move the database environment directory to the given directory. + // + if(rename(path.c_str(), (moveTo + "/" + dbEnv.name).c_str()) != 0) + { + Ice::Warning out(_traceLevels->logger); + out << "couldn't rename directory " + path + " to " + moveTo + "/" + dbEnv.name + ": " + + strerror(getSystemErrno()); + } + } + else + { + // + // Delete the database environment directory. + // + Ice::StringSeq files; + +#ifdef _WIN32 + string pattern = path + "/*"; + WIN32_FIND_DATA data; + HANDLE hnd = FindFirstFile(pattern.c_str(), &data); + if(hnd == INVALID_HANDLE_VALUE) + { + // TODO: log a warning, throw an exception? + return; + } + + do + { + if((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) + { + files.push_back(path + "/" + data.cFileName); + } + } + while(FindNextFile(hnd, &data)); + + FindClose(hnd); +#else + + DIR* dir = opendir(path.c_str()); + if(dir == 0) + { + // TODO: log a warning, throw an exception? + return; + } + + // TODO: make the allocation/deallocation exception-safe + struct dirent* entry = static_cast<struct dirent*>(malloc(pathconf(path.c_str(), _PC_NAME_MAX) + 1)); + + while(readdir_r(dir, entry, &entry) == 0 && entry != 0) + { + string name = path + "/" + entry->d_name; + struct stat buf; -// deactivate = false; -// } -// catch(const Ice::LocalException& ex) -// { -// if(_traceLevels->server > 1) -// { -// Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); -// out << "couldn't contact the IceBox `" << description.name << "' service manager:\n"; -// out << ex; -// } -// } -// } -// } - - if(deactivate) + if(::stat(name.c_str(), &buf) != 0) + { + if(errno != ENOENT) + { + // + // TODO: log error + // + } + } + else if(S_ISREG(buf.st_mode)) + { + files.push_back(name); + } + } + + free(entry); + closedir(dir); +#endif + + for(Ice::StringSeq::iterator p = files.begin(); p != files.end(); ++p) + { + if(unlink(p->c_str()) != 0) + { + // + // TODO: log error + // + } + } + + if(rmdir(path.c_str()) != 0) + { + Ice::Warning out(_traceLevels->logger); + out << "couldn't remove directory: " + path + ": " + strerror(getSystemErrno()); + } + } + } +} + +void +ServerI::setProcess(const ::Ice::ProcessPrx& proc, const ::Ice::Current&) +{ + IceUtil::Monitor< ::IceUtil::Mutex>::Lock sync(*this); + _process = proc; + notifyAll(); +} + +void +ServerI::stopInternal(const Ice::Current& current) +{ + Ice::ProcessPrx process; { - // - // Deactivate the server. - // - try - { - _activator->deactivate(this); - } - catch(const Ice::Exception& ex) - { - Ice::Warning out(_traceLevels->logger); - out << "deactivation failed for server `" << description.name << "':\n"; - out << ex; - - setState(Active); - return; - } + IceUtil::Monitor< ::IceUtil::Mutex>::Lock sync(*this); + if(!_process && processRegistered) + { + while(!_process) + { + // + // Wait for the process to be set. + // + wait(); // TODO: timeout? + } + } + process = _process; + } + + // + // Deactivate the server. + // + try + { + _activator->deactivate(name, process); + } + catch(const Ice::Exception& ex) + { + Ice::Warning out(_traceLevels->logger); + out << "deactivation failed for server `" << name << "':\n"; + out << ex; + + setState(Active, current); + return; } // @@ -464,7 +721,7 @@ IcePack::ServerI::stopInternal() if(_traceLevels->server > 1) { Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "graceful server shutdown failed, killing server `" << description.name << "'"; + out << "graceful server shutdown failed, killing server `" << name << "'"; } // @@ -472,22 +729,30 @@ IcePack::ServerI::stopInternal() // try { - _activator->kill(this); + _activator->kill(name); } catch(const Ice::SyscallException& ex) { Ice::Warning out(_traceLevels->logger); - out << "deactivation failed for server `" << description.name << "':\n"; + out << "deactivation failed for server `" << name << "':\n"; out << ex; - setState(Active); + setState(Active, current); } } void -IcePack::ServerI::setState(ServerState st) +ServerI::setState(ServerState st, const Ice::Current& current) { - IceUtil::Monitor< ::IceUtil::Mutex>::Lock sync(*this); + Lock sync(*this); + + // + // Allow eviction of an inactive server object. + // + if(_state != Inactive && st == Inactive) + { + _factory->getServerEvictor()->release(current.id); + } _state = st; @@ -496,29 +761,29 @@ IcePack::ServerI::setState(ServerState st) if(_state == Active) { Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "changed server `" << description.name << "' state to `Active'"; + out << "changed server `" << name << "' state to `Active'"; } else if(_state == Inactive) { Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "changed server `" << description.name << "' state to `Inactive'"; + out << "changed server `" << name << "' state to `Inactive'"; } else if(_state == Destroyed) { Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "changed server `" << description.name << "' state to `Destroyed'"; + out << "changed server `" << name << "' state to `Destroyed'"; } else if(_traceLevels->server > 2) { if(_state == Activating) { Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "changed server `" << description.name << "' state to `Activating'"; + out << "changed server `" << name << "' state to `Activating'"; } else if(_state == Deactivating) { Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat); - out << "changed server `" << description.name << "' state to `Deactivating'"; + out << "changed server `" << name << "' state to `Deactivating'"; } } } diff --git a/cpp/src/IcePack/ServerI.h b/cpp/src/IcePack/ServerI.h index 97761cef2c5..c3556725873 100644 --- a/cpp/src/IcePack/ServerI.h +++ b/cpp/src/IcePack/ServerI.h @@ -30,11 +30,9 @@ class ServerI : public Server, public IceUtil::AbstractMutexI<IceUtil::Monitor<I { public: - ServerI(const ServerFactoryPtr&, const TraceLevelsPtr&, const ActivatorPtr&, Ice::Int waitTime); + ServerI(const ServerFactoryPtr&, const TraceLevelsPtr&, const ActivatorPtr&, Ice::Int waitTime,const std::string&); virtual ~ServerI(); - virtual ServerDescription getServerDescription(const ::Ice::Current&); - virtual bool start(ServerActivation, const ::Ice::Current&); virtual void stop(const ::Ice::Current&); virtual void sendSignal(const std::string&, const ::Ice::Current&); @@ -47,19 +45,30 @@ public: virtual void setActivationMode(ServerActivation, const ::Ice::Current&); virtual ServerActivation getActivationMode(const ::Ice::Current&); - + virtual ServerDescriptorPtr getDescriptor(const ::Ice::Current&); virtual void setProcess(const ::Ice::ProcessPrx&, const ::Ice::Current&); - virtual Ice::ProcessPrx getProcess(const ::Ice::Current&); + + void setExePath(const std::string&, const ::Ice::Current&); + void setPwd(const std::string&, const ::Ice::Current&); + void setEnvs(const Ice::StringSeq&, const ::Ice::Current&); + void setOptions(const Ice::StringSeq&, const ::Ice::Current&); + void addAdapter(const ServerAdapterPrx&, bool, const ::Ice::Current&); + void removeAdapter(const ServerAdapterPrx&, const ::Ice::Current&); + std::string addConfigFile(const std::string&, const PropertyDescriptorSeq&, const ::Ice::Current&); + void removeConfigFile(const std::string&, const ::Ice::Current&); + std::string addDbEnv(const DbEnvDescriptor&, const std::string&, const ::Ice::Current&); + void removeDbEnv(const DbEnvDescriptor&, const std::string&, const ::Ice::Current&); private: - void stopInternal(); - void setState(ServerState); + void stopInternal(const Ice::Current&); + void setState(ServerState, const Ice::Current&); ServerFactoryPtr _factory; TraceLevelsPtr _traceLevels; ActivatorPtr _activator; ::Ice::Int _waitTime; + std::string _serversDir; ServerState _state; diff --git a/cpp/src/IcePack/ServerRegistryI.cpp b/cpp/src/IcePack/ServerRegistryI.cpp index e54cfb3d166..42f637841dd 100644 --- a/cpp/src/IcePack/ServerRegistryI.cpp +++ b/cpp/src/IcePack/ServerRegistryI.cpp @@ -15,22 +15,30 @@ using namespace std; using namespace IcePack; IcePack::ServerRegistryI::ServerRegistryI(const Ice::CommunicatorPtr& communicator, - const string& envName, const string& dbName, + const string& envName, + const string& dbName, + const string& dbDescriptorName, const TraceLevelsPtr& traceLevels) : _connectionCache(Freeze::createConnection(communicator, envName)), _dictCache(_connectionCache, dbName), + _dictDescriptorCache(_connectionCache, dbDescriptorName), _traceLevels(traceLevels), _envName(envName), _communicator(communicator), - _dbName(dbName) + _dbName(dbName), + _dbDescriptorName(dbDescriptorName) { } void -IcePack::ServerRegistryI::add(const string& name, const ServerPrx& server, const Ice::Current&) +IcePack::ServerRegistryI::add(const string& name, + const ServerPrx& server, + const ServerDescriptorPtr& descriptor, + const Ice::Current&) { Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName); StringObjectProxyDict dict(connection, _dbName); + StringServerDescriptorDict dictDescriptor(connection, _dbDescriptorName); StringObjectProxyDict::iterator p = dict.find(name); if(p != dict.end()) @@ -38,26 +46,18 @@ IcePack::ServerRegistryI::add(const string& name, const ServerPrx& server, const try { p->second->ice_ping(); + throw ServerExistsException(); } catch(const Ice::ObjectNotExistException&) { - p.set(server); - - if(_traceLevels->serverRegistry > 0) - { - Ice::Trace out(_traceLevels->logger, _traceLevels->serverRegistryCat); - out << "added server `" << name << "'"; - } - - return; } catch(const Ice::LocalException&) { } - throw ServerExistsException(); } dict.put(pair<const string, const Ice::ObjectPrx>(name, server)); + dictDescriptor.put(pair<const string, const ServerDescriptorPtr>(name, descriptor)); if(_traceLevels->serverRegistry > 0) { @@ -66,25 +66,30 @@ IcePack::ServerRegistryI::add(const string& name, const ServerPrx& server, const } } -void +ServerPrx IcePack::ServerRegistryI::remove(const string& name, const Ice::Current&) { Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName); StringObjectProxyDict dict(connection, _dbName); + StringServerDescriptorDict dictDescriptor(connection, _dbDescriptorName); StringObjectProxyDict::iterator p = dict.find(name); if(p == dict.end()) { throw ServerNotExistException(); } - + + ServerPrx server = ServerPrx::uncheckedCast(p->second); dict.erase(p); + dictDescriptor.erase(name); if(_traceLevels->serverRegistry > 0) { Ice::Trace out(_traceLevels->logger, _traceLevels->serverRegistryCat); out << "removed server `" << name << "'"; } + + return server; } ServerPrx @@ -112,6 +117,20 @@ IcePack::ServerRegistryI::findByName(const string& name, const Ice::Current&) throw ServerNotExistException(); } +ServerDescriptorPtr +ServerRegistryI::getDescriptor(const string& name, const Ice::Current&) +{ + Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName); + StringServerDescriptorDict dictDescriptor(connection, _dbDescriptorName); + + StringServerDescriptorDict::iterator p = dictDescriptor.find(name); + if(p == dictDescriptor.end()) + { + throw ServerNotExistException(); + } + return p->second; +} + Ice::StringSeq IcePack::ServerRegistryI::getAll(const Ice::Current&) const { @@ -128,3 +147,22 @@ IcePack::ServerRegistryI::getAll(const Ice::Current&) const return names; } + +ServerDescriptorSeq +IcePack::ServerRegistryI::getAllDescriptorsOnNode(const string& node, const Ice::Current&) const +{ + Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName); + StringServerDescriptorDict dict(connection, _dbDescriptorName); + + ServerDescriptorSeq descriptors; + + for(StringServerDescriptorDict::iterator p = dict.begin(); p != dict.end(); ++p) + { + if(p->second->node == node) + { + descriptors.push_back(p->second); + } + } + + return descriptors; +} diff --git a/cpp/src/IcePack/ServerRegistryI.h b/cpp/src/IcePack/ServerRegistryI.h index 4ed3ea573b4..4ed572b241e 100644 --- a/cpp/src/IcePack/ServerRegistryI.h +++ b/cpp/src/IcePack/ServerRegistryI.h @@ -12,6 +12,7 @@ #include <IcePack/Internal.h> #include <IcePack/StringObjectProxyDict.h> +#include <IcePack/StringServerDescriptorDict.h> namespace IcePack { @@ -23,22 +24,27 @@ class ServerRegistryI : public ServerRegistry { public: - ServerRegistryI(const Ice::CommunicatorPtr&, const std::string&, const std::string&, const TraceLevelsPtr&); + ServerRegistryI(const Ice::CommunicatorPtr&, const std::string&, const std::string&, const std::string&, + const TraceLevelsPtr&); - virtual void add(const std::string&, const ServerPrx&, const ::Ice::Current&); - virtual void remove(const std::string&, const ::Ice::Current&); + virtual void add(const std::string&, const ServerPrx&, const ServerDescriptorPtr&, const ::Ice::Current&); + virtual ServerPrx remove(const std::string&, const ::Ice::Current&); virtual ServerPrx findByName(const ::std::string&, const ::Ice::Current&); + virtual ServerDescriptorPtr getDescriptor(const ::std::string&, const Ice::Current&); virtual Ice::StringSeq getAll(const ::Ice::Current&) const; + virtual ServerDescriptorSeq getAllDescriptorsOnNode(const std::string&, const ::Ice::Current&) const; private: Freeze::ConnectionPtr _connectionCache; StringObjectProxyDict _dictCache; + StringServerDescriptorDict _dictDescriptorCache; TraceLevelsPtr _traceLevels; const std::string _envName; const Ice::CommunicatorPtr _communicator; const std::string _dbName; + const std::string _dbDescriptorName; }; } diff --git a/cpp/src/IcePack/ServiceBuilder.cpp b/cpp/src/IcePack/ServiceBuilder.cpp deleted file mode 100644 index 39131265d72..00000000000 --- a/cpp/src/IcePack/ServiceBuilder.cpp +++ /dev/null @@ -1,188 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#include <Ice/Ice.h> -#include <IcePack/ServiceBuilder.h> -#include <IcePack/ServerBuilder.h> - -using namespace std; -using namespace IcePack; - -namespace IcePack -{ - -class ServiceHandler : public ComponentHandler -{ -public: - - ServiceHandler(ServiceBuilder&); - - virtual void startElement(const string&, const IceXML::Attributes&, int, int); - -private: - - ServiceBuilder& _builder; -}; - -} - -IcePack::ServiceHandler::ServiceHandler(ServiceBuilder& builder) : - ComponentHandler(builder), - _builder(builder) -{ -} - -void -IcePack::ServiceHandler::startElement(const string& name, const IceXML::Attributes& attrs, int line, int column) -{ - ComponentHandler::startElement(name, attrs, line, column); - - if(!isCurrentTargetDeployable()) - { - return; - } - - if(name == "service") - { - string basedir = getAttributeValueWithDefault(attrs, "basedir", ""); - if(!basedir.empty()) - { - _builder.overrideBaseDir(basedir); - } - - string kind = getAttributeValue(attrs, "kind"); - if(kind == "standard") - { - _builder.setKind(ServiceBuilder::ServiceKindStandard); - } - else if(kind == "freeze") - { - _builder.setKind(ServiceBuilder::ServiceKindFreeze); - _builder.setDBEnv(getAttributeValueWithDefault(attrs, "dbenv", "")); - } - - _builder.createConfigFile(_builder.substitute("/config/config_${name}")); - _builder.setEntryPoint(getAttributeValue(attrs, "entry")); - } - else if(name == "adapter") - { - assert(!_currentAdapterId.empty()); - string adapterName = getAttributeValue(attrs, "name"); - bool registerProcess = getAttributeValueWithDefault(attrs, "register", "false") == "true"; - _builder.getServerBuilder().registerAdapter(adapterName, getAttributeValue(attrs, "endpoints"), - registerProcess, _currentAdapterId); - } - else if(name == "dbproperty") - { - string value = getAttributeValueWithDefault(attrs, "value", ""); - if(value.empty()) - { - value = _builder.toLocation(getAttributeValueWithDefault(attrs, "location", "")); - } - _builder.addDatabaseProperty(getAttributeValue(attrs, "name"), value); - } -} - -IcePack::ServiceBuilder::ServiceBuilder(const NodeInfoPtr& nodeInfo, - ServerBuilder& serverBuilder, - const map<string, string>& variables, - const vector<string>& targets) : - ComponentBuilder(nodeInfo->getCommunicator(), variables, targets), - _nodeInfo(nodeInfo), - _serverBuilder(serverBuilder), - _dbProperties(Ice::createProperties()) -{ - assert(_variables.back().find("parent") != _variables.back().end()); - assert(_variables.back().find("name") != _variables.back().end()); - assert(_variables.back().find("fqn") != _variables.back().end()); - assert(_variables.back().find("datadir") != _variables.back().end()); - - // - // Required for the component builder. - // - _objectRegistry = _nodeInfo->getObjectRegistry(); -} - -void -IcePack::ServiceBuilder::parse(const string& descriptor) -{ - ServiceHandler handler(*this); - - ComponentBuilder::parse(descriptor, handler); -} - -ServerBuilder& -IcePack::ServiceBuilder::getServerBuilder() const -{ - return _serverBuilder; -} - -void -IcePack::ServiceBuilder::setKind(ServiceKind kind) -{ - _kind = kind; -} - -void -IcePack::ServiceBuilder::setEntryPoint(const string& entry) -{ - assert(!_configFile.empty()); - _serverBuilder.addProperty("IceBox.Service." + getVariable("name"), entry + " --Ice.Config=" + _configFile); -} - -void -IcePack::ServiceBuilder::setDBEnv(const string& dir) -{ - if(_kind != ServiceKindFreeze) - { - throw IceXML::ParserException(__FILE__, __LINE__, "database environment is only allowed for Freeze services"); - } - - string path; - - if(dir.empty()) - { - // - // Provides database environment directory only if the - // database environment attribute is not specified. If it's - // specified, it's most likely because we share database - // environments and then it's the responsabilility of the user - // to manage the database environment directory. - // - createDirectory("/dbs/" + getVariable("name"), true); - path = getVariable("datadir") + "/dbs/" + getVariable("name"); - } - else - { - path = toLocation(dir); - } - _serverBuilder.addProperty("IceBox.DBEnvName." + getVariable("name"), getVariable("name")); - addProperty("Freeze.DbEnv." + getVariable("name") + ".DbHome", path); - - string dbConfigFile = path + "/DB_CONFIG"; - generateConfigFile(" ", "BdB.", dbConfigFile, _dbProperties); -} - -void -IcePack::ServiceBuilder::addDatabaseProperty(const string& name, const string& value) -{ - _dbProperties->setProperty("BdB." + name, value); -} - -// -// Compute an adapter id for a given adapter name. -// -string -IcePack::ServiceBuilder::getDefaultAdapterId(const string& name) -{ - // - // Concatenate the server and service name to the adapter name. - // - return name + "-" + getVariable("parent") + "." + getVariable("name"); -} diff --git a/cpp/src/IcePack/ServiceBuilder.h b/cpp/src/IcePack/ServiceBuilder.h deleted file mode 100644 index 40de8fcc160..00000000000 --- a/cpp/src/IcePack/ServiceBuilder.h +++ /dev/null @@ -1,60 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#ifndef ICE_PACK_SERVICE_BUILDER_H -#define ICE_PACK_SERVICE_BUILDER_H - -#include <IcePack/ComponentBuilder.h> -#include <IcePack/NodeInfo.h> - -namespace IcePack -{ - -class ServerBuilder; - -class ServiceBuilder : public ComponentBuilder -{ -public: - - enum ServiceKind - { - ServiceKindStandard, - ServiceKindFreeze - }; - - ServiceBuilder(const NodeInfoPtr&, ServerBuilder&, - const std::map<std::string, std::string>&, - const std::vector<std::string>&); - - using ComponentBuilder::parse; - - void parse(const std::string&); - - ServerBuilder& getServerBuilder() const; - - void setKind(ServiceKind); - void setEntryPoint(const std::string&); - void setDBEnv(const std::string&); - void addDatabaseProperty(const std::string&, const std::string&); - - virtual std::string getDefaultAdapterId(const std::string&); - -private: - - NodeInfoPtr _nodeInfo; - - ServerBuilder& _serverBuilder; - - ServiceKind _kind; - Ice::PropertiesPtr _dbProperties; -}; - -} - -#endif diff --git a/cpp/src/IcePack/TraceLevels.cpp b/cpp/src/IcePack/TraceLevels.cpp index 037683e1dd9..49ce9340a49 100644 --- a/cpp/src/IcePack/TraceLevels.cpp +++ b/cpp/src/IcePack/TraceLevels.cpp @@ -20,6 +20,8 @@ TraceLevels::TraceLevels(const Ice::PropertiesPtr& properties, const Ice::Logger adapterCat("Adapter"), activator(0), activatorCat("Activator"), + applicationRegistry(0), + applicationRegistryCat("ApplicationRegistry"), serverRegistry(0), serverRegistryCat("ServerRegistry"), adapterRegistry(0), @@ -36,6 +38,7 @@ TraceLevels::TraceLevels(const Ice::PropertiesPtr& properties, const Ice::Logger const_cast<int&>(activator) = properties->getPropertyAsInt(nodeKeyBase + activatorCat); const string registryKeyBase = "IcePack.Registry.Trace."; + const_cast<int&>(applicationRegistry) = properties->getPropertyAsInt(registryKeyBase + applicationRegistryCat); const_cast<int&>(serverRegistry) = properties->getPropertyAsInt(registryKeyBase + serverRegistryCat); const_cast<int&>(adapterRegistry) = properties->getPropertyAsInt(registryKeyBase + adapterRegistryCat); const_cast<int&>(objectRegistry) = properties->getPropertyAsInt(registryKeyBase + objectRegistryCat); diff --git a/cpp/src/IcePack/TraceLevels.h b/cpp/src/IcePack/TraceLevels.h index f8166a01d1f..0e2a0533f77 100644 --- a/cpp/src/IcePack/TraceLevels.h +++ b/cpp/src/IcePack/TraceLevels.h @@ -33,6 +33,9 @@ public: const int activator; const char* activatorCat; + const int applicationRegistry; + const char* applicationRegistryCat; + const int serverRegistry; const char* serverRegistryCat; diff --git a/cpp/src/IcePack/dummy4.ice b/cpp/src/IcePack/dummy4.ice new file mode 100755 index 00000000000..c6622a8c14d --- /dev/null +++ b/cpp/src/IcePack/dummy4.ice @@ -0,0 +1,3 @@ +// +// This file is necessary to compile StringStringSeqDict under msdev. +// diff --git a/cpp/src/IcePack/dummy5.ice b/cpp/src/IcePack/dummy5.ice new file mode 100755 index 00000000000..90fb6893379 --- /dev/null +++ b/cpp/src/IcePack/dummy5.ice @@ -0,0 +1,3 @@ +// +// This file is necessary to compile StringServerDescriptorDict under msdev. +// diff --git a/cpp/src/IcePack/icepackC.dsp b/cpp/src/IcePack/icepackC.dsp index 68bea602fb6..c23f4d67af9 100644 --- a/cpp/src/IcePack/icepackC.dsp +++ b/cpp/src/IcePack/icepackC.dsp @@ -51,7 +51,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 setargv.obj /nologo /subsystem:console /machine:I386 /out:"Release/icepackadmin.exe"
+# ADD LINK32 setargv.obj /nologo /subsystem:console /machine:I386 /out:"Release/icepackadmin.exe" /libpath:"../../../lib"
# SUBTRACT LINK32 /debug /nodefaultlib
# Begin Special Build Tool
OutDir=.\Release
@@ -83,7 +83,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 setargv.obj /nologo /subsystem:console /debug /machine:I386 /out:"Debug/icepackadmin.exe" /pdbtype:sept
+# ADD LINK32 setargv.obj /nologo /subsystem:console /debug /machine:I386 /out:"Debug/icepackadmin.exe" /pdbtype:sept /libpath:"../../../lib"
# SUBTRACT LINK32 /nodefaultlib
# Begin Special Build Tool
OutDir=.\Debug
@@ -107,6 +107,18 @@ SOURCE=.\Client.cpp # End Source File
# Begin Source File
+SOURCE=.\DescriptorParser.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\DescriptorUtil.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\DescriptorVisitor.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\Grammar.cpp
# End Source File
# Begin Source File
diff --git a/cpp/src/IcePack/icepacknode.dsp b/cpp/src/IcePack/icepacknode.dsp index a0df7d9338b..5234149c8cf 100755 --- a/cpp/src/IcePack/icepacknode.dsp +++ b/cpp/src/IcePack/icepacknode.dsp @@ -51,7 +51,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 ws2_32.lib setargv.obj /nologo /subsystem:console /machine:I386
+# ADD LINK32 ws2_32.lib setargv.obj /nologo /subsystem:console /machine:I386 /libpath:"../../../lib"
# SUBTRACT LINK32 /debug /nodefaultlib
# Begin Special Build Tool
OutDir=.\Release
@@ -83,7 +83,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 ws2_32.lib setargv.obj /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ws2_32.lib setargv.obj /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../../lib"
# SUBTRACT LINK32 /nodefaultlib
# Begin Special Build Tool
OutDir=.\Debug
@@ -107,10 +107,6 @@ SOURCE=.\Activator.cpp # End Source File
# Begin Source File
-SOURCE=.\ActivatorI.cpp
-# End Source File
-# Begin Source File
-
SOURCE=.\AdapterFactory.cpp
# End Source File
# Begin Source File
@@ -127,11 +123,19 @@ SOURCE=.\AdminI.cpp # End Source File
# Begin Source File
-SOURCE=.\ApplicationBuilder.cpp
+SOURCE=.\ApplicationRegistryI.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\DescriptorParser.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\DescriptorUtil.cpp
# End Source File
# Begin Source File
-SOURCE=.\ComponentBuilder.cpp
+SOURCE=.\DescriptorVisitor.cpp
# End Source File
# Begin Source File
@@ -159,10 +163,6 @@ SOURCE=.\NodeI.cpp # End Source File
# Begin Source File
-SOURCE=.\NodeInfo.cpp
-# End Source File
-# Begin Source File
-
SOURCE=.\NodeRegistryI.cpp
# End Source File
# Begin Source File
@@ -183,14 +183,6 @@ SOURCE=.\ServerAdapterI.cpp # End Source File
# Begin Source File
-SOURCE=.\ServerBuilder.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\ServerDeployerI.cpp
-# End Source File
-# Begin Source File
-
SOURCE=.\ServerFactory.cpp
# End Source File
# Begin Source File
@@ -203,15 +195,19 @@ SOURCE=.\ServerRegistryI.cpp # End Source File
# Begin Source File
-SOURCE=.\ServiceBuilder.cpp
+SOURCE=.\StringObjectProxyDict.cpp
# End Source File
# Begin Source File
-SOURCE=.\StringObjectProxyDict.cpp
+SOURCE=.\StringObjectProxySeqDict.cpp
# End Source File
# Begin Source File
-SOURCE=.\StringObjectProxySeqDict.cpp
+SOURCE=.\StringServerDescriptorDict.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\StringStringSeqDict.cpp
# End Source File
# Begin Source File
@@ -347,45 +343,6 @@ SOURCE=.\WaitQueue.h # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# Begin Source File
-SOURCE=.\Activator.ice
-
-!IF "$(CFG)" == "IcePackNode - Win32 Release"
-
-USERDEP__ACTIV="..\..\bin\slice2cpp.exe" "..\..\lib\slice.lib"
-# Begin Custom Build
-InputPath=.\Activator.ice
-
-BuildCmds= \
- ..\..\bin\slice2cpp.exe --ice --include-dir IcePack -I.. -I../../slice ./Activator.ice
-
-".\Activator.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"Activator.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "IcePackNode - Win32 Debug"
-
-USERDEP__ACTIV="..\..\bin\slice2cpp.exe" "..\..\lib\sliced.lib"
-# Begin Custom Build
-InputPath=.\Activator.ice
-
-BuildCmds= \
- ..\..\bin\slice2cpp.exe --ice --include-dir IcePack -I.. -I../../slice ./Activator.ice
-
-".\Activator.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-
-"Activator.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- $(BuildCmds)
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
SOURCE=.\dummy1.ice
!IF "$(CFG)" == "IcePackNode - Win32 Release"
@@ -411,7 +368,7 @@ USERDEP__DUMMY="..\..\bin\slice2freeze.exe" "..\..\lib\sliced.lib" InputPath=.\dummy1.ice
BuildCmds= \
- ..\..\bin\slice2freeze.exe --ice -I.. -I../../slice --include-dir IcePack --dict IcePack::IdentityObjectDescDict,Ice::Identity,IcePack::ObjectDescription IdentityObjectDescDict ../../slice/Ice/Identity.ice ../IcePack/Internal.ice
+ ..\..\bin\slice2freeze.exe --ice -I.. -I../../slice --include-dir IcePack --dict IcePack::IdentityObjectDescDict,Ice::Identity,IcePack::ObjectDescriptor IdentityObjectDescDict ../../slice/Ice/Identity.ice ../IcePack/Internal.ice
"IdentityObjectDescDict.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
$(BuildCmds)
@@ -429,7 +386,6 @@ SOURCE=.\dummy2.ice !IF "$(CFG)" == "IcePackNode - Win32 Release"
-d.lib"
# Begin Custom Build
InputPath=.\dummy2.ice
@@ -503,6 +459,80 @@ BuildCmds= \ # End Source File
# Begin Source File
+SOURCE=.\dummy4.ice
+
+!IF "$(CFG)" == "IcePackNode - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\dummy4.ice
+
+BuildCmds= \
+ ..\..\bin\slice2freeze.exe --ice -I../../slice --include-dir IcePack --dict IcePack::StringStringSeqDict,string,Ice::StringSeq StringStringSeqDict ../../slice/Ice/BuiltinSequences.ice
+
+"StringStringSeqDict.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"StringStringSeqDict.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "IcePackNode - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\dummy4.ice
+
+BuildCmds= \
+ ..\..\bin\slice2freeze.exe --ice -I../../slice --include-dir IcePack --dict IcePack::StringStringSeqDict,string,Ice::StringSeq StringStringSeqDict ../../slice/Ice/BuiltinSequences.ice
+
+"StringStringSeqDict.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"StringStringSeqDict.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\dummy5.ice
+
+!IF "$(CFG)" == "IcePackNode - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\dummy5.ice
+
+BuildCmds= \
+ ..\..\bin\slice2freeze.exe --ice -I../../slice --include-dir IcePack --dict IcePack::StringServerDescriptorDict,string,IcePack::ServerDescriptor StringServerDescriptorDict ../../slice/IcePack/Admin.ice
+
+"StringServerDescriptorDict.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"StringServerDescriptorDict.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "IcePackNode - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\dummy5.ice
+
+BuildCmds= \
+ ..\..\bin\slice2freeze.exe --ice -I../../slice --include-dir IcePack --dict IcePack::StringServerDescriptorDict,string,IcePack::ServerDescriptor StringServerDescriptorDict ../../slice/IcePack/Admin.ice
+
+"StringServerDescriptorDict.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"StringServerDescriptorDict.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
SOURCE=.\Internal.ice
!IF "$(CFG)" == "IcePackNode - Win32 Release"
diff --git a/cpp/src/IcePack/icepackregistry.dsp b/cpp/src/IcePack/icepackregistry.dsp index 7291ba01997..6e1ec951d4c 100755 --- a/cpp/src/IcePack/icepackregistry.dsp +++ b/cpp/src/IcePack/icepackregistry.dsp @@ -51,7 +51,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 setargv.obj /nologo /subsystem:console /machine:I386
+# ADD LINK32 setargv.obj /nologo /subsystem:console /machine:I386 /libpath:"../../../lib"
# SUBTRACT LINK32 /debug /nodefaultlib
# Begin Special Build Tool
OutDir=.\Release
@@ -83,7 +83,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 setargv.obj /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 setargv.obj /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../../lib"
# SUBTRACT LINK32 /nodefaultlib
# Begin Special Build Tool
OutDir=.\Debug
@@ -119,11 +119,15 @@ SOURCE=.\AdminI.cpp # End Source File
# Begin Source File
-SOURCE=.\ApplicationBuilder.cpp
+SOURCE=.\ApplicationRegistryI.cpp
# End Source File
# Begin Source File
-SOURCE=.\ComponentBuilder.cpp
+SOURCE=.\DescriptorUtil.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\DescriptorVisitor.cpp
# End Source File
# Begin Source File
@@ -175,6 +179,14 @@ SOURCE=.\StringObjectProxySeqDict.cpp # End Source File
# Begin Source File
+SOURCE=.\StringServerDescriptorDict.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\StringStringSeqDict.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\TraceLevels.cpp
# End Source File
# End Group
diff --git a/cpp/src/IceStorm/Service.cpp b/cpp/src/IceStorm/Service.cpp index 85c141473c1..fcc400b9ff8 100644 --- a/cpp/src/IceStorm/Service.cpp +++ b/cpp/src/IceStorm/Service.cpp @@ -23,7 +23,7 @@ using namespace Freeze; namespace IceStorm { -class ICESTORM_SERVICE_API ServiceI : public ::IceBox::FreezeService +class ICESTORM_SERVICE_API ServiceI : public ::IceBox::Service { public: @@ -32,8 +32,7 @@ public: virtual void start(const string&, const CommunicatorPtr&, - const StringSeq&, - const string&); + const StringSeq&); virtual void stop(); @@ -49,7 +48,7 @@ private: extern "C" { -ICESTORM_SERVICE_API ::IceBox::FreezeService* +ICESTORM_SERVICE_API ::IceBox::Service* create(CommunicatorPtr communicator) { return new ServiceI; @@ -68,14 +67,16 @@ IceStorm::ServiceI::~ServiceI() void IceStorm::ServiceI::start(const string& name, const CommunicatorPtr& communicator, - const StringSeq& args, - const string& envName) + const StringSeq& args) { TraceLevelsPtr traceLevels = new TraceLevels(name, communicator->getProperties(), communicator->getLogger()); _topicAdapter = communicator->createObjectAdapter(name + ".TopicManager"); _publishAdapter = communicator->createObjectAdapter(name + ".Publish"); - _manager = new TopicManagerI(communicator, _topicAdapter, _publishAdapter, traceLevels, envName, "topics"); + // + // We use the name of the service for the name of the database environment. + // + _manager = new TopicManagerI(communicator, _topicAdapter, _publishAdapter, traceLevels, name, "topics"); _topicAdapter->add(_manager, stringToIdentity(name + "/TopicManager")); _topicAdapter->activate(); |