// ********************************************************************** // // Copyright (c) 2003-2007 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_INSTANCE_H #define ICE_INSTANCE_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Ice { class CommunicatorI; } namespace IceInternal { class Instance : public IceUtil::Shared, public IceUtil::RecMutex { public: bool destroyed() const; const Ice::InitializationData& initializationData() const { return _initData; } void stats(const Ice::StatsPtr&); TraceLevelsPtr traceLevels() const; DefaultsAndOverridesPtr defaultsAndOverrides() const; RouterManagerPtr routerManager() const; LocatorManagerPtr locatorManager() const; ReferenceFactoryPtr referenceFactory() const; ProxyFactoryPtr proxyFactory() const; OutgoingConnectionFactoryPtr outgoingConnectionFactory() const; ConnectionMonitorPtr connectionMonitor() const; ObjectFactoryManagerPtr servantFactoryManager() const; ObjectAdapterFactoryPtr objectAdapterFactory() const; ThreadPoolPtr clientThreadPool(); ThreadPoolPtr serverThreadPool(); IceUtil::TimerPtr timer(); bool threadPerConnection() const; size_t threadPerConnectionStackSize() const; EndpointFactoryManagerPtr endpointFactoryManager() const; DynamicLibraryListPtr dynamicLibraryList() const; Ice::PluginManagerPtr pluginManager() const; size_t messageSizeMax() const { return _messageSizeMax; } Ice::Int clientACM() const; Ice::Int serverACM() const; void flushBatchRequests(); void setDefaultContext(const ::Ice::Context&); SharedContextPtr getDefaultContext() const; Ice::Identity stringToIdentity(const std::string&) const; std::string identityToString(const Ice::Identity&) const; Ice::ObjectPrx getAdmin(); void addAdminFacet(const Ice::ObjectPtr&, const std::string&); Ice::ObjectPtr removeAdminFacet(const std::string&); const Ice::ImplicitContextIPtr& getImplicitContext() const { return _implicitContext; } private: Instance(const Ice::CommunicatorPtr&, const Ice::InitializationData&); virtual ~Instance(); void finishSetup(int&, char*[]); bool destroy(); friend class Ice::CommunicatorI; enum State { StateActive, StateDestroyInProgress, StateDestroyed }; State _state; Ice::InitializationData _initData; const TraceLevelsPtr _traceLevels; // Immutable, not reset by destroy(). const DefaultsAndOverridesPtr _defaultsAndOverrides; // Immutable, not reset by destroy(). const size_t _messageSizeMax; // Immutable, not reset by destroy(). const Ice::Int _clientACM; // Immutable, not reset by destroy(). const Ice::Int _serverACM; // Immutable, not reset by destroy(). RouterManagerPtr _routerManager; LocatorManagerPtr _locatorManager; ReferenceFactoryPtr _referenceFactory; ProxyFactoryPtr _proxyFactory; OutgoingConnectionFactoryPtr _outgoingConnectionFactory; ConnectionMonitorPtr _connectionMonitor; ObjectFactoryManagerPtr _servantFactoryManager; ObjectAdapterFactoryPtr _objectAdapterFactory; ThreadPoolPtr _clientThreadPool; ThreadPoolPtr _serverThreadPool; IceUtil::TimerPtr _timer; const bool _threadPerConnection; const size_t _threadPerConnectionStackSize; EndpointFactoryManagerPtr _endpointFactoryManager; DynamicLibraryListPtr _dynamicLibraryList; Ice::PluginManagerPtr _pluginManager; SharedContextPtr _defaultContext; const Ice::ImplicitContextIPtr _implicitContext; Ice::ObjectAdapterPtr _adminAdapter; Ice::FacetMap _adminFacets; Ice::Identity _adminIdentity; std::set _adminFacetFilter; }; class UTF8BufferI : public Ice::UTF8Buffer { public: UTF8BufferI(); ~UTF8BufferI(); Ice::Byte* getMoreBytes(size_t howMany, Ice::Byte* firstUnused); Ice::Byte* getBuffer(); void reset(); private: Ice::Byte* _buffer; size_t _offset; }; class ProcessI : public Ice::Process { public: ProcessI(const Ice::CommunicatorPtr&); virtual void shutdown(const Ice::Current&); virtual void writeMessage(const std::string&, Ice::Int, const Ice::Current&); private: const Ice::CommunicatorPtr _communicator; }; } #endif