diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/config/TestUtil.py | 4 | ||||
-rw-r--r-- | cpp/include/Ice/Buffer.h | 5 | ||||
-rw-r--r-- | cpp/src/Ice/BasicStream.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/Buffer.cpp | 5 |
4 files changed, 9 insertions, 7 deletions
diff --git a/cpp/config/TestUtil.py b/cpp/config/TestUtil.py index e55b39e2c17..11373100203 100644 --- a/cpp/config/TestUtil.py +++ b/cpp/config/TestUtil.py @@ -28,9 +28,9 @@ compress = 0 # one or two thread per connection mode. # -#threadPerConnection = 0 +threadPerConnection = 0 #threadPerConnection = 1 -threadPerConnection = 2 +#threadPerConnection = 2 # # Set to 1 to disable the memory pool. diff --git a/cpp/include/Ice/Buffer.h b/cpp/include/Ice/Buffer.h index 567084c2c2d..1c37484de36 100644 --- a/cpp/include/Ice/Buffer.h +++ b/cpp/include/Ice/Buffer.h @@ -21,7 +21,7 @@ class ICE_API Buffer : private IceUtil::noncopyable { public: - Buffer(MemoryPool* pool) : b(pool), i(b.begin()) { } + Buffer(MemoryPool* pool, size_t maxCapacity) : b(pool, maxCapacity), i(b.begin()) { } virtual ~Buffer() { } void swap(Buffer&); @@ -43,7 +43,7 @@ public: typedef ptrdiff_t difference_type; typedef size_t size_type; - Container(MemoryPool* pool); + Container(MemoryPool* pool, size_type maxCapacity); ~Container(); @@ -144,6 +144,7 @@ public: pointer _buf; size_type _size; size_type _capacity; + size_type _maxCapacity; int _shrinkCounter; // diff --git a/cpp/src/Ice/BasicStream.cpp b/cpp/src/Ice/BasicStream.cpp index 01eb559d8cd..ec5b2915957 100644 --- a/cpp/src/Ice/BasicStream.cpp +++ b/cpp/src/Ice/BasicStream.cpp @@ -31,7 +31,7 @@ using namespace Ice; using namespace IceInternal; IceInternal::BasicStream::BasicStream(Instance* instance) : - IceInternal::Buffer(instance->memoryPool()), + IceInternal::Buffer(instance->memoryPool(), instance->messageSizeMax()), _instance(instance), _currentReadEncaps(0), _currentWriteEncaps(0), diff --git a/cpp/src/Ice/Buffer.cpp b/cpp/src/Ice/Buffer.cpp index dc8a6595827..1273ea92aaa 100644 --- a/cpp/src/Ice/Buffer.cpp +++ b/cpp/src/Ice/Buffer.cpp @@ -22,10 +22,11 @@ IceInternal::Buffer::swap(Buffer& other) std::swap(i, other.i); } -IceInternal::Buffer::Container::Container(IceInternal::MemoryPool* pool) : +IceInternal::Buffer::Container::Container(IceInternal::MemoryPool* pool, size_type maxCapacity) : _buf(0), _size(0), _capacity(0), + _maxCapacity(maxCapacity), _pool(pool) { } @@ -73,7 +74,7 @@ IceInternal::Buffer::Container::reserve(size_type n) { if(n > _capacity) { - _capacity = std::max<size_type>(n, 2 * _capacity); + _capacity = std::max<size_type>(n, std::min(2 * _capacity, _maxCapacity)); _capacity = std::max<size_type>(static_cast<size_type>(240), _capacity); } else if(n < _capacity) |