diff options
-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 | ||||
-rw-r--r-- | cs/src/Ice/InputStream.cs | 6 | ||||
-rw-r--r-- | cs/src/Ice/InputStreamI.cs | 20 | ||||
-rw-r--r-- | cs/src/Ice/OutputStream.cs | 5 | ||||
-rw-r--r-- | cs/src/Ice/OutputStreamI.cs | 23 | ||||
-rw-r--r-- | java/src/Ice/InputStream.java | 6 | ||||
-rw-r--r-- | java/src/Ice/InputStreamI.java | 22 | ||||
-rw-r--r-- | java/src/Ice/OutputStream.java | 5 | ||||
-rw-r--r-- | java/src/Ice/OutputStreamI.java | 26 |
11 files changed, 131 insertions, 51 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; }; } diff --git a/cs/src/Ice/InputStream.cs b/cs/src/Ice/InputStream.cs index 3bbb2decfcf..937bcd5ac9a 100644 --- a/cs/src/Ice/InputStream.cs +++ b/cs/src/Ice/InputStream.cs @@ -53,7 +53,11 @@ namespace Ice void endSlice(); void skipSlice(); - void finished(); + void startEncapsulation(); + void endEncapsulation(); + + void readPendingObjects(); + void destroy(); } } diff --git a/cs/src/Ice/InputStreamI.cs b/cs/src/Ice/InputStreamI.cs index f335bdfc6d8..23328b63c53 100644 --- a/cs/src/Ice/InputStreamI.cs +++ b/cs/src/Ice/InputStreamI.cs @@ -14,7 +14,6 @@ namespace Ice public InputStreamI(Communicator communicator, byte[] data) { _communicator = communicator; - _readObjects = false; _is = new IceInternal.BasicInputStream(Util.getInstance(communicator), this); _is.resize(data.Length, true); @@ -151,7 +150,6 @@ namespace Ice public void readObject(ReadObjectCallback cb) { - _readObjects = true; _is.readObject(new Patcher(cb)); } @@ -180,12 +178,19 @@ namespace Ice _is.skipSlice(); } - public void finished() + public void startEncapsulation() { - if(_readObjects) - { - _is.readPendingObjects(); - } + _is.startReadEncaps(); + } + + public void endEncapsulation() + { + _is.endReadEncaps(); + } + + public void readPendingObjects() + { + _is.readPendingObjects(); } public void destroy() @@ -199,6 +204,5 @@ namespace Ice private Communicator _communicator; private IceInternal.BasicInputStream _is; - private bool _readObjects; } } diff --git a/cs/src/Ice/OutputStream.cs b/cs/src/Ice/OutputStream.cs index c41d0695780..acdd2fe4f24 100644 --- a/cs/src/Ice/OutputStream.cs +++ b/cs/src/Ice/OutputStream.cs @@ -50,6 +50,11 @@ namespace Ice void startSlice(); void endSlice(); + void startEncapsulation(); + void endEncapsulation(); + + void writePendingObjects(); + byte[] finished(); void destroy(); } diff --git a/cs/src/Ice/OutputStreamI.cs b/cs/src/Ice/OutputStreamI.cs index 884fc127da8..b60541718b4 100644 --- a/cs/src/Ice/OutputStreamI.cs +++ b/cs/src/Ice/OutputStreamI.cs @@ -15,7 +15,6 @@ namespace Ice { _communicator = communicator; _os = new IceInternal.BasicOutputStream(Util.getInstance(communicator), this); - _writeObjects = false; } ~OutputStreamI() @@ -120,7 +119,6 @@ namespace Ice public void writeObject(Ice.Object v) { - _writeObjects = true; _os.writeObject(v); } @@ -144,13 +142,23 @@ namespace Ice _os.endWriteSlice(); } - public byte[] finished() + public void startEncapsulation() { - if(_writeObjects) - { - _os.writePendingObjects(); - } + _os.startWriteEncaps(); + } + + public void endEncapsulation() + { + _os.endWriteEncaps(); + } + + public void writePendingObjects() + { + _os.writePendingObjects(); + } + public byte[] finished() + { IceInternal.ByteBuffer buf = _os.prepareWrite(); byte[] result = new byte[buf.limit()]; buf.get(result); @@ -169,6 +177,5 @@ namespace Ice private Communicator _communicator; private IceInternal.BasicOutputStream _os; - private bool _writeObjects; } } diff --git a/java/src/Ice/InputStream.java b/java/src/Ice/InputStream.java index 09261f9a208..314be25ab7c 100644 --- a/java/src/Ice/InputStream.java +++ b/java/src/Ice/InputStream.java @@ -53,6 +53,10 @@ public interface InputStream void endSlice(); void skipSlice(); - void finished(); + void startEncapsulation(); + void endEncapsulation(); + + void readPendingObjects(); + void destroy(); } diff --git a/java/src/Ice/InputStreamI.java b/java/src/Ice/InputStreamI.java index bb67207e9be..e901b5dd8a1 100644 --- a/java/src/Ice/InputStreamI.java +++ b/java/src/Ice/InputStreamI.java @@ -15,7 +15,6 @@ public class InputStreamI implements InputStream InputStreamI(Communicator communicator, byte[] data) { _communicator = communicator; - _readObjects = false; _is = new IceInternal.BasicInputStream(Util.getInstance(communicator), this); _is.resize(data.length, true); @@ -177,7 +176,6 @@ public class InputStreamI implements InputStream public void readObject(ReadObjectCallback cb) { - _readObjects = true; _is.readObject(new Patcher(cb)); } @@ -213,12 +211,21 @@ public class InputStreamI implements InputStream } public void - finished() + startEncapsulation() { - if(_readObjects) - { - _is.readPendingObjects(); - } + _is.startReadEncaps(); + } + + public void + endEncapsulation() + { + _is.endReadEncaps(); + } + + public void + readPendingObjects() + { + _is.readPendingObjects(); } public void @@ -233,5 +240,4 @@ public class InputStreamI implements InputStream private Communicator _communicator; private IceInternal.BasicInputStream _is; - private boolean _readObjects; } diff --git a/java/src/Ice/OutputStream.java b/java/src/Ice/OutputStream.java index 529355f1281..d38e9586fcd 100644 --- a/java/src/Ice/OutputStream.java +++ b/java/src/Ice/OutputStream.java @@ -50,6 +50,11 @@ public interface OutputStream void startSlice(); void endSlice(); + void startEncapsulation(); + void endEncapsulation(); + + void writePendingObjects(); + byte[] finished(); void destroy(); } diff --git a/java/src/Ice/OutputStreamI.java b/java/src/Ice/OutputStreamI.java index c3b82a3f3cc..2855cb4bceb 100644 --- a/java/src/Ice/OutputStreamI.java +++ b/java/src/Ice/OutputStreamI.java @@ -16,7 +16,6 @@ public class OutputStreamI implements OutputStream { _communicator = communicator; _os = new IceInternal.BasicOutputStream(Util.getInstance(communicator), this); - _writeObjects = false; } protected void @@ -143,7 +142,6 @@ public class OutputStreamI implements OutputStream public void writeObject(Ice.Object v) { - _writeObjects = true; _os.writeObject(v); } @@ -171,14 +169,27 @@ public class OutputStreamI implements OutputStream _os.endWriteSlice(); } + public void + startEncapsulation() + { + _os.startWriteEncaps(); + } + + public void + endEncapsulation() + { + _os.endWriteEncaps(); + } + + public void + writePendingObjects() + { + _os.writePendingObjects(); + } + public byte[] finished() { - if(_writeObjects) - { - _os.writePendingObjects(); - } - java.nio.ByteBuffer buf = _os.prepareWrite(); byte[] result = new byte[buf.limit()]; buf.get(result); @@ -198,5 +209,4 @@ public class OutputStreamI implements OutputStream private Communicator _communicator; private IceInternal.BasicOutputStream _os; - private boolean _writeObjects; } |