// ********************************************************************** // // 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_STREAM_ACCEPTOR_H #define ICE_STREAM_ACCEPTOR_H #include #include #include #include #include #include #include namespace IceInternal { class StreamAcceptor : public Acceptor, public NativeInfo { public: virtual NativeInfoPtr getNativeInfo(); virtual void setCompletedHandler(SocketOperationCompletedHandler^); virtual void close(); virtual EndpointIPtr listen(); virtual void startAccept(); virtual void finishAccept(); virtual TransceiverPtr accept(); virtual std::string protocol() const; virtual std::string toString() const; virtual std::string toDetailedString() const; int effectivePort() const; private: StreamAcceptor(const StreamEndpointIPtr&, const ProtocolInstancePtr&, const std::string&, int); virtual ~StreamAcceptor(); friend class StreamEndpointI; virtual void queueAcceptedSocket(Windows::Networking::Sockets::StreamSocket^); StreamEndpointIPtr _endpoint; const ProtocolInstancePtr _instance; const Address _addr; IceUtil::Mutex _mutex; bool _acceptPending; SocketOperationCompletedHandler^ _completedHandler; std::deque _accepted; }; } #endif