ICE 3.4.2
[php5-ice-freebsdport.git] / cpp / src / Ice / Instance.h
blobfec5d2257e23256f5ebef0147475980e7c7d2224
1 // **********************************************************************
2 //
3 // Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved.
4 //
5 // This copy of Ice is licensed to you under the terms described in the
6 // ICE_LICENSE file included in this distribution.
7 //
8 // **********************************************************************
10 #ifndef ICE_INSTANCE_H
11 #define ICE_INSTANCE_H
13 #include <IceUtil/Shared.h>
14 #include <IceUtil/Mutex.h>
15 #include <IceUtil/RecMutex.h>
16 #include <IceUtil/Timer.h>
17 #include <Ice/InstanceF.h>
18 #include <Ice/CommunicatorF.h>
19 #include <Ice/StatsF.h>
20 #include <Ice/TraceLevelsF.h>
21 #include <Ice/DefaultsAndOverridesF.h>
22 #include <Ice/RouterInfoF.h>
23 #include <Ice/LocatorInfoF.h>
24 #include <Ice/ReferenceFactoryF.h>
25 #include <Ice/ProxyFactoryF.h>
26 #include <Ice/ThreadPoolF.h>
27 #include <Ice/ConnectionFactoryF.h>
28 #include <Ice/ConnectionMonitorF.h>
29 #include <Ice/ObjectFactoryManagerF.h>
30 #include <Ice/ObjectAdapterFactoryF.h>
31 #include <Ice/EndpointFactoryManagerF.h>
32 #include <Ice/RetryQueueF.h>
33 #include <Ice/DynamicLibraryF.h>
34 #include <Ice/PluginF.h>
35 #include <Ice/Initialize.h>
36 #include <Ice/ImplicitContextI.h>
37 #include <Ice/FacetMap.h>
38 #include <Ice/Process.h>
39 #include <list>
40 #include <memory>
42 namespace Ice
45 class CommunicatorI;
49 namespace IceInternal
52 class Instance : public IceUtil::Shared, public IceUtil::RecMutex
54 public:
56 bool destroyed() const;
57 const Ice::InitializationData& initializationData() const { return _initData; }
58 void stats(const Ice::StatsPtr&);
59 TraceLevelsPtr traceLevels() const;
60 DefaultsAndOverridesPtr defaultsAndOverrides() const;
61 RouterManagerPtr routerManager() const;
62 LocatorManagerPtr locatorManager() const;
63 ReferenceFactoryPtr referenceFactory() const;
64 ProxyFactoryPtr proxyFactory() const;
65 OutgoingConnectionFactoryPtr outgoingConnectionFactory() const;
66 ConnectionMonitorPtr connectionMonitor() const;
67 ObjectFactoryManagerPtr servantFactoryManager() const;
68 ObjectAdapterFactoryPtr objectAdapterFactory() const;
69 ProtocolSupport protocolSupport() const;
70 ThreadPoolPtr clientThreadPool();
71 ThreadPoolPtr serverThreadPool();
72 EndpointHostResolverPtr endpointHostResolver();
73 RetryQueuePtr retryQueue();
74 IceUtil::TimerPtr timer();
75 EndpointFactoryManagerPtr endpointFactoryManager() const;
76 DynamicLibraryListPtr dynamicLibraryList() const;
77 Ice::PluginManagerPtr pluginManager() const;
78 size_t messageSizeMax() const { return _messageSizeMax; }
79 Ice::Int clientACM() const;
80 Ice::Int serverACM() const;
81 Ice::Identity stringToIdentity(const std::string&) const;
82 std::string identityToString(const Ice::Identity&) const;
84 Ice::ObjectPrx getAdmin();
85 void addAdminFacet(const Ice::ObjectPtr&, const std::string&);
86 Ice::ObjectPtr removeAdminFacet(const std::string&);
88 const Ice::ImplicitContextIPtr& getImplicitContext() const
90 return _implicitContext;
93 void setDefaultLocator(const Ice::LocatorPrx&);
94 void setDefaultRouter(const Ice::RouterPrx&);
96 void setStringConverter(const Ice::StringConverterPtr&);
97 void setWstringConverter(const Ice::WstringConverterPtr&);
98 void setLogger(const Ice::LoggerPtr&);
99 void setThreadHook(const Ice::ThreadNotificationPtr&);
101 private:
103 Instance(const Ice::CommunicatorPtr&, const Ice::InitializationData&);
104 virtual ~Instance();
105 void finishSetup(int&, char*[]);
106 bool destroy();
107 friend class Ice::CommunicatorI;
109 enum State
111 StateActive,
112 StateDestroyInProgress,
113 StateDestroyed
115 State _state;
116 Ice::InitializationData _initData;
117 const TraceLevelsPtr _traceLevels; // Immutable, not reset by destroy().
118 const DefaultsAndOverridesPtr _defaultsAndOverrides; // Immutable, not reset by destroy().
119 const size_t _messageSizeMax; // Immutable, not reset by destroy().
120 const Ice::Int _clientACM; // Immutable, not reset by destroy().
121 const Ice::Int _serverACM; // Immutable, not reset by destroy().
122 RouterManagerPtr _routerManager;
123 LocatorManagerPtr _locatorManager;
124 ReferenceFactoryPtr _referenceFactory;
125 ProxyFactoryPtr _proxyFactory;
126 OutgoingConnectionFactoryPtr _outgoingConnectionFactory;
127 ConnectionMonitorPtr _connectionMonitor;
128 ObjectFactoryManagerPtr _servantFactoryManager;
129 ObjectAdapterFactoryPtr _objectAdapterFactory;
130 ProtocolSupport _protocolSupport;
131 ThreadPoolPtr _clientThreadPool;
132 ThreadPoolPtr _serverThreadPool;
133 EndpointHostResolverPtr _endpointHostResolver;
134 RetryQueuePtr _retryQueue;
135 IceUtil::TimerPtr _timer;
136 EndpointFactoryManagerPtr _endpointFactoryManager;
137 DynamicLibraryListPtr _dynamicLibraryList;
138 Ice::PluginManagerPtr _pluginManager;
139 const Ice::ImplicitContextIPtr _implicitContext;
140 Ice::ObjectAdapterPtr _adminAdapter;
141 Ice::FacetMap _adminFacets;
142 Ice::Identity _adminIdentity;
143 std::set<std::string> _adminFacetFilter;
146 class UTF8BufferI : public Ice::UTF8Buffer
148 public:
150 UTF8BufferI();
151 ~UTF8BufferI();
153 Ice::Byte* getMoreBytes(size_t howMany, Ice::Byte* firstUnused);
154 Ice::Byte* getBuffer();
155 void reset();
157 private:
159 Ice::Byte* _buffer;
160 size_t _offset;
163 class ProcessI : public Ice::Process
165 public:
167 ProcessI(const Ice::CommunicatorPtr&);
169 virtual void shutdown(const Ice::Current&);
170 virtual void writeMessage(const std::string&, Ice::Int, const Ice::Current&);
172 private:
174 const Ice::CommunicatorPtr _communicator;
179 #endif