| OLD | NEW |
| 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 Loading... |
| 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 } | |
| 447 | 400 |
| 448 virtual bool SetReceiveBufferSize(int32 size) OVERRIDE { | 401 virtual bool SetReceiveBufferSize(int32 size) OVERRIDE { |
| 449 return transport_socket_->SetReceiveBufferSize(size); | 402 return transport_socket_->SetReceiveBufferSize(size); |
| 450 } | 403 } |
| 451 | 404 |
| 452 virtual bool SetSendBufferSize(int32 size) OVERRIDE { | 405 virtual bool SetSendBufferSize(int32 size) OVERRIDE { |
| 453 return transport_socket_->SetSendBufferSize(size); | 406 return transport_socket_->SetSendBufferSize(size); |
| 454 } | 407 } |
| 455 | 408 |
| 456 // WebSocketServerSocket implementation. | 409 // WebSocketServerSocket implementation. |
| (...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1043 | 996 |
| 1044 WebSocketServerSocket* CreateWebSocketServerSocket( | 997 WebSocketServerSocket* CreateWebSocketServerSocket( |
| 1045 Socket* transport_socket, WebSocketServerSocket::Delegate* delegate) { | 998 Socket* transport_socket, WebSocketServerSocket::Delegate* delegate) { |
| 1046 return new WebSocketServerSocketImpl(transport_socket, delegate); | 999 return new WebSocketServerSocketImpl(transport_socket, delegate); |
| 1047 } | 1000 } |
| 1048 | 1001 |
| 1049 WebSocketServerSocket::~WebSocketServerSocket() { | 1002 WebSocketServerSocket::~WebSocketServerSocket() { |
| 1050 } | 1003 } |
| 1051 | 1004 |
| 1052 } // namespace net; | 1005 } // namespace net; |
| OLD | NEW |