Home | History | Annotate | Download | only in glue
      1 // Copyright (c) 2011 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 WEBKIT_GLUE_P2P_TRANSPORT_H_
      6 #define WEBKIT_GLUE_P2P_TRANSPORT_H_
      7 
      8 #include <string>
      9 
     10 namespace net {
     11 class Socket;
     12 }  // namespace net
     13 
     14 namespace webkit_glue {
     15 
     16 // Interface for P2P transport.
     17 class P2PTransport {
     18  public:
     19   enum State {
     20     STATE_NONE = 0,
     21     STATE_WRITABLE = 1,
     22     STATE_READABLE = 2,
     23   };
     24 
     25   class EventHandler {
     26    public:
     27     virtual ~EventHandler() {}
     28 
     29     // Called for each local candidate.
     30     virtual void OnCandidateReady(const std::string& address) = 0;
     31 
     32     // Called when readable of writable state of the stream changes.
     33     virtual void OnStateChange(State state) = 0;
     34   };
     35 
     36   virtual ~P2PTransport() {}
     37 
     38   // Initialize transport using specified configuration. Returns true
     39   // if initialization succeeded.
     40   virtual bool Init(const std::string& name,
     41                     const std::string& config,
     42                     EventHandler* event_handler) = 0;
     43 
     44   // Add candidate received from the remote peer. Returns false if the
     45   // provided address is not in a valid format.
     46   virtual bool AddRemoteCandidate(const std::string& address) = 0;
     47 
     48   // Returns socket interface that can be used to send/receive
     49   // data. Returned object is owned by the transport. Pending calls on
     50   // the socket are canceled when the transport is destroyed.
     51   virtual net::Socket* GetChannel() = 0;
     52 };
     53 
     54 }  // namespace webkit_glue
     55 
     56 #endif  // WEBKIT_GLUE_P2P_TRANSPORT_H_
     57