summaryrefslogtreecommitdiff
path: root/cpp/include/Ice/Stream.h
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2007-11-05 12:19:49 -0800
committerMark Spruiell <mes@zeroc.com>2007-11-05 12:19:49 -0800
commit3c8924663df8629b33c2ddd38907c4bf2eeb83cd (patch)
tree83b63f2396201019163d140555e42d79f82e46d3 /cpp/include/Ice/Stream.h
parentMerge branch 'master' of ssh://cvs.zeroc.com/home/git/ice (diff)
downloadice-3c8924663df8629b33c2ddd38907c4bf2eeb83cd.tar.bz2
ice-3c8924663df8629b33c2ddd38907c4bf2eeb83cd.tar.xz
ice-3c8924663df8629b33c2ddd38907c4bf2eeb83cd.zip
- Fixing bug 2522 for Python. This involved adding the C++ class
UserExceptionWriter so that the Python extension can wrap a native Python user exception into something that the C++ run time can marshal. Also ported the changes to the servantLocator test. - Implementing UserExceptionWriter in Java and C#. - Consolidating the source files for the C# streaming API.
Diffstat (limited to 'cpp/include/Ice/Stream.h')
-rw-r--r--cpp/include/Ice/Stream.h24
1 files changed, 24 insertions, 0 deletions
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