| 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 } |
| 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 Loading... |
| 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; |
| OLD | NEW |