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

Side by Side Diff: net/socket/web_socket_server_socket.cc

Issue 8831001: base::Bind: Convert Socket::Write. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix alignment. Created 9 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "net/socket/web_socket_server_socket.h" 5 #include "net/socket/web_socket_server_socket.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <deque> 8 #include <deque>
9 #include <limits> 9 #include <limits>
10 #include <map> 10 #include <map>
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 390
391 net::IOBuffer* frame_end = new net::IOBuffer(1); 391 net::IOBuffer* frame_end = new net::IOBuffer(1);
392 frame_end->data()[0] = '\xff'; 392 frame_end->data()[0] = '\xff';
393 pending_reqs_.push_back(PendingReq(PendingReq::TYPE_WRITE_METADATA, 393 pending_reqs_.push_back(PendingReq(PendingReq::TYPE_WRITE_METADATA,
394 new net::DrainableIOBuffer(frame_end, 1), 394 new net::DrainableIOBuffer(frame_end, 1),
395 NULL)); 395 NULL));
396 396
397 ConsiderTransportWrite(); 397 ConsiderTransportWrite();
398 return net::ERR_IO_PENDING; 398 return net::ERR_IO_PENDING;
399 } 399 }
400 virtual int Write(net::IOBuffer* buf, int buf_len,
401 const net::CompletionCallback& callback) OVERRIDE {
402 if (buf_len == 0)
403 return 0;
404 if (buf == NULL || buf_len < 0) {
405 NOTREACHED();
406 return net::ERR_INVALID_ARGUMENT;
407 }
408 DCHECK_EQ(std::find(buf->data(), buf->data() + buf_len, '\xff'),
409 buf->data() + buf_len);
410 switch (phase_) {
411 case PHASE_FRAME_OUTSIDE:
412 case PHASE_FRAME_INSIDE:
413 case PHASE_FRAME_LENGTH:
414 case PHASE_FRAME_SKIP: {
415 break;
416 }
417 case PHASE_SHUT: {
418 return net::ERR_SOCKET_NOT_CONNECTED;
419 }
420 case PHASE_NYMPH:
421 case PHASE_HANDSHAKE:
422 default: {
423 NOTREACHED();
424 return net::ERR_UNEXPECTED;
425 }
426 }
427
428 net::IOBuffer* frame_start = new net::IOBuffer(1);
429 frame_start->data()[0] = '\x00';
430 pending_reqs_.push_back(PendingReq(PendingReq::TYPE_WRITE_METADATA,
431 new net::DrainableIOBuffer(frame_start, 1),
432 NULL));
433
434 pending_reqs_.push_back(PendingReq(PendingReq::TYPE_WRITE,
435 new net::DrainableIOBuffer(buf, buf_len),
436 callback));
437
438 net::IOBuffer* frame_end = new net::IOBuffer(1);
439 frame_end->data()[0] = '\xff';
440 pending_reqs_.push_back(PendingReq(PendingReq::TYPE_WRITE_METADATA,
441 new net::DrainableIOBuffer(frame_end, 1),
442 NULL));
443
444 ConsiderTransportWrite();
445 return net::ERR_IO_PENDING;
446 }
400 447
401 virtual bool SetReceiveBufferSize(int32 size) OVERRIDE { 448 virtual bool SetReceiveBufferSize(int32 size) OVERRIDE {
402 return transport_socket_->SetReceiveBufferSize(size); 449 return transport_socket_->SetReceiveBufferSize(size);
403 } 450 }
404 451
405 virtual bool SetSendBufferSize(int32 size) OVERRIDE { 452 virtual bool SetSendBufferSize(int32 size) OVERRIDE {
406 return transport_socket_->SetSendBufferSize(size); 453 return transport_socket_->SetSendBufferSize(size);
407 } 454 }
408 455
409 // WebSocketServerSocket implementation. 456 // WebSocketServerSocket implementation.
(...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after
996 1043
997 WebSocketServerSocket* CreateWebSocketServerSocket( 1044 WebSocketServerSocket* CreateWebSocketServerSocket(
998 Socket* transport_socket, WebSocketServerSocket::Delegate* delegate) { 1045 Socket* transport_socket, WebSocketServerSocket::Delegate* delegate) {
999 return new WebSocketServerSocketImpl(transport_socket, delegate); 1046 return new WebSocketServerSocketImpl(transport_socket, delegate);
1000 } 1047 }
1001 1048
1002 WebSocketServerSocket::~WebSocketServerSocket() { 1049 WebSocketServerSocket::~WebSocketServerSocket() {
1003 } 1050 }
1004 1051
1005 } // namespace net; 1052 } // namespace net;
OLDNEW
« no previous file with comments | « net/socket/transport_client_socket_pool_unittest.cc ('k') | net/socket/web_socket_server_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698