Home | History | Annotate | Download | only in base
      1 /*
      2  *  Copyright 2004 The WebRTC Project Authors. All rights reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #ifndef WEBRTC_BASE_SOCKETFACTORY_H__
     12 #define WEBRTC_BASE_SOCKETFACTORY_H__
     13 
     14 #include "webrtc/base/socket.h"
     15 #include "webrtc/base/asyncsocket.h"
     16 
     17 namespace rtc {
     18 
     19 class SocketFactory {
     20 public:
     21   virtual ~SocketFactory() {}
     22 
     23   // Returns a new socket for blocking communication.  The type can be
     24   // SOCK_DGRAM and SOCK_STREAM.
     25   // TODO: C++ inheritance rules mean that all users must have both
     26   // CreateSocket(int) and CreateSocket(int,int). Will remove CreateSocket(int)
     27   // (and CreateAsyncSocket(int) when all callers are changed.
     28   virtual Socket* CreateSocket(int type) = 0;
     29   virtual Socket* CreateSocket(int family, int type) = 0;
     30   // Returns a new socket for nonblocking communication.  The type can be
     31   // SOCK_DGRAM and SOCK_STREAM.
     32   virtual AsyncSocket* CreateAsyncSocket(int type) = 0;
     33   virtual AsyncSocket* CreateAsyncSocket(int family, int type) = 0;
     34 };
     35 
     36 } // namespace rtc
     37 
     38 #endif // WEBRTC_BASE_SOCKETFACTORY_H__
     39