summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp')
-rw-r--r--cpp/config/TestUtil.py4
-rw-r--r--cpp/include/Ice/Buffer.h5
-rw-r--r--cpp/src/Ice/BasicStream.cpp2
-rw-r--r--cpp/src/Ice/Buffer.cpp5
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)