diff options
Diffstat (limited to 'cpp/include/Ice/OutgoingAsync.h')
-rw-r--r-- | cpp/include/Ice/OutgoingAsync.h | 60 |
1 files changed, 47 insertions, 13 deletions
diff --git a/cpp/include/Ice/OutgoingAsync.h b/cpp/include/Ice/OutgoingAsync.h index d1cec3f6dfd..1d189f31258 100644 --- a/cpp/include/Ice/OutgoingAsync.h +++ b/cpp/include/Ice/OutgoingAsync.h @@ -44,12 +44,12 @@ public: virtual Int getHash() const; - virtual Ice::CommunicatorPtr getCommunicator() const + virtual CommunicatorPtr getCommunicator() const { return _communicator; } - virtual Ice::ConnectionPtr getConnection() const + virtual ConnectionPtr getConnection() const { return 0; } @@ -82,31 +82,39 @@ public: return _operation; } - // - // The following methods are used by begin_ and end_ methods to start or complete - // the asynchronous invocation. - // - IceInternal::BasicStream* + ::IceInternal::BasicStream* __getOs() { return &_os; } - IceInternal::BasicStream* - __getIs() + ::IceInternal::BasicStream* __startReadParams() { + _is.startReadEncaps(); return &_is; } + void __endReadParams() + { + _is.endReadEncaps(); + } + void __readEmptyParams() + { + _is.skipEmptyEncaps(); + } + void __readParamEncaps(const ::Ice::Byte*& encaps, ::Ice::Int& sz) + { + _is.readEncaps(encaps, sz); + } bool __wait(); void __throwUserException(); - void __exceptionAsync(const Ice::Exception&); + void __exceptionAsync(const Exception&); static void __check(const AsyncResultPtr&, const ::IceProxy::Ice::Object*, const ::std::string&); - static void __check(const AsyncResultPtr&, const ::Ice::Connection*, const ::std::string&); - static void __check(const AsyncResultPtr&, const ::Ice::Communicator*, const ::std::string&); + static void __check(const AsyncResultPtr&, const Connection*, const ::std::string&); + static void __check(const AsyncResultPtr&, const Communicator*, const ::std::string&); - void __exception(const Ice::Exception&); // Required to be public for AsynchronousException + void __exception(const Exception&); // Required to be public for AsynchronousException void __sent(); // Required to be public for AsynchronousSent protected: @@ -213,6 +221,31 @@ public: bool __send(bool); + BasicStream* __startWriteParams() + { + _os.startWriteEncaps(_encoding); + return &_os; + } + void __endWriteParams() + { + _os.endWriteEncaps(); + } + void __writeEmptyParams() + { + _os.writeEmptyEncaps(_encoding); + } + void __writeParamEncaps(const ::Ice::Byte* encaps, ::Ice::Int size) + { + if(size == 0) + { + _os.writeEmptyEncaps(_encoding); + } + else + { + _os.writeEncaps(encaps, size); + } + } + protected: Ice::ObjectPrx _proxy; @@ -226,6 +259,7 @@ private: Ice::ConnectionIPtr _timerTaskConnection; Handle< IceDelegate::Ice::Object> _delegate; + Ice::EncodingVersion _encoding; int _cnt; Ice::OperationMode _mode; }; |