summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/IceBox/ServiceManagerI.cpp38
-rw-r--r--cpp/src/IceBox/ServiceManagerI.h2
-rw-r--r--cpp/src/IcePack/.depend39
-rw-r--r--cpp/src/IcePack/Activator.cpp (renamed from cpp/src/IcePack/ActivatorI.cpp)237
-rw-r--r--cpp/src/IcePack/Activator.h (renamed from cpp/src/IcePack/ActivatorI.h)27
-rw-r--r--cpp/src/IcePack/Activator.ice100
-rw-r--r--cpp/src/IcePack/AdapterRegistryI.cpp7
-rw-r--r--cpp/src/IcePack/AdapterRegistryI.h2
-rw-r--r--cpp/src/IcePack/AdminI.cpp1199
-rw-r--r--cpp/src/IcePack/AdminI.h21
-rw-r--r--cpp/src/IcePack/ApplicationBuilder.cpp261
-rw-r--r--cpp/src/IcePack/ApplicationBuilder.h39
-rw-r--r--cpp/src/IcePack/ApplicationRegistryI.cpp157
-rw-r--r--cpp/src/IcePack/ApplicationRegistryI.h51
-rw-r--r--cpp/src/IcePack/ComponentBuilder.cpp825
-rw-r--r--cpp/src/IcePack/ComponentBuilder.h130
-rw-r--r--cpp/src/IcePack/DescriptorParser.cpp814
-rw-r--r--cpp/src/IcePack/DescriptorParser.h34
-rw-r--r--cpp/src/IcePack/DescriptorUtil.cpp216
-rw-r--r--cpp/src/IcePack/DescriptorUtil.h22
-rw-r--r--cpp/src/IcePack/DescriptorVisitor.cpp176
-rw-r--r--cpp/src/IcePack/DescriptorVisitor.h147
-rw-r--r--cpp/src/IcePack/Grammar.y34
-rw-r--r--cpp/src/IcePack/IcePackNode.cpp78
-rw-r--r--cpp/src/IcePack/Internal.ice257
-rw-r--r--cpp/src/IcePack/LocatorI.cpp4
-rw-r--r--cpp/src/IcePack/Makefile47
-rw-r--r--cpp/src/IcePack/NodeI.cpp57
-rw-r--r--cpp/src/IcePack/NodeI.h28
-rw-r--r--cpp/src/IcePack/NodeInfo.cpp93
-rw-r--r--cpp/src/IcePack/NodeInfo.h51
-rw-r--r--cpp/src/IcePack/NodeRegistryI.cpp8
-rw-r--r--cpp/src/IcePack/ObjectRegistryI.cpp10
-rw-r--r--cpp/src/IcePack/ObjectRegistryI.h4
-rw-r--r--cpp/src/IcePack/Parser.cpp725
-rw-r--r--cpp/src/IcePack/Parser.h6
-rw-r--r--cpp/src/IcePack/Registry.cpp15
-rw-r--r--cpp/src/IcePack/Scanner.l6
-rw-r--r--cpp/src/IcePack/ServerAdapterI.cpp26
-rw-r--r--cpp/src/IcePack/ServerAdapterI.h3
-rw-r--r--cpp/src/IcePack/ServerBuilder.cpp710
-rw-r--r--cpp/src/IcePack/ServerBuilder.h74
-rw-r--r--cpp/src/IcePack/ServerFactory.cpp263
-rw-r--r--cpp/src/IcePack/ServerFactory.h20
-rw-r--r--cpp/src/IcePack/ServerI.cpp555
-rw-r--r--cpp/src/IcePack/ServerI.h23
-rw-r--r--cpp/src/IcePack/ServerRegistryI.cpp68
-rw-r--r--cpp/src/IcePack/ServerRegistryI.h12
-rw-r--r--cpp/src/IcePack/ServiceBuilder.cpp188
-rw-r--r--cpp/src/IcePack/ServiceBuilder.h60
-rw-r--r--cpp/src/IcePack/TraceLevels.cpp3
-rw-r--r--cpp/src/IcePack/TraceLevels.h3
-rwxr-xr-xcpp/src/IcePack/dummy4.ice3
-rwxr-xr-xcpp/src/IcePack/dummy5.ice3
-rw-r--r--cpp/src/IcePack/icepackC.dsp16
-rwxr-xr-xcpp/src/IcePack/icepacknode.dsp158
-rwxr-xr-xcpp/src/IcePack/icepackregistry.dsp20
-rw-r--r--cpp/src/IceStorm/Service.cpp15
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();