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

Side by Side Diff: remoting/protocol/message_reader.cc

Issue 1654513003: Simplify message parsing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@no_done
Patch Set: Created 4 years, 10 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
« no previous file with comments | « remoting/protocol/message_reader.h ('k') | remoting/protocol/message_reader_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "remoting/protocol/message_reader.h" 5 #include "remoting/protocol/message_reader.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/compiler_specific.h" 11 #include "base/compiler_specific.h"
12 #include "base/location.h" 12 #include "base/location.h"
13 #include "base/thread_task_runner_handle.h" 13 #include "base/thread_task_runner_handle.h"
14 #include "base/single_thread_task_runner.h" 14 #include "base/single_thread_task_runner.h"
15 #include "net/base/io_buffer.h" 15 #include "net/base/io_buffer.h"
16 #include "net/base/net_errors.h" 16 #include "net/base/net_errors.h"
17 #include "remoting/base/compound_buffer.h" 17 #include "remoting/base/compound_buffer.h"
18 #include "remoting/proto/internal.pb.h" 18 #include "remoting/proto/internal.pb.h"
19 #include "remoting/protocol/p2p_stream_socket.h" 19 #include "remoting/protocol/p2p_stream_socket.h"
20 20
21 namespace remoting { 21 namespace remoting {
22 namespace protocol { 22 namespace protocol {
23 23
24 static const int kReadBufferSize = 4096; 24 static const int kReadBufferSize = 4096;
25 25
26 MessageReader::MessageReader() : weak_factory_(this) {} 26 MessageReader::MessageReader() : weak_factory_(this) {}
27 MessageReader::~MessageReader() {} 27 MessageReader::~MessageReader() {}
28 28
29 void MessageReader::SetMessageReceivedCallback(
30 const MessageReceivedCallback& callback) {
31 DCHECK(CalledOnValidThread());
32 message_received_callback_ = callback;
33 }
34
35 void MessageReader::StartReading( 29 void MessageReader::StartReading(
36 P2PStreamSocket* socket, 30 P2PStreamSocket* socket,
31 const MessageReceivedCallback& message_received_callback,
37 const ReadFailedCallback& read_failed_callback) { 32 const ReadFailedCallback& read_failed_callback) {
38 DCHECK(CalledOnValidThread()); 33 DCHECK(CalledOnValidThread());
34 DCHECK(!socket_);
39 DCHECK(socket); 35 DCHECK(socket);
36 DCHECK(!message_received_callback.is_null());
40 DCHECK(!read_failed_callback.is_null()); 37 DCHECK(!read_failed_callback.is_null());
41 38
42 socket_ = socket; 39 socket_ = socket;
40 message_received_callback_ = message_received_callback;
43 read_failed_callback_ = read_failed_callback; 41 read_failed_callback_ = read_failed_callback;
44 DoRead(); 42 DoRead();
45 } 43 }
46 44
47 void MessageReader::DoRead() { 45 void MessageReader::DoRead() {
48 DCHECK(CalledOnValidThread()); 46 DCHECK(CalledOnValidThread());
49 // Don't try to read again if there is another read pending or we 47 // Don't try to read again if there is another read pending or we
50 // have messages that we haven't finished processing yet. 48 // have messages that we haven't finished processing yet.
51 bool read_succeeded = true; 49 bool read_succeeded = true;
52 while (read_succeeded && !closed_ && !read_pending_) { 50 while (read_succeeded && !closed_ && !read_pending_) {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 } 112 }
115 } 113 }
116 114
117 void MessageReader::RunCallback(scoped_ptr<CompoundBuffer> message) { 115 void MessageReader::RunCallback(scoped_ptr<CompoundBuffer> message) {
118 if (!message_received_callback_.is_null()) 116 if (!message_received_callback_.is_null())
119 message_received_callback_.Run(std::move(message)); 117 message_received_callback_.Run(std::move(message));
120 } 118 }
121 119
122 } // namespace protocol 120 } // namespace protocol
123 } // namespace remoting 121 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/protocol/message_reader.h ('k') | remoting/protocol/message_reader_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698