Home | History | Annotate | Download | only in websockets
      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