diff options
author | Mark Spruiell <mes@zeroc.com> | 2004-11-08 21:30:39 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2004-11-08 21:30:39 +0000 |
commit | 0a2c609553bc07209a1a545b8cf90ea7ca03a2c2 (patch) | |
tree | 14c5cf403e7f460d83d2b88e8d29d88a140b82d2 /cpp | |
parent | adding --stream option (diff) | |
download | ice-0a2c609553bc07209a1a545b8cf90ea7ca03a2c2.tar.bz2 ice-0a2c609553bc07209a1a545b8cf90ea7ca03a2c2.tar.xz ice-0a2c609553bc07209a1a545b8cf90ea7ca03a2c2.zip |
adding support for encapsulations, pending objects
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/include/Ice/Stream.h | 10 | ||||
-rw-r--r-- | cpp/src/Ice/StreamI.cpp | 47 | ||||
-rw-r--r-- | cpp/src/Ice/StreamI.h | 12 |
3 files changed, 52 insertions, 17 deletions
diff --git a/cpp/include/Ice/Stream.h b/cpp/include/Ice/Stream.h index f641f25ccf3..9166442b13a 100644 --- a/cpp/include/Ice/Stream.h +++ b/cpp/include/Ice/Stream.h @@ -73,7 +73,10 @@ public: virtual void endSlice() = 0; virtual void skipSlice() = 0; - virtual void finished() = 0; + virtual void startEncapsulation() = 0; + virtual void endEncapsulation() = 0; + + virtual void readPendingObjects() = 0; }; class ICE_API OutputStream : public ::IceUtil::Shared @@ -119,6 +122,11 @@ public: virtual void startSlice() = 0; virtual void endSlice() = 0; + virtual void startEncapsulation() = 0; + virtual void endEncapsulation() = 0; + + virtual void writePendingObjects() = 0; + virtual void finished(::std::vector< ::Ice::Byte >&) = 0; }; diff --git a/cpp/src/Ice/StreamI.cpp b/cpp/src/Ice/StreamI.cpp index 5475f659f54..f60f7dd4bfd 100644 --- a/cpp/src/Ice/StreamI.cpp +++ b/cpp/src/Ice/StreamI.cpp @@ -33,7 +33,7 @@ IceInternal::BasicOutputStream::BasicOutputStream(IceInternal::Instance* instanc // InputStreamI // Ice::InputStreamI::InputStreamI(const Ice::CommunicatorPtr& communicator, const vector<Byte>& data) : - _communicator(communicator), _is(IceInternal::getInstance(communicator).get(), this), _readObjects(false) + _communicator(communicator), _is(IceInternal::getInstance(communicator).get(), this) { _is.b = data; _is.i = _is.b.begin(); @@ -210,7 +210,6 @@ patchObject(void* addr, ObjectPtr& v) void Ice::InputStreamI::readObject(const ReadObjectCallbackPtr& cb) { - _readObjects = true; _callbacks.push_back(cb); // Keep reference to callback. _is.read(patchObject, cb.get()); } @@ -242,25 +241,34 @@ Ice::InputStreamI::endSlice() } void +Ice::InputStreamI::startEncapsulation() +{ + _is.startReadEncaps(); +} + +void +Ice::InputStreamI::endEncapsulation() +{ + _is.endReadEncaps(); +} + +void Ice::InputStreamI::skipSlice() { _is.skipSlice(); } void -Ice::InputStreamI::finished() +Ice::InputStreamI::readPendingObjects() { - if(_readObjects) - { - _is.readPendingObjects(); - } + _is.readPendingObjects(); } // // OutputStreamI // Ice::OutputStreamI::OutputStreamI(const Ice::CommunicatorPtr& communicator) : - _communicator(communicator), _os(IceInternal::getInstance(communicator).get(), this), _writeObjects(false) + _communicator(communicator), _os(IceInternal::getInstance(communicator).get(), this) { } @@ -385,7 +393,6 @@ Ice::OutputStreamI::writeProxy(const ObjectPrx& v) void Ice::OutputStreamI::writeObject(const ObjectPtr& v) { - _writeObjects = true; _os.write(v); } @@ -414,12 +421,26 @@ Ice::OutputStreamI::endSlice() } void +Ice::OutputStreamI::startEncapsulation() +{ + _os.startWriteEncaps(); +} + +void +Ice::OutputStreamI::endEncapsulation() +{ + _os.endWriteEncaps(); +} + +void +Ice::OutputStreamI::writePendingObjects() +{ + _os.writePendingObjects(); +} + +void Ice::OutputStreamI::finished(vector<Byte>& bytes) { - if(_writeObjects) - { - _os.writePendingObjects(); - } bytes.swap(_os.b); } diff --git a/cpp/src/Ice/StreamI.h b/cpp/src/Ice/StreamI.h index 7868c932435..bf930509001 100644 --- a/cpp/src/Ice/StreamI.h +++ b/cpp/src/Ice/StreamI.h @@ -98,13 +98,15 @@ public: virtual void endSlice(); virtual void skipSlice(); - virtual void finished(); + virtual void startEncapsulation(); + virtual void endEncapsulation(); + + virtual void readPendingObjects(); private: Ice::CommunicatorPtr _communicator; IceInternal::BasicInputStream _is; - bool _readObjects; ::std::vector< ReadObjectCallbackPtr > _callbacks; }; @@ -158,13 +160,17 @@ public: virtual void startSlice(); virtual void endSlice(); + virtual void startEncapsulation(); + virtual void endEncapsulation(); + + virtual void writePendingObjects(); + virtual void finished(::std::vector< ::Ice::Byte >&); private: Ice::CommunicatorPtr _communicator; IceInternal::BasicOutputStream _os; - bool _writeObjects; }; } |