Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(403)

Side by Side Diff: remoting/protocol/channel_socket_adapter.h

Issue 1197853003: Add P2PDatagramSocket and P2PStreamSocket interfaces. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #ifndef REMOTING_PROTOCOL_CHANNEL_SOCKET_ADAPTER_H_ 5 #ifndef REMOTING_PROTOCOL_CHANNEL_SOCKET_ADAPTER_H_
6 #define REMOTING_PROTOCOL_CHANNEL_SOCKET_ADAPTER_H_ 6 #define REMOTING_PROTOCOL_CHANNEL_SOCKET_ADAPTER_H_
7 7
8 #include "base/callback_forward.h" 8 #include "base/callback_forward.h"
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/threading/thread_checker.h" 10 #include "base/threading/thread_checker.h"
11 #include "net/socket/socket.h" 11 #include "remoting/protocol/p2p_datagram_socket.h"
12 #include "third_party/webrtc/base/asyncpacketsocket.h" 12 #include "third_party/webrtc/base/asyncpacketsocket.h"
13 #include "third_party/webrtc/base/sigslot.h" 13 #include "third_party/webrtc/base/sigslot.h"
14 #include "third_party/webrtc/base/socketaddress.h" 14 #include "third_party/webrtc/base/socketaddress.h"
15 15
16 namespace cricket { 16 namespace cricket {
17 class TransportChannel; 17 class TransportChannel;
18 } // namespace cricket 18 } // namespace cricket
19 19
20 namespace remoting { 20 namespace remoting {
21 namespace protocol { 21 namespace protocol {
22 22
23 // TransportChannelSocketAdapter implements net::Socket interface on 23 // TransportChannelSocketAdapter implements P2PDatagramSocket interface on
24 // top of libjingle's TransportChannel. It is used by LibjingleTransportFactory 24 // top of libjingle's TransportChannel. It is used by LibjingleTransportFactory
25 // to provide net::Socket interface for channels. 25 // to provide P2PDatagramSocket interface for channels.
26 class TransportChannelSocketAdapter : public net::Socket, 26 class TransportChannelSocketAdapter : public P2PDatagramSocket,
27 public sigslot::has_slots<> { 27 public sigslot::has_slots<> {
28 public: 28 public:
29 // Doesn't take ownership of the |channel|. The |channel| must outlive 29 // Doesn't take ownership of the |channel|. The |channel| must outlive
30 // this adapter. 30 // this adapter.
31 explicit TransportChannelSocketAdapter(cricket::TransportChannel* channel); 31 explicit TransportChannelSocketAdapter(cricket::TransportChannel* channel);
32 ~TransportChannelSocketAdapter() override; 32 ~TransportChannelSocketAdapter() override;
33 33
34 // Sets callback that should be called when the adapter is being 34 // Sets callback that should be called when the adapter is being
35 // destroyed. The callback is not allowed to touch the adapter, but 35 // destroyed. The callback is not allowed to touch the adapter, but
36 // can do anything else, e.g. destroy the TransportChannel. 36 // can do anything else, e.g. destroy the TransportChannel.
37 void SetOnDestroyedCallback(const base::Closure& callback); 37 void SetOnDestroyedCallback(const base::Closure& callback);
38 38
39 // Closes the stream. |error_code| specifies error code that will 39 // Closes the stream. |error_code| specifies error code that will
40 // be returned by Read() and Write() after the stream is closed. 40 // be returned by Recv() and Send() after the stream is closed.
41 // Must be called before the session and the channel are destroyed. 41 // Must be called before the session and the channel are destroyed.
42 void Close(int error_code); 42 void Close(int error_code);
43 43
44 // net::Socket interface. 44 // P2PDatagramSocket interface.
45 int Read(net::IOBuffer* buf, 45 int Recv(const scoped_refptr<net::IOBuffer>& buf, int buf_len,
46 int buf_len,
47 const net::CompletionCallback& callback) override; 46 const net::CompletionCallback& callback) override;
48 int Write(net::IOBuffer* buf, 47 int Send(const scoped_refptr<net::IOBuffer>& buf, int buf_len,
49 int buf_len, 48 const net::CompletionCallback& callback) override;
50 const net::CompletionCallback& callback) override;
51
52 int SetReceiveBufferSize(int32 size) override;
53 int SetSendBufferSize(int32 size) override;
54 49
55 private: 50 private:
56 void OnNewPacket(cricket::TransportChannel* channel, 51 void OnNewPacket(cricket::TransportChannel* channel,
57 const char* data, 52 const char* data,
58 size_t data_size, 53 size_t data_size,
59 const rtc::PacketTime& packet_time, 54 const rtc::PacketTime& packet_time,
60 int flags); 55 int flags);
61 void OnWritableState(cricket::TransportChannel* channel); 56 void OnWritableState(cricket::TransportChannel* channel);
62 void OnChannelDestroyed(cricket::TransportChannel* channel); 57 void OnChannelDestroyed(cricket::TransportChannel* channel);
63 58
(...skipping 13 matching lines...) Expand all
77 72
78 int closed_error_code_; 73 int closed_error_code_;
79 74
80 DISALLOW_COPY_AND_ASSIGN(TransportChannelSocketAdapter); 75 DISALLOW_COPY_AND_ASSIGN(TransportChannelSocketAdapter);
81 }; 76 };
82 77
83 } // namespace protocol 78 } // namespace protocol
84 } // namespace remoting 79 } // namespace remoting
85 80
86 #endif // REMOTING_PROTOCOL_CHANNEL_SOCKET_ADAPTER_H_ 81 #endif // REMOTING_PROTOCOL_CHANNEL_SOCKET_ADAPTER_H_
OLDNEW
« no previous file with comments | « remoting/protocol/channel_multiplexer_unittest.cc ('k') | remoting/protocol/channel_socket_adapter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698