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

Side by Side Diff: webrtc/libjingle/xmpp/xmppsocket.cc

Issue 1821083002: Split ByteBuffer into writer/reader objects. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 9 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 | « webrtc/libjingle/xmpp/xmppsocket.h ('k') | webrtc/media/base/rtpdump.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 /* 1 /*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 #endif // USE_SSLSTREAM 74 #endif // USE_SSLSTREAM
75 } 75 }
76 76
77 #ifndef USE_SSLSTREAM 77 #ifndef USE_SSLSTREAM
78 void XmppSocket::OnReadEvent(rtc::AsyncSocket * socket) { 78 void XmppSocket::OnReadEvent(rtc::AsyncSocket * socket) {
79 SignalRead(); 79 SignalRead();
80 } 80 }
81 81
82 void XmppSocket::OnWriteEvent(rtc::AsyncSocket * socket) { 82 void XmppSocket::OnWriteEvent(rtc::AsyncSocket * socket) {
83 // Write bytes if there are any 83 // Write bytes if there are any
84 while (buffer_.Length() != 0) { 84 while (buffer_.size() > 0) {
85 int written = cricket_socket_->Send(buffer_.Data(), buffer_.Length()); 85 int written = cricket_socket_->Send(buffer_.data(), buffer_.size());
86 if (written > 0) { 86 if (written > 0) {
87 buffer_.Consume(written); 87 ASSERT(static_cast<size_t>(written) <= buffer_.size());
88 memmove(buffer_.data(), buffer_.data() + written,
89 buffer_.size() - written);
90 buffer_.SetSize(buffer_.size() - written);
88 continue; 91 continue;
89 } 92 }
90 if (!cricket_socket_->IsBlocking()) 93 if (!cricket_socket_->IsBlocking())
91 LOG(LS_ERROR) << "Send error: " << cricket_socket_->GetError(); 94 LOG(LS_ERROR) << "Send error: " << cricket_socket_->GetError();
92 return; 95 return;
93 } 96 }
94 } 97 }
95 98
96 void XmppSocket::OnConnectEvent(rtc::AsyncSocket * socket) { 99 void XmppSocket::OnConnectEvent(rtc::AsyncSocket * socket) {
97 #if defined(FEATURE_ENABLE_SSL) 100 #if defined(FEATURE_ENABLE_SSL)
(...skipping 26 matching lines...) Expand all
124 #endif 127 #endif
125 { 128 {
126 state_ = buzz::AsyncSocket::STATE_OPEN; 129 state_ = buzz::AsyncSocket::STATE_OPEN;
127 SignalConnected(); 130 SignalConnected();
128 } 131 }
129 } 132 }
130 if ((events & rtc::SE_READ)) 133 if ((events & rtc::SE_READ))
131 SignalRead(); 134 SignalRead();
132 if ((events & rtc::SE_WRITE)) { 135 if ((events & rtc::SE_WRITE)) {
133 // Write bytes if there are any 136 // Write bytes if there are any
134 while (buffer_.Length() != 0) { 137 while (buffer_.size() > 0) {
135 rtc::StreamResult result; 138 rtc::StreamResult result;
136 size_t written; 139 size_t written;
137 int error; 140 int error;
138 result = stream_->Write(buffer_.Data(), buffer_.Length(), 141 result = stream_->Write(buffer_.data(), buffer_.size(),
139 &written, &error); 142 &written, &error);
140 if (result == rtc::SR_ERROR) { 143 if (result == rtc::SR_ERROR) {
141 LOG(LS_ERROR) << "Send error: " << error; 144 LOG(LS_ERROR) << "Send error: " << error;
142 return; 145 return;
143 } 146 }
144 if (result == rtc::SR_BLOCK) 147 if (result == rtc::SR_BLOCK)
145 return; 148 return;
146 ASSERT(result == rtc::SR_SUCCESS); 149 ASSERT(result == rtc::SR_SUCCESS);
147 ASSERT(written > 0); 150 ASSERT(written > 0);
148 buffer_.Shift(written); 151 ASSERT(written <= buffer_.size());
152 memmove(buffer_.data(), buffer_.data() + written,
153 buffer_.size() - written);
154 buffer_.SetSize(buffer_.size() - written);
149 } 155 }
150 } 156 }
151 if ((events & rtc::SE_CLOSE)) 157 if ((events & rtc::SE_CLOSE))
152 SignalCloseEvent(err); 158 SignalCloseEvent(err);
153 } 159 }
154 #endif // USE_SSLSTREAM 160 #endif // USE_SSLSTREAM
155 161
156 buzz::AsyncSocket::State XmppSocket::state() { 162 buzz::AsyncSocket::State XmppSocket::state() {
157 return state_; 163 return state_;
158 } 164 }
(...skipping 25 matching lines...) Expand all
184 } 190 }
185 #else // USE_SSLSTREAM 191 #else // USE_SSLSTREAM
186 rtc::StreamResult result = stream_->Read(data, len, len_read, NULL); 192 rtc::StreamResult result = stream_->Read(data, len, len_read, NULL);
187 if (result == rtc::SR_SUCCESS) 193 if (result == rtc::SR_SUCCESS)
188 return true; 194 return true;
189 #endif // USE_SSLSTREAM 195 #endif // USE_SSLSTREAM
190 return false; 196 return false;
191 } 197 }
192 198
193 bool XmppSocket::Write(const char * data, size_t len) { 199 bool XmppSocket::Write(const char * data, size_t len) {
194 buffer_.WriteBytes(data, len); 200 buffer_.AppendData(data, len);
195 #ifndef USE_SSLSTREAM 201 #ifndef USE_SSLSTREAM
196 OnWriteEvent(cricket_socket_); 202 OnWriteEvent(cricket_socket_);
197 #else // USE_SSLSTREAM 203 #else // USE_SSLSTREAM
198 OnEvent(stream_, rtc::SE_WRITE, 0); 204 OnEvent(stream_, rtc::SE_WRITE, 0);
199 #endif // USE_SSLSTREAM 205 #endif // USE_SSLSTREAM
200 return true; 206 return true;
201 } 207 }
202 208
203 bool XmppSocket::Close() { 209 bool XmppSocket::Close() {
204 if (state_ != buzz::AsyncSocket::STATE_OPEN) 210 if (state_ != buzz::AsyncSocket::STATE_OPEN)
(...skipping 30 matching lines...) Expand all
235 #endif // USE_SSLSTREAM 241 #endif // USE_SSLSTREAM
236 state_ = buzz::AsyncSocket::STATE_TLS_CONNECTING; 242 state_ = buzz::AsyncSocket::STATE_TLS_CONNECTING;
237 return true; 243 return true;
238 #else // !defined(FEATURE_ENABLE_SSL) 244 #else // !defined(FEATURE_ENABLE_SSL)
239 return false; 245 return false;
240 #endif // !defined(FEATURE_ENABLE_SSL) 246 #endif // !defined(FEATURE_ENABLE_SSL)
241 } 247 }
242 248
243 } // namespace buzz 249 } // namespace buzz
244 250
OLDNEW
« no previous file with comments | « webrtc/libjingle/xmpp/xmppsocket.h ('k') | webrtc/media/base/rtpdump.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698