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 |