summaryrefslogtreecommitdiff
path: root/cpp/include
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/include')
-rw-r--r--cpp/include/Ice/BasicStream.h8
-rw-r--r--cpp/include/Ice/Stream.h24
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