diff options
Diffstat (limited to 'cpp/include/Ice/Object.h')
-rw-r--r-- | cpp/include/Ice/Object.h | 115 |
1 files changed, 82 insertions, 33 deletions
diff --git a/cpp/include/Ice/Object.h b/cpp/include/Ice/Object.h index 0a7e7aec98a..235c2e6349d 100644 --- a/cpp/include/Ice/Object.h +++ b/cpp/include/Ice/Object.h @@ -16,14 +16,20 @@ #include <Ice/ProxyF.h> #include <Ice/IncomingAsyncF.h> #include <Ice/Current.h> -#include <Ice/StreamF.h> #include <Ice/Format.h> +namespace Ice +{ + +class OutputStream; +class InpputStream; + +} + namespace IceInternal { class Incoming; -class BasicStream; class Direct; class GCVisitor; @@ -32,6 +38,8 @@ class GCVisitor; namespace Ice { +ICE_API extern const Current noExplicitCurrent; + enum DispatchStatus { DispatchOK, @@ -43,14 +51,14 @@ enum DispatchStatus 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 +class ICE_API Request { public: @@ -58,63 +66,95 @@ public: virtual const Current& getCurrent() = 0; }; -class ICE_API Object : virtual public IceUtil::Shared + +#ifdef ICE_CPP11_MAPPING +class ICE_API Object { public: + virtual ~Object() = default; + virtual bool operator==(const Object&) const; virtual bool operator<(const Object&) const; - virtual bool ice_isA(const std::string&, const Current& = Current()) const; + virtual bool ice_isA(std::string, const Current& = Ice::noExplicitCurrent) const; DispatchStatus ___ice_isA(IceInternal::Incoming&, const Current&); - virtual void ice_ping(const Current& = Current()) const; + virtual void ice_ping(const Current& = Ice::noExplicitCurrent) const; DispatchStatus ___ice_ping(IceInternal::Incoming&, const Current&); - virtual std::vector< std::string> ice_ids(const Current& = Current()) const; + virtual std::vector< std::string> ice_ids(const Current& = Ice::noExplicitCurrent) const; DispatchStatus ___ice_ids(IceInternal::Incoming&, const Current&); - virtual const std::string& ice_id(const Current& = Current()) const; + virtual const std::string& ice_id(const Current& = Ice::noExplicitCurrent) const; DispatchStatus ___ice_id(IceInternal::Incoming&, const Current&); - virtual Int ice_operationAttributes(const std::string&) const; - static const std::string& ice_staticId(); - virtual ObjectPtr ice_clone() const; - - virtual void ice_preMarshal(); - virtual void ice_postUnmarshal(); - static std::string __all[]; virtual DispatchStatus ice_dispatch(Ice::Request&, const DispatchInterceptorAsyncCallbackPtr& = 0); virtual DispatchStatus __dispatch(IceInternal::Incoming&, const Current&); - virtual void __write(IceInternal::BasicStream*) const; - virtual void __read(IceInternal::BasicStream*); +protected: + + static void __checkMode(OperationMode, OperationMode); +}; +#else +class ICE_API Object : public virtual IceUtil::Shared +{ +public: + + virtual bool operator==(const Object&) const; + virtual bool operator<(const Object&) const; - virtual void __write(const OutputStreamPtr&) const; - virtual void __read(const InputStreamPtr&); + virtual bool ice_isA(const std::string&, const Current& = Ice::noExplicitCurrent) const; + DispatchStatus ___ice_isA(IceInternal::Incoming&, const Current&); + + virtual void ice_ping(const Current& = Ice::noExplicitCurrent) const; + DispatchStatus ___ice_ping(IceInternal::Incoming&, const Current&); + + virtual std::vector< std::string> ice_ids(const Current& = Ice::noExplicitCurrent) const; + DispatchStatus ___ice_ids(IceInternal::Incoming&, const Current&); + + virtual const std::string& ice_id(const Current& = Ice::noExplicitCurrent) const; + DispatchStatus ___ice_id(IceInternal::Incoming&, const Current&); + + virtual Int ice_operationAttributes(const std::string&) const; + + virtual void __write(Ice::OutputStream*) const; + virtual void __read(Ice::InputStream*); virtual bool __gcVisit(IceInternal::GCVisitor&) { return false; }; virtual void ice_collectable(bool) { }; + virtual void ice_preMarshal(); + virtual void ice_postUnmarshal(); + + static const std::string& ice_staticId(); + + virtual ObjectPtr ice_clone() const; + + static std::string __all[]; + + virtual DispatchStatus ice_dispatch(Ice::Request&, const DispatchInterceptorAsyncCallbackPtr& = 0); + virtual DispatchStatus __dispatch(IceInternal::Incoming&, const Current&); + protected: Object() {} // This class is abstract. virtual ~Object() {} - virtual void __writeImpl(IceInternal::BasicStream*) const {} - virtual void __readImpl(IceInternal::BasicStream*) {} +protected: - virtual void __writeImpl(const OutputStreamPtr&) const; - virtual void __readImpl(const InputStreamPtr&); + virtual void __writeImpl(Ice::OutputStream*) const {} + virtual void __readImpl(Ice::InputStream*) {} static void __checkMode(OperationMode, OperationMode); }; +#endif -class ICE_API Blobject : virtual public Object +class ICE_API Blobject : public virtual Object { public: @@ -126,7 +166,7 @@ public: virtual DispatchStatus __dispatch(IceInternal::Incoming&, const Current&); }; -class ICE_API BlobjectArray : virtual public Object +class ICE_API BlobjectArray : public virtual Object { public: @@ -138,28 +178,37 @@ public: virtual DispatchStatus __dispatch(IceInternal::Incoming&, const Current&); }; -class ICE_API BlobjectAsync : virtual public Object +class ICE_API BlobjectAsync : public virtual Object { public: +#ifdef ICE_CPP11_MAPPING + virtual void ice_invoke_async(std::vector<Byte>, + std::function<void (bool, std::vector<Byte>)>, + std::function<void (std::exception_ptr)>, + const Current&) = 0; +#else virtual void ice_invoke_async(const AMD_Object_ice_invokePtr&, const std::vector<Byte>&, const Current&) = 0; - +#endif virtual DispatchStatus __dispatch(IceInternal::Incoming&, const Current&); }; -class ICE_API BlobjectArrayAsync : virtual public Object +class ICE_API BlobjectArrayAsync : public virtual Object { public: +#ifdef ICE_CPP11_MAPPING + virtual void ice_invoke_async(std::pair<const Byte*, const Byte*>, + std::function<void (bool, std::pair<const Byte*, const Byte*>)>, + std::function<void (std::exception_ptr)>, + const Current&) = 0; +#else virtual void ice_invoke_async(const AMD_Object_ice_invokePtr&, const std::pair<const Byte*, const Byte*>&, const Current&) = 0; - +#endif virtual DispatchStatus __dispatch(IceInternal::Incoming&, const Current&); }; -ICE_API void ice_writeObject(const OutputStreamPtr&, const ObjectPtr&); -ICE_API void ice_readObject(const InputStreamPtr&, ObjectPtr&); - } #endif |