diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/BasicStream.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/StreamI.cpp | 24 | ||||
-rw-r--r-- | cpp/src/Ice/StreamI.h | 4 |
3 files changed, 30 insertions, 0 deletions
diff --git a/cpp/src/Ice/BasicStream.cpp b/cpp/src/Ice/BasicStream.cpp index 069d6ddee52..0841bb297f5 100644 --- a/cpp/src/Ice/BasicStream.cpp +++ b/cpp/src/Ice/BasicStream.cpp @@ -72,6 +72,8 @@ IceInternal::BasicStream::clear() } delete _objectList; + _objectList = 0; + _sliceObjects = true; } void* diff --git a/cpp/src/Ice/StreamI.cpp b/cpp/src/Ice/StreamI.cpp index c0006b817c0..c347c653f5a 100644 --- a/cpp/src/Ice/StreamI.cpp +++ b/cpp/src/Ice/StreamI.cpp @@ -327,6 +327,13 @@ Ice::InputStreamI::readPendingObjects() _is->readPendingObjects(); } +void +Ice::InputStreamI::rewind() +{ + _is->clear(); + _is->i = _is->b.begin(); +} + // // OutputStreamI // @@ -631,6 +638,23 @@ Ice::OutputStreamI::finished(vector<Byte>& bytes) vector<Byte>(_os->b.begin(), _os->b.end()).swap(bytes); } +void +Ice::OutputStreamI::reset(bool clearBuffer) +{ + _os->clear(); + + if(clearBuffer) + { + _os->b.clear(); + } + else + { + _os->b.reset(); + } + + _os->i = _os->b.begin(); +} + // // ObjectReader // diff --git a/cpp/src/Ice/StreamI.h b/cpp/src/Ice/StreamI.h index 874f7624b6d..4f5aba6b70f 100644 --- a/cpp/src/Ice/StreamI.h +++ b/cpp/src/Ice/StreamI.h @@ -85,6 +85,8 @@ public: virtual void readPendingObjects(); + virtual void rewind(); + private: Ice::CommunicatorPtr _communicator; @@ -158,6 +160,8 @@ public: virtual void finished(std::vector< Ice::Byte >&); + virtual void reset(bool); + private: Ice::CommunicatorPtr _communicator; |