| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 // | 4 // | 
| 5 // This file defines the interface for peer-to-peer transport. There | 5 // This file defines the interface for peer-to-peer transport. There | 
| 6 // are two types of transport: StreamTransport and DatagramTransport. | 6 // are two types of transport: StreamTransport and DatagramTransport. | 
| 7 // They must both be created using TransportFactory instances and they | 7 // They must both be created using TransportFactory instances and they | 
| 8 // provide the same interface, except that one should be used for | 8 // provide the same interface, except that one should be used for | 
| 9 // reliable stream connection and the other one for unreliable | 9 // reliable stream connection and the other one for unreliable | 
| 10 // datagram connection. The Transport interface itself doesn't provide | 10 // datagram connection. The Transport interface itself doesn't provide | 
| 11 // methods to send/receive data. Instead it creates an instance of | 11 // methods to send/receive data. Instead it creates an instance of | 
| 12 // net::Socket or net::SocketStream which provides access to the data | 12 // P2PDatagramSocket which provides access to the data channel. After a | 
| 13 // channel. After a new transport is Initialize()'ed the Connect() | 13 // new transport is Initialize()'ed the Connect() method must be called. | 
| 14 // method must be called. Connect() starts asynchronous creation and | 14 // Connect() starts asynchronous creation and initialization of the | 
| 15 // initialization of the connection socket that can be used later to | 15 // connection socket that can be used later to send and receive data. | 
| 16 // send and receive data. The socket is passed to the callback | 16 // The socket is passed to the callback specified in the Connect() call. | 
| 17 // specified in the Connect() call. The Transport object must exist | 17 // The Transport object must exist during the whole lifetime of the | 
| 18 // during the whole lifetime of the connection socket. Later deletion | 18 // connection socket. Later deletion of the connection socket causes | 
| 19 // of the connection socket causes teardown of the corresponding | 19 // teardown of the corresponding Transport object. | 
| 20 // Transport object. |  | 
| 21 | 20 | 
| 22 #ifndef REMOTING_PROTOCOL_TRANSPORT_H_ | 21 #ifndef REMOTING_PROTOCOL_TRANSPORT_H_ | 
| 23 #define REMOTING_PROTOCOL_TRANSPORT_H_ | 22 #define REMOTING_PROTOCOL_TRANSPORT_H_ | 
| 24 | 23 | 
| 25 #include <string> | 24 #include <string> | 
| 26 | 25 | 
| 27 #include "base/basictypes.h" | 26 #include "base/basictypes.h" | 
| 28 #include "base/callback_forward.h" | 27 #include "base/callback_forward.h" | 
| 29 #include "base/memory/scoped_ptr.h" | 28 #include "base/memory/scoped_ptr.h" | 
| 30 #include "base/threading/non_thread_safe.h" | 29 #include "base/threading/non_thread_safe.h" | 
| 31 #include "net/base/ip_endpoint.h" | 30 #include "net/base/ip_endpoint.h" | 
| 32 | 31 | 
| 33 namespace cricket { | 32 namespace cricket { | 
| 34 class Candidate; | 33 class Candidate; | 
| 35 }  // namespace cricket | 34 }  // namespace cricket | 
| 36 | 35 | 
| 37 namespace net { |  | 
| 38 class Socket; |  | 
| 39 class StreamSocket; |  | 
| 40 }  // namespace net |  | 
| 41 |  | 
| 42 namespace remoting { | 36 namespace remoting { | 
| 43 namespace protocol { | 37 namespace protocol { | 
| 44 | 38 | 
| 45 class ChannelAuthenticator; | 39 class ChannelAuthenticator; | 
|  | 40 class P2PDatagramSocket; | 
| 46 | 41 | 
| 47 enum class TransportRole { | 42 enum class TransportRole { | 
| 48   SERVER, | 43   SERVER, | 
| 49   CLIENT, | 44   CLIENT, | 
| 50 }; | 45 }; | 
| 51 | 46 | 
| 52 struct TransportRoute { | 47 struct TransportRoute { | 
| 53   enum RouteType { | 48   enum RouteType { | 
| 54     DIRECT, | 49     DIRECT, | 
| 55     STUN, | 50     STUN, | 
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 91     virtual void OnTransportRouteChange(Transport* transport, | 86     virtual void OnTransportRouteChange(Transport* transport, | 
| 92                                         const TransportRoute& route) = 0; | 87                                         const TransportRoute& route) = 0; | 
| 93 | 88 | 
| 94     // Called when when the transport has failed to connect or reconnect. | 89     // Called when when the transport has failed to connect or reconnect. | 
| 95     virtual void OnTransportFailed(Transport* transport) = 0; | 90     virtual void OnTransportFailed(Transport* transport) = 0; | 
| 96 | 91 | 
| 97     // Called when the transport is about to be deleted. | 92     // Called when the transport is about to be deleted. | 
| 98     virtual void OnTransportDeleted(Transport* transport) = 0; | 93     virtual void OnTransportDeleted(Transport* transport) = 0; | 
| 99   }; | 94   }; | 
| 100 | 95 | 
| 101   typedef base::Callback<void(scoped_ptr<net::Socket>)> ConnectedCallback; | 96   typedef base::Callback<void(scoped_ptr<P2PDatagramSocket>)> ConnectedCallback; | 
| 102 | 97 | 
| 103   Transport() {} | 98   Transport() {} | 
| 104   virtual ~Transport() {} | 99   virtual ~Transport() {} | 
| 105 | 100 | 
| 106   // Connects the transport and calls the |callback| after that. | 101   // Connects the transport and calls the |callback| after that. | 
| 107   virtual void Connect(const std::string& name, | 102   virtual void Connect(const std::string& name, | 
| 108                        Transport::EventHandler* event_handler, | 103                        Transport::EventHandler* event_handler, | 
| 109                        const ConnectedCallback& callback) = 0; | 104                        const ConnectedCallback& callback) = 0; | 
| 110 | 105 | 
| 111   // Sets remote ICE credentials. | 106   // Sets remote ICE credentials. | 
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 147   virtual scoped_ptr<Transport> CreateTransport() = 0; | 142   virtual scoped_ptr<Transport> CreateTransport() = 0; | 
| 148 | 143 | 
| 149  private: | 144  private: | 
| 150   DISALLOW_COPY_AND_ASSIGN(TransportFactory); | 145   DISALLOW_COPY_AND_ASSIGN(TransportFactory); | 
| 151 }; | 146 }; | 
| 152 | 147 | 
| 153 }  // namespace protocol | 148 }  // namespace protocol | 
| 154 }  // namespace remoting | 149 }  // namespace remoting | 
| 155 | 150 | 
| 156 #endif  // REMOTING_PROTOCOL_TRANSPORT_H_ | 151 #endif  // REMOTING_PROTOCOL_TRANSPORT_H_ | 
| OLD | NEW | 
|---|