diff options
author | Benoit Foucher <benoit@zeroc.com> | 2008-01-21 13:20:59 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2008-01-21 13:20:59 +0100 |
commit | 52bd621c7d3fa7b144d8fad7941ac8d43e942be8 (patch) | |
tree | bdd7565282d503251d82205ce7fe3e57102a96d2 /cpp/src/Ice/Reference.h | |
parent | async I/O in C# (diff) | |
download | ice-52bd621c7d3fa7b144d8fad7941ac8d43e942be8.tar.bz2 ice-52bd621c7d3fa7b144d8fad7941ac8d43e942be8.tar.xz ice-52bd621c7d3fa7b144d8fad7941ac8d43e942be8.zip |
- Removed OA createReverseProxy method.
- Fixed bug 2141, 2645, 2632, 1547.
- It's now possible to call ice_secure on a fixed proxy to require a secure connetion.
Diffstat (limited to 'cpp/src/Ice/Reference.h')
-rw-r--r-- | cpp/src/Ice/Reference.h | 257 |
1 files changed, 97 insertions, 160 deletions
diff --git a/cpp/src/Ice/Reference.h b/cpp/src/Ice/Reference.h index e9b862c01df..73227635201 100644 --- a/cpp/src/Ice/Reference.h +++ b/cpp/src/Ice/Reference.h @@ -42,13 +42,6 @@ public: }; typedef IceUtil::Handle<GetConnectionCallback> GetConnectionCallbackPtr; - enum Type - { - TypeDirect, - TypeIndirect, - TypeFixed - }; - enum Mode { ModeTwoway, @@ -60,6 +53,7 @@ public: }; Mode getMode() const { return _mode; } + bool getSecure() const { return _secure; } const Ice::Identity& getIdentity() const { return _identity; } const std::string& getFacet() const { return _facet; } const InstancePtr& getInstance() const { return _instance; } @@ -69,19 +63,16 @@ public: Ice::CommunicatorPtr getCommunicator() const; - virtual RouterInfoPtr getRouterInfo() const { return 0; } - virtual LocatorInfoPtr getLocatorInfo() const { return 0; } - - virtual Type getType() const = 0; - virtual bool getSecure() const = 0; - virtual bool getPreferSecure() const = 0; - virtual std::string getAdapterId() const = 0; virtual std::vector<EndpointIPtr> getEndpoints() const = 0; - virtual bool getCollocationOptimization() const = 0; - virtual int getLocatorCacheTimeout() const = 0; + virtual std::string getAdapterId() const = 0; + virtual LocatorInfoPtr getLocatorInfo() const { return 0; } + virtual RouterInfoPtr getRouterInfo() const { return 0; } + virtual bool getCollocationOptimized() const = 0; virtual bool getCacheConnection() const = 0; + virtual bool getPreferSecure() const = 0; virtual Ice::EndpointSelectionType getEndpointSelection() const = 0; virtual bool getThreadPerConnection() const = 0; + virtual int getLocatorCacheTimeout() const = 0; // // The change* methods (here and in derived classes) create @@ -90,27 +81,34 @@ public: // ReferencePtr changeContext(const Ice::Context&) const; ReferencePtr changeMode(Mode) const; + ReferencePtr changeSecure(bool) const; ReferencePtr changeIdentity(const Ice::Identity&) const; ReferencePtr changeFacet(const std::string&) const; virtual ReferencePtr changeCompress(bool) const; - virtual ReferencePtr changeSecure(bool) const = 0; - virtual ReferencePtr changePreferSecure(bool) const = 0; - virtual ReferencePtr changeRouter(const Ice::RouterPrx&) const = 0; - virtual ReferencePtr changeLocator(const Ice::LocatorPrx&) const = 0; - virtual ReferencePtr changeTimeout(int) const = 0; - virtual ReferencePtr changeConnectionId(const std::string&) const = 0; - virtual ReferencePtr changeCollocationOptimization(bool) const = 0; - virtual ReferencePtr changeAdapterId(const std::string&) const = 0; virtual ReferencePtr changeEndpoints(const std::vector<EndpointIPtr>&) const = 0; + virtual ReferencePtr changeAdapterId(const std::string&) const = 0; + virtual ReferencePtr changeLocator(const Ice::LocatorPrx&) const = 0; + virtual ReferencePtr changeRouter(const Ice::RouterPrx&) const = 0; + virtual ReferencePtr changeCollocationOptimized(bool) const = 0; virtual ReferencePtr changeLocatorCacheTimeout(int) const = 0; virtual ReferencePtr changeCacheConnection(bool) const = 0; + virtual ReferencePtr changePreferSecure(bool) const = 0; virtual ReferencePtr changeEndpointSelection(Ice::EndpointSelectionType) const = 0; virtual ReferencePtr changeThreadPerConnection(bool) const = 0; + + virtual ReferencePtr changeTimeout(int) const = 0; + virtual ReferencePtr changeConnectionId(const std::string&) const = 0; virtual int hash() const; // Conceptually const. // + // Utility methods. + // + virtual bool isIndirect() const = 0; + virtual bool isWellKnown() const = 0; + + // // Marshal the reference. // virtual void streamWrite(BasicStream*) const; @@ -126,34 +124,39 @@ public: virtual Ice::ConnectionIPtr getConnection(bool&) const = 0; virtual void getConnection(const GetConnectionCallbackPtr&) const = 0; - virtual bool operator==(const Reference&) const = 0; - virtual bool operator!=(const Reference&) const = 0; - virtual bool operator<(const Reference&) const = 0; + virtual bool operator==(const Reference&) const; + virtual bool operator!=(const Reference&) const; + virtual bool operator<(const Reference&) const; virtual ReferencePtr clone() const = 0; protected: Reference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&, - const std::string&, Mode); + const std::string&, Mode, bool); Reference(const Reference&); - IceUtil::RecMutex _hashMutex; // For lazy initialization of hash value. + void hashInit() const; + + IceUtil::Mutex _hashMutex; // For lazy initialization of hash value. mutable Ice::Int _hashValue; mutable bool _hashInitialized; - bool _overrideCompress; - bool _compress; // Only used if _overrideCompress == true - private: const InstancePtr _instance; const Ice::CommunicatorPtr _communicator; Mode _mode; + bool _secure; Ice::Identity _identity; SharedContextPtr _context; std::string _facet; + +protected: + + bool _overrideCompress; + bool _compress; // Only used if _overrideCompress == true }; class FixedReference : public Reference @@ -161,32 +164,33 @@ class FixedReference : public Reference public: FixedReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&, - const std::string&, Mode, const std::vector<Ice::ConnectionIPtr>&); + const std::string&, Mode, bool, const Ice::ConnectionIPtr&); - virtual Type getType() const; - virtual bool getSecure() const; - virtual bool getPreferSecure() const; - virtual std::string getAdapterId() const; virtual std::vector<EndpointIPtr> getEndpoints() const; - virtual bool getCollocationOptimization() const; - virtual int getLocatorCacheTimeout() const; + virtual std::string getAdapterId() const; + virtual bool getCollocationOptimized() const; virtual bool getCacheConnection() const; + virtual bool getPreferSecure() const; virtual Ice::EndpointSelectionType getEndpointSelection() const; virtual bool getThreadPerConnection() const; + virtual int getLocatorCacheTimeout() const; - virtual ReferencePtr changeSecure(bool) const; - virtual ReferencePtr changePreferSecure(bool) const; - virtual ReferencePtr changeRouter(const Ice::RouterPrx&) const; - virtual ReferencePtr changeLocator(const Ice::LocatorPrx&) const; - virtual ReferencePtr changeCollocationOptimization(bool) const; - virtual ReferencePtr changeTimeout(int) const; - virtual ReferencePtr changeConnectionId(const std::string&) const; - virtual ReferencePtr changeLocatorCacheTimeout(int) const; - virtual ReferencePtr changeAdapterId(const std::string&) const; virtual ReferencePtr changeEndpoints(const std::vector<EndpointIPtr>&) const; + virtual ReferencePtr changeAdapterId(const std::string&) const; + virtual ReferencePtr changeLocator(const Ice::LocatorPrx&) const; + virtual ReferencePtr changeRouter(const Ice::RouterPrx&) const; + virtual ReferencePtr changeCollocationOptimized(bool) const; virtual ReferencePtr changeCacheConnection(bool) const; + virtual ReferencePtr changePreferSecure(bool) const; virtual ReferencePtr changeEndpointSelection(Ice::EndpointSelectionType) const; virtual ReferencePtr changeThreadPerConnection(bool) const; + virtual ReferencePtr changeLocatorCacheTimeout(int) const; + + virtual ReferencePtr changeTimeout(int) const; + virtual ReferencePtr changeConnectionId(const std::string&) const; + + virtual bool isIndirect() const; + virtual bool isWellKnown() const; virtual void streamWrite(BasicStream*) const; virtual std::string toString() const; @@ -200,101 +204,55 @@ public: virtual ReferencePtr clone() const; -protected: +private: FixedReference(const FixedReference&); - std::vector<Ice::ConnectionIPtr> filterConnections(const std::vector<Ice::ConnectionIPtr>&) const; - -private: - - std::vector<Ice::ConnectionIPtr> _fixedConnections; + Ice::ConnectionIPtr _fixedConnection; }; class RoutableReference : public Reference { public: - virtual RouterInfoPtr getRouterInfo() const { return _routerInfo; } + RoutableReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&, + const std::string&, Mode, bool, const std::vector<EndpointIPtr>&, const std::string&, + const LocatorInfoPtr&, const RouterInfoPtr&, bool, bool, bool, Ice::EndpointSelectionType, bool, + int); - virtual bool getSecure() const; - virtual bool getPreferSecure() const; - virtual bool getCollocationOptimization() const; + virtual std::vector<EndpointIPtr> getEndpoints() const; + virtual std::string getAdapterId() const; + virtual LocatorInfoPtr getLocatorInfo() const; + virtual RouterInfoPtr getRouterInfo() const; + virtual bool getCollocationOptimized() const; virtual bool getCacheConnection() const; + virtual bool getPreferSecure() const; virtual Ice::EndpointSelectionType getEndpointSelection() const; virtual bool getThreadPerConnection() const; + virtual int getLocatorCacheTimeout() const; - virtual ReferencePtr changeSecure(bool) const; - virtual ReferencePtr changePreferSecure(bool) const; + virtual ReferencePtr changeCompress(bool) const; + virtual ReferencePtr changeEndpoints(const std::vector<EndpointIPtr>&) const; + virtual ReferencePtr changeAdapterId(const std::string&) const; + virtual ReferencePtr changeLocator(const Ice::LocatorPrx&) const; virtual ReferencePtr changeRouter(const Ice::RouterPrx&) const; - virtual ReferencePtr changeCollocationOptimization(bool) const; - virtual ReferencePtr changeTimeout(int) const; - virtual ReferencePtr changeConnectionId(const std::string&) const; + virtual ReferencePtr changeCollocationOptimized(bool) const; virtual ReferencePtr changeCacheConnection(bool) const; + virtual ReferencePtr changePreferSecure(bool) const; virtual ReferencePtr changeEndpointSelection(Ice::EndpointSelectionType) const; virtual ReferencePtr changeThreadPerConnection(bool) const; + virtual ReferencePtr changeLocatorCacheTimeout(int) const; - virtual int hash() const; - - virtual bool operator==(const Reference&) const = 0; - virtual bool operator!=(const Reference&) const = 0; - virtual bool operator<(const Reference&) const = 0; - - virtual ReferencePtr clone() const = 0; - - Ice::ConnectionIPtr createConnection(const std::vector<EndpointIPtr>&, bool&) const; - void createConnection(const std::vector<EndpointIPtr>&, const GetConnectionCallbackPtr&) const; - void applyOverrides(std::vector<EndpointIPtr>&) const; - -protected: - - RoutableReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&, - const std::string&, Mode, bool, bool, const RouterInfoPtr&, bool, bool, - Ice::EndpointSelectionType, bool); - RoutableReference(const RoutableReference&); - - std::vector<EndpointIPtr> filterEndpoints(const std::vector<EndpointIPtr>&) const; - -private: - - bool _secure; - bool _preferSecure; - RouterInfoPtr _routerInfo; // Null if no router is used. - bool _collocationOptimization; - bool _cacheConnection; - Ice::EndpointSelectionType _endpointSelection; - - std::string _connectionId; - bool _overrideTimeout; - int _timeout; // Only used if _overrideTimeout == true - bool _threadPerConnection; -}; - -class DirectReference : public RoutableReference -{ -public: - - DirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&, - const std::string&, Mode, bool, bool, const std::vector<EndpointIPtr>&, const RouterInfoPtr&, bool, - bool, Ice::EndpointSelectionType, bool); - - virtual Type getType() const; - virtual int getLocatorCacheTimeout() const; - virtual std::string getAdapterId() const; - virtual std::vector<EndpointIPtr> getEndpoints() const; - - virtual ReferencePtr changeLocator(const Ice::LocatorPrx&) const; - virtual ReferencePtr changeCompress(bool) const; virtual ReferencePtr changeTimeout(int) const; virtual ReferencePtr changeConnectionId(const std::string&) const; - virtual ReferencePtr changeLocatorCacheTimeout(int) const; - virtual ReferencePtr changeAdapterId(const std::string&) const; - virtual ReferencePtr changeEndpoints(const std::vector<EndpointIPtr>&) const; + + virtual int hash() const; + + virtual bool isIndirect() const; + virtual bool isWellKnown() const; virtual void streamWrite(BasicStream*) const; virtual std::string toString() const; - virtual Ice::ConnectionIPtr getConnection(bool&) const; - virtual void getConnection(const GetConnectionCallbackPtr&) const; virtual bool operator==(const Reference&) const; virtual bool operator!=(const Reference&) const; @@ -302,58 +260,37 @@ public: virtual ReferencePtr clone() const; -protected: - - DirectReference(const DirectReference&); - -private: - - std::vector<EndpointIPtr> _endpoints; -}; - -class IndirectReference : public RoutableReference -{ -public: - - IndirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&, - const std::string&, Mode, bool, bool, const std::string&, const RouterInfoPtr&, - const LocatorInfoPtr&, bool, bool, Ice::EndpointSelectionType, bool, int); - - virtual LocatorInfoPtr getLocatorInfo() const { return _locatorInfo; } - - virtual Type getType() const; - virtual int getLocatorCacheTimeout() const; - virtual std::string getAdapterId() const; - virtual std::vector<EndpointIPtr> getEndpoints() const; - - virtual ReferencePtr changeLocator(const Ice::LocatorPrx&) const; - virtual ReferencePtr changeLocatorCacheTimeout(int) const; - virtual ReferencePtr changeAdapterId(const std::string&) const; - virtual ReferencePtr changeEndpoints(const std::vector<EndpointIPtr>&) const; - - virtual void streamWrite(BasicStream*) const; - virtual std::string toString() const; virtual Ice::ConnectionIPtr getConnection(bool&) const; virtual void getConnection(const GetConnectionCallbackPtr&) const; virtual void getConnectionNoRouterInfo(const GetConnectionCallbackPtr&) const; - virtual int hash() const; // Conceptually const. - - virtual bool operator==(const Reference&) const; - virtual bool operator!=(const Reference&) const; - virtual bool operator<(const Reference&) const; - - virtual ReferencePtr clone() const; + Ice::ConnectionIPtr createConnection(const std::vector<EndpointIPtr>&, bool&) const; + void createConnection(const std::vector<EndpointIPtr>&, const GetConnectionCallbackPtr&) const; + void applyOverrides(std::vector<EndpointIPtr>&) const; protected: - IndirectReference(const IndirectReference&); + RoutableReference(const RoutableReference&); + + std::vector<EndpointIPtr> filterEndpoints(const std::vector<EndpointIPtr>&) const; private: + + std::vector<EndpointIPtr> _endpoints; // Empty if indirect proxy. + std::string _adapterId; // Empty if direct proxy. - std::string _adapterId; - LocatorInfoPtr _locatorInfo; + LocatorInfoPtr _locatorInfo; // Null if no locator is used. + RouterInfoPtr _routerInfo; // Null if no router is used. + bool _collocationOptimized; + bool _cacheConnection; + bool _preferSecure; + Ice::EndpointSelectionType _endpointSelection; + bool _threadPerConnection; int _locatorCacheTimeout; + + bool _overrideTimeout; + int _timeout; // Only used if _overrideTimeout == true + std::string _connectionId; }; } |