summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Instance.cpp
diff options
context:
space:
mode:
authorBrent Eagles <brent@zeroc.com>2006-09-13 11:05:43 +0000
committerBrent Eagles <brent@zeroc.com>2006-09-13 11:05:43 +0000
commitd05310f424bbfb80c53b8697663f949f96c9a261 (patch)
treefa6988b1319ea7d6d0fd1b7407cb2763923de6ca /cpp/src/Ice/Instance.cpp
parentFixes (diff)
downloadice-d05310f424bbfb80c53b8697663f949f96c9a261.tar.bz2
ice-d05310f424bbfb80c53b8697663f949f96c9a261.tar.xz
ice-d05310f424bbfb80c53b8697663f949f96c9a261.zip
- Updating Ice and library verison to 3.2.
- Adding memory pool implementation. Enabled by default. - Added disablePool option to test suite to run tests without the pool. - Added Ice.MemoryPool and Ice.HighWaterMark properties.
Diffstat (limited to 'cpp/src/Ice/Instance.cpp')
-rw-r--r--cpp/src/Ice/Instance.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp
index d72faa0b850..fb1807d1d4f 100644
--- a/cpp/src/Ice/Instance.cpp
+++ b/cpp/src/Ice/Instance.cpp
@@ -34,6 +34,7 @@
#include <Ice/PluginManagerI.h>
#include <Ice/Initialize.h>
#include <IceUtil/StringUtil.h>
+#include <Ice/MemoryPool.h>
#include <stdio.h>
@@ -451,6 +452,12 @@ IceInternal::Instance::identityToString(const Identity& ident) const
}
}
+IceInternal::MemoryPool*
+IceInternal::Instance::memoryPool() const
+{
+ return _memoryPool;
+}
+
IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const InitializationData& initData) :
_state(StateActive),
_initData(initData),
@@ -459,7 +466,8 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi
_serverACM(0),
_threadPerConnection(0),
_threadPerConnectionStackSize(0),
- _defaultContext(new SharedContext(initData.defaultContext))
+ _defaultContext(new SharedContext(initData.defaultContext)),
+ _memoryPool(0)
{
try
{
@@ -669,6 +677,19 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi
_pluginManager = new PluginManagerI(communicator, _dynamicLibraryList);
+ if(_initData.properties->getPropertyAsIntWithDefault("Ice.MemoryPool", 1) == 1)
+ {
+
+ //
+ // High watermark defaults to 4 * max page size.
+ //
+ size_t highWaterMark = _initData.properties->getPropertyAsIntWithDefault("Ice.MemoryPool.HighWaterMark", 128);
+ const size_t megaByte = 1024 * 1024;
+
+ highWaterMark *= megaByte;
+ _memoryPool = new MemoryPool(highWaterMark);
+ }
+
_outgoingConnectionFactory = new OutgoingConnectionFactory(this);
_servantFactoryManager = new ObjectFactoryManager();
@@ -700,6 +721,8 @@ IceInternal::Instance::~Instance()
assert(!_referenceFactory);
assert(!_proxyFactory);
assert(!_outgoingConnectionFactory);
+ delete _memoryPool;
+
assert(!_connectionMonitor);
assert(!_servantFactoryManager);
assert(!_objectAdapterFactory);