summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/BasicStream.cpp2
-rw-r--r--cpp/src/Ice/StreamI.cpp24
-rw-r--r--cpp/src/Ice/StreamI.h4
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;