diff --git a/Net/include/Poco/Net/WebSocket.h b/Net/include/Poco/Net/WebSocket.h index a394b161d..d738d45b1 100644 --- a/Net/include/Poco/Net/WebSocket.h +++ b/Net/include/Poco/Net/WebSocket.h @@ -1,7 +1,7 @@ // // WebSocket.h // -// $Id: //poco/1.4/Net/include/Poco/Net/WebSocket.h#1 $ +// $Id: //poco/1.4/Net/include/Poco/Net/WebSocket.h#2 $ // // Library: Net // Package: WebSocket @@ -185,16 +185,19 @@ public: /// /// The result of the handshake can be obtained from the response /// object. - + + WebSocket(const Socket& socket); + /// Creates a WebSocket from another Socket, which must be a WebSocket, + /// otherwise a Poco::InvalidArgumentException will be thrown. + virtual ~WebSocket(); /// Destroys the StreamSocket. WebSocket& operator = (const Socket& socket); /// Assignment operator. /// - /// Releases the socket's SocketImpl and - /// attaches the SocketImpl from the other socket and - /// increments the reference count of the SocketImpl. + /// The other socket must be a WebSocket, otherwise a Poco::InvalidArgumentException + /// will be thrown. void shutdown(); /// Sends a Close control frame to the server end of diff --git a/Net/src/WebSocket.cpp b/Net/src/WebSocket.cpp index 249165696..5729d11fe 100644 --- a/Net/src/WebSocket.cpp +++ b/Net/src/WebSocket.cpp @@ -1,7 +1,7 @@ // // WebSocket.cpp // -// $Id: //poco/1.4/Net/src/WebSocket.cpp#4 $ +// $Id: //poco/1.4/Net/src/WebSocket.cpp#6 $ // // Library: Net // Package: WebSocket @@ -79,6 +79,14 @@ WebSocket::WebSocket(HTTPClientSession& cs, HTTPRequest& request, HTTPResponse& } +WebSocket::WebSocket(const Socket& socket): + StreamSocket(socket) +{ + if (!dynamic_cast(impl())) + throw InvalidArgumentException("Cannot assign incompatible socket"); +} + + WebSocket::~WebSocket() { }