diff options
Diffstat (limited to 'cpp/include')
-rw-r--r-- | cpp/include/Ice/BasicStream.h | 8 | ||||
-rw-r--r-- | cpp/include/Ice/Stream.h | 24 |
2 files changed, 32 insertions, 0 deletions
diff --git a/cpp/include/Ice/BasicStream.h b/cpp/include/Ice/BasicStream.h index 7cab7da51ef..30edcafb305 100644 --- a/cpp/include/Ice/BasicStream.h +++ b/cpp/include/Ice/BasicStream.h @@ -97,6 +97,9 @@ public: // Instance* instance() const { return _instance; } // Inlined for performance reasons. + void* closure() const; + void* closure(void*); + void swap(BasicStream&); void resize(Container::size_type sz) @@ -594,6 +597,11 @@ private: // Instance* _instance; + // + // The public stream API needs to attach data to a stream. + // + void* _closure; + class ICE_API ReadEncaps : private ::IceUtil::noncopyable { public: diff --git a/cpp/include/Ice/Stream.h b/cpp/include/Ice/Stream.h index 30955233120..526df7e11ad 100644 --- a/cpp/include/Ice/Stream.h +++ b/cpp/include/Ice/Stream.h @@ -198,6 +198,30 @@ private: void* _arg; }; +class ICE_API UserExceptionWriter : public UserException +{ +public: + + UserExceptionWriter(const Ice::CommunicatorPtr&); + ~UserExceptionWriter() throw(); + + virtual void write(const OutputStreamPtr&) const = 0; + virtual bool usesClasses() const = 0; + + virtual std::string ice_name() const = 0; + virtual Ice::Exception* ice_clone() const = 0; + virtual void ice_throw() const = 0; + + virtual void __write(IceInternal::BasicStream*) const; + virtual void __read(IceInternal::BasicStream*, bool); + + virtual bool __usesClasses() const; + +protected: + + Ice::CommunicatorPtr _communicator; +}; + } #endif |