1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
// **********************************************************************
//
// Copyright (c) 2003 - 2004
// ZeroC, Inc.
// North Palm Beach, FL, USA
//
// 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 <IceUtil/Shared.h>
#include <IceUtil/Mutex.h>
#include <IceUtil/RecMutex.h>
#include <Ice/InstanceF.h>
#include <Ice/CommunicatorF.h>
#include <Ice/PropertiesF.h>
#include <Ice/LoggerF.h>
#include <Ice/StatsF.h>
#include <Ice/TraceLevelsF.h>
#include <Ice/DefaultsAndOverridesF.h>
#include <Ice/RouterInfoF.h>
#include <Ice/LocatorInfoF.h>
#include <Ice/ReferenceFactoryF.h>
#include <Ice/ProxyFactoryF.h>
#include <Ice/ThreadPoolF.h>
#include <Ice/ConnectionFactoryF.h>
#include <Ice/ConnectionMonitorF.h>
#include <Ice/ObjectFactoryManagerF.h>
#include <Ice/ObjectAdapterFactoryF.h>
#include <Ice/EndpointFactoryManagerF.h>
#include <Ice/DynamicLibraryF.h>
#include <Ice/PluginF.h>
#include <list>
namespace Ice
{
class CommunicatorI;
}
namespace IceInternal
{
class Instance : public IceUtil::Shared, public IceUtil::RecMutex
{
public:
Ice::PropertiesPtr properties();
Ice::LoggerPtr logger();
void logger(const Ice::LoggerPtr&);
Ice::StatsPtr stats();
void stats(const Ice::StatsPtr&);
TraceLevelsPtr traceLevels();
DefaultsAndOverridesPtr defaultsAndOverrides();
RouterManagerPtr routerManager();
LocatorManagerPtr locatorManager();
ReferenceFactoryPtr referenceFactory();
ProxyFactoryPtr proxyFactory();
OutgoingConnectionFactoryPtr outgoingConnectionFactory();
ConnectionMonitorPtr connectionMonitor();
ObjectFactoryManagerPtr servantFactoryManager();
ObjectAdapterFactoryPtr objectAdapterFactory();
ThreadPoolPtr clientThreadPool();
ThreadPoolPtr serverThreadPool();
EndpointFactoryManagerPtr endpointFactoryManager();
DynamicLibraryListPtr dynamicLibraryList();
Ice::PluginManagerPtr pluginManager();
size_t messageSizeMax() const;
Ice::Int connectionIdleTime() const;
void flushBatchRequests();
private:
Instance(const Ice::CommunicatorPtr&, const Ice::PropertiesPtr&);
virtual ~Instance();
void finishSetup(int&, char*[]);
void destroy();
friend class Ice::CommunicatorI;
bool _destroyed;
const Ice::PropertiesPtr _properties; // Immutable, not reset by destroy().
Ice::LoggerPtr _logger; // Not reset by destroy().
Ice::StatsPtr _stats; // Not reset by destroy().
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 _connectionIdleTime; // 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;
EndpointFactoryManagerPtr _endpointFactoryManager;
DynamicLibraryListPtr _dynamicLibraryList;
Ice::PluginManagerPtr _pluginManager;
//
// Global state management
//
friend class GlobalStateMutexDestroyer;
static int _globalStateCounter;
//
// This is *not* a StaticMutex. Only the pointer is static, but not
// the mutex itself.
//
static IceUtil::Mutex* _globalStateMutex;
#ifndef _WIN32
static std::string _identForOpenlog;
#endif
};
}
#endif
|