1 // **********************************************************************
3 // Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved.
5 // This copy of Ice is licensed to you under the terms described in the
6 // ICE_LICENSE file included in this distribution.
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>
52 class Instance
: public IceUtil::Shared
, public IceUtil::RecMutex
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
&);
103 Instance(const Ice::CommunicatorPtr
&, const Ice::InitializationData
&);
105 void finishSetup(int&, char*[]);
107 friend class Ice::CommunicatorI
;
112 StateDestroyInProgress
,
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
153 Ice::Byte
* getMoreBytes(size_t howMany
, Ice::Byte
* firstUnused
);
154 Ice::Byte
* getBuffer();
163 class ProcessI
: public Ice::Process
167 ProcessI(const Ice::CommunicatorPtr
&);
169 virtual void shutdown(const Ice::Current
&);
170 virtual void writeMessage(const std::string
&, Ice::Int
, const Ice::Current
&);
174 const Ice::CommunicatorPtr _communicator
;