summaryrefslogtreecommitdiff
path: root/cpp/include/Ice/Object.h
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2007-05-16 19:14:39 +0000
committerBernard Normier <bernard@zeroc.com>2007-05-16 19:14:39 +0000
commit93349d8446a3847d38c8bed0cefb71cdecb0570a (patch)
tree1426813a2e221e92dc7ce56c36d4aba240ed0c96 /cpp/include/Ice/Object.h
parentBug 1996 - multihomed hostnames (diff)
downloadice-93349d8446a3847d38c8bed0cefb71cdecb0570a.tar.bz2
ice-93349d8446a3847d38c8bed0cefb71cdecb0570a.tar.xz
ice-93349d8446a3847d38c8bed0cefb71cdecb0570a.zip
New Dispatch Interceptor (see bug #2126)
Diffstat (limited to 'cpp/include/Ice/Object.h')
-rw-r--r--cpp/include/Ice/Object.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/cpp/include/Ice/Object.h b/cpp/include/Ice/Object.h
index d09690f0499..3b4e8390c26 100644
--- a/cpp/include/Ice/Object.h
+++ b/cpp/include/Ice/Object.h
@@ -11,6 +11,7 @@
#define ICE_OBJECT_H
#include <IceUtil/Mutex.h>
+#include <IceUtil/Shared.h>
#include <Ice/GCShared.h>
#include <Ice/ObjectF.h>
#include <Ice/ProxyF.h>
@@ -23,6 +24,7 @@ namespace IceInternal
class Incoming;
class BasicStream;
+class Direct;
enum DispatchStatus
{
@@ -42,6 +44,25 @@ enum DispatchStatus
namespace Ice
{
+class ICE_API DispatchInterceptorAsyncCallback : public virtual IceUtil::Shared
+{
+public:
+
+ virtual bool response(bool) = 0;
+ virtual bool exception(const std::exception&) = 0;
+ virtual bool exception() = 0;
+};
+typedef IceUtil::Handle<DispatchInterceptorAsyncCallback> DispatchInterceptorAsyncCallbackPtr;
+
+class ICE_API Request
+{
+public:
+
+ virtual ~Request() {}
+ virtual bool isCollocated() = 0;
+ virtual const Current& getCurrent() = 0;
+};
+
//
// No virtual inheritance from IceInternal::GCShared is required. This
// used to be virtual inheritance from IceUtil::Shared, because we
@@ -81,7 +102,10 @@ public:
virtual void ice_postUnmarshal();
static std::string __all[];
+
+ virtual IceInternal::DispatchStatus ice_dispatch(Ice::Request&, const DispatchInterceptorAsyncCallbackPtr& = 0);
virtual IceInternal::DispatchStatus __dispatch(IceInternal::Incoming&, const Current&);
+ virtual IceInternal::DispatchStatus __collocDispatch(IceInternal::Direct&);
virtual void __write(IceInternal::BasicStream*) const;
virtual void __read(IceInternal::BasicStream*, bool);