diff options
author | Bernard Normier <bernard@zeroc.com> | 2007-05-16 19:14:39 +0000 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2007-05-16 19:14:39 +0000 |
commit | 93349d8446a3847d38c8bed0cefb71cdecb0570a (patch) | |
tree | 1426813a2e221e92dc7ce56c36d4aba240ed0c96 /cpp/include/Ice/Object.h | |
parent | Bug 1996 - multihomed hostnames (diff) | |
download | ice-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.h | 24 |
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); |