// ********************************************************************** // // Copyright (c) 2002 // MutableRealms, Inc. // Huntsville, AL, USA // // All Rights Reserved // // ********************************************************************** #ifndef ICE_INSTANCE_H #define ICE_INSTANCE_H #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 JTCMutex { public: ::Ice::CommunicatorPtr communicator(); ::Ice::PropertiesPtr properties(); ::Ice::LoggerPtr logger(); void logger(const ::Ice::LoggerPtr&); TraceLevelsPtr traceLevels(); ProxyFactoryPtr proxyFactory(); EmitterFactoryPtr emitterFactory(); ObjectFactoryManagerPtr servantFactoryManager(); UserExceptionFactoryManagerPtr userExceptionFactoryManager(); ObjectAdapterFactoryPtr objectAdapterFactory(); ThreadPoolPtr threadPool(); private: Instance(const ::Ice::CommunicatorPtr&, const ::Ice::PropertiesPtr&); virtual ~Instance(); void destroy(); friend class ::Ice::CommunicatorI; ::Ice::CommunicatorPtr _communicator; ::Ice::PropertiesPtr _properties; ::Ice::LoggerPtr _logger; TraceLevelsPtr _traceLevels; ProxyFactoryPtr _proxyFactory; EmitterFactoryPtr _emitterFactory; ObjectFactoryManagerPtr _servantFactoryManager; UserExceptionFactoryManagerPtr _userExceptionFactoryManager; ObjectAdapterFactoryPtr _objectAdapterFactory; ThreadPoolPtr _threadPool; // // Global state management // friend class GlobalStateMutexDestroyer; static int _globalStateCounter; static JTCMutex* _globalStateMutex; static JTCInitialize* _globalStateJTC; #ifndef WIN32 static std::string _identForOpenlog; #endif }; } #endif