1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef NET_WEBSOCKETS_WEBSOCKET_STREAM_BASE_H_ 6 #define NET_WEBSOCKETS_WEBSOCKET_STREAM_BASE_H_ 7 8 // This file is included from net/http files. 9 // Since net/http can be built without linking net/websockets code, 10 // this file should not depend on net/websockets. 11 12 #include <base/basictypes.h> 13 14 namespace net { 15 16 class ClientSocketHandle; 17 class SpdySession; 18 class WebSocketStream; 19 20 // WebSocketStreamBase is the base class of WebSocketStream. 21 // net/http code uses this interface to handle WebSocketStream. 22 class NET_EXPORT WebSocketStreamBase { 23 public: 24 class Factory { 25 public: 26 virtual ~Factory() {} 27 28 // Create a WebSocketBasicStream. 29 // This function (or the returned object) takes the ownership 30 // of |connection|. 31 virtual WebSocketStreamBase* CreateBasicStream( 32 ClientSocketHandle* connection, 33 bool using_proxy) = 0; 34 35 // Create a WebSocketSpdyStream. 36 virtual WebSocketStreamBase* CreateSpdyStream( 37 const base::WeakPtr<SpdySession>& session, 38 bool use_relative_url) = 0; 39 }; 40 41 virtual ~WebSocketStreamBase() {} 42 43 // Return this object as a WebSocketStream. 44 virtual WebSocketStream* AsWebSocketStream() = 0; 45 46 protected: 47 WebSocketStreamBase() {} 48 49 private: 50 DISALLOW_COPY_AND_ASSIGN(WebSocketStreamBase); 51 }; 52 53 } // namespace net 54 55 #endif // NET_WEBSOCKETS_WEBSOCKET_STREAM_BASE_H_ 56