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

Side by Side Diff: remoting/base/buffered_socket_writer.cc

Issue 1250403003: Fix BufferedSocketWriter not to return any results from Write(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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/base/buffered_socket_writer.h ('k') | remoting/protocol/channel_multiplexer.h » ('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 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 #include "remoting/base/buffered_socket_writer.h" 5 #include "remoting/base/buffered_socket_writer.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "net/base/io_buffer.h" 9 #include "net/base/io_buffer.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 STLDeleteElements(&queue_); 50 STLDeleteElements(&queue_);
51 } 51 }
52 52
53 void BufferedSocketWriter::Init( 53 void BufferedSocketWriter::Init(
54 const WriteCallback& write_callback, 54 const WriteCallback& write_callback,
55 const WriteFailedCallback& write_failed_callback) { 55 const WriteFailedCallback& write_failed_callback) {
56 write_callback_ = write_callback; 56 write_callback_ = write_callback;
57 write_failed_callback_ = write_failed_callback; 57 write_failed_callback_ = write_failed_callback;
58 } 58 }
59 59
60 bool BufferedSocketWriter::Write( 60 void BufferedSocketWriter::Write(
61 const scoped_refptr<net::IOBufferWithSize>& data, 61 const scoped_refptr<net::IOBufferWithSize>& data,
62 const base::Closure& done_task) { 62 const base::Closure& done_task) {
63 DCHECK(thread_checker_.CalledOnValidThread()); 63 DCHECK(thread_checker_.CalledOnValidThread());
64 DCHECK(data.get()); 64 DCHECK(data.get());
65 65
66 // Don't write after error. 66 // Don't write after error.
67 if (is_closed()) 67 if (is_closed())
68 return false; 68 return;
69 69
70 queue_.push_back(new PendingPacket( 70 queue_.push_back(new PendingPacket(
71 new net::DrainableIOBuffer(data.get(), data->size()), done_task)); 71 new net::DrainableIOBuffer(data.get(), data->size()), done_task));
72 72
73 DoWrite(); 73 DoWrite();
74
75 return !is_closed();
76 } 74 }
77 75
78 bool BufferedSocketWriter::is_closed() { 76 bool BufferedSocketWriter::is_closed() {
79 return write_callback_.is_null(); 77 return write_callback_.is_null();
80 } 78 }
81 79
82 void BufferedSocketWriter::DoWrite() { 80 void BufferedSocketWriter::DoWrite() {
83 DCHECK(thread_checker_.CalledOnValidThread()); 81 DCHECK(thread_checker_.CalledOnValidThread());
84 82
85 base::WeakPtr<BufferedSocketWriter> self = weak_factory_.GetWeakPtr(); 83 base::WeakPtr<BufferedSocketWriter> self = weak_factory_.GetWeakPtr();
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 DCHECK(write_pending_); 123 DCHECK(write_pending_);
126 write_pending_ = false; 124 write_pending_ = false;
127 125
128 base::WeakPtr<BufferedSocketWriter> self = weak_factory_.GetWeakPtr(); 126 base::WeakPtr<BufferedSocketWriter> self = weak_factory_.GetWeakPtr();
129 HandleWriteResult(result); 127 HandleWriteResult(result);
130 if (self) 128 if (self)
131 DoWrite(); 129 DoWrite();
132 } 130 }
133 131
134 } // namespace remoting 132 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/base/buffered_socket_writer.h ('k') | remoting/protocol/channel_multiplexer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698