diff options
author | Brent Eagles <brent@zeroc.com> | 2006-09-13 11:05:43 +0000 |
---|---|---|
committer | Brent Eagles <brent@zeroc.com> | 2006-09-13 11:05:43 +0000 |
commit | d05310f424bbfb80c53b8697663f949f96c9a261 (patch) | |
tree | fa6988b1319ea7d6d0fd1b7407cb2763923de6ca /cpp/src/Ice/Instance.cpp | |
parent | Fixes (diff) | |
download | ice-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.cpp | 25 |
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); |