// ********************************************************************** // // Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved. // // This copy of Ice is licensed to you under the terms described in the // ICE_LICENSE file included in this distribution. // // ********************************************************************** #ifndef ICE_TCP_ENDPOINT_I_H #define ICE_TCP_ENDPOINT_I_H #include #include #include #include #include // for IceIternal::Address #include namespace IceInternal { class StreamEndpointI : public IPEndpointI, public WSEndpointDelegate { public: StreamEndpointI(const ProtocolInstancePtr&, const std::string&, Ice::Int, Ice::Int, const std::string&, bool); StreamEndpointI(const ProtocolInstancePtr&); StreamEndpointI(const ProtocolInstancePtr&, BasicStream*); virtual Ice::EndpointInfoPtr getInfo() const; virtual Ice::EndpointInfoPtr getWSInfo(const std::string&) const; virtual Ice::Int timeout() const; virtual EndpointIPtr timeout(Ice::Int) const; virtual EndpointIPtr connectionId(const ::std::string&) const; virtual bool compress() const; virtual EndpointIPtr compress(bool) const; virtual bool datagram() const; virtual bool secure() const; virtual TransceiverPtr transceiver() const; virtual AcceptorPtr acceptor(const std::string&) const; virtual std::string options() const; virtual bool operator==(const Ice::LocalObject&) const; virtual bool operator<(const Ice::LocalObject&) const; StreamEndpointIPtr endpoint(const StreamAcceptorPtr&) const; using IPEndpointI::connectionId; protected: virtual void streamWriteImpl(BasicStream*) const; virtual void hashInit(Ice::Int&) const; virtual void initWithOptions(std::vector&, bool); virtual void fillEndpointInfo(Ice::IPEndpointInfo*) const; virtual bool checkOption(const std::string&, const std::string&, const std::string&); virtual ConnectorPtr createConnector(const Address&, const NetworkProxyPtr&) const; virtual IPEndpointIPtr createEndpoint(const std::string&, int, const std::string&) const; private: // // All members are const, because endpoints are immutable. // const Ice::Int _timeout; const bool _compress; }; class StreamEndpointFactory : public EndpointFactory { public: StreamEndpointFactory(const ProtocolInstancePtr&); virtual ~StreamEndpointFactory(); virtual Ice::Short type() const; virtual std::string protocol() const; virtual EndpointIPtr create(std::vector&, bool) const; virtual EndpointIPtr read(BasicStream*) const; virtual void destroy(); virtual EndpointFactoryPtr clone(const ProtocolInstancePtr&) const; private: ProtocolInstancePtr _instance; }; } #endif