OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "mojo/services/network/web_socket_impl.h" | 5 #include "mojo/services/network/web_socket_impl.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "mojo/common/handle_watcher.h" | 9 #include "mojo/common/handle_watcher.h" |
10 #include "mojo/services/network/network_context.h" | 10 #include "mojo/services/network/network_context.h" |
11 #include "mojo/services/network/public/cpp/web_socket_read_queue.h" | 11 #include "mojo/services/network/public/cpp/web_socket_read_queue.h" |
12 #include "mojo/services/network/public/cpp/web_socket_write_queue.h" | 12 #include "mojo/services/network/public/cpp/web_socket_write_queue.h" |
13 #include "net/websockets/websocket_channel.h" | 13 #include "net/websockets/websocket_channel.h" |
14 #include "net/websockets/websocket_errors.h" | 14 #include "net/websockets/websocket_errors.h" |
15 #include "net/websockets/websocket_event_interface.h" | 15 #include "net/websockets/websocket_event_interface.h" |
16 #include "net/websockets/websocket_frame.h" // for WebSocketFrameHeader::OpCode | 16 #include "net/websockets/websocket_frame.h" // for WebSocketFrameHeader::OpCode |
17 #include "net/websockets/websocket_handshake_request_info.h" | 17 #include "net/websockets/websocket_handshake_request_info.h" |
18 #include "net/websockets/websocket_handshake_response_info.h" | 18 #include "net/websockets/websocket_handshake_response_info.h" |
19 #include "url/origin.h" | 19 #include "url/origin.h" |
20 | 20 |
21 namespace mojo { | 21 namespace mojo { |
22 | 22 |
23 template <> | 23 template <> |
24 struct TypeConverter<net::WebSocketFrameHeader::OpCode, | 24 struct TypeConverter<net::WebSocketFrameHeader::OpCode, |
25 WebSocket::MessageType> { | 25 WebSocket::MessageType> { |
26 static net::WebSocketFrameHeader::OpCode Convert( | 26 static net::WebSocketFrameHeader::OpCode Convert( |
27 WebSocket::MessageType type) { | 27 WebSocket::MessageType type) { |
28 DCHECK(type == WebSocket::MESSAGE_TYPE_CONTINUATION || | 28 DCHECK(type == WebSocket::MessageType::CONTINUATION || |
29 type == WebSocket::MESSAGE_TYPE_TEXT || | 29 type == WebSocket::MessageType::TEXT || |
30 type == WebSocket::MESSAGE_TYPE_BINARY); | 30 type == WebSocket::MessageType::BINARY); |
31 typedef net::WebSocketFrameHeader::OpCode OpCode; | 31 typedef net::WebSocketFrameHeader::OpCode OpCode; |
32 // These compile asserts verify that the same underlying values are used for | 32 // These compile asserts verify that the same underlying values are used for |
33 // both types, so we can simply cast between them. | 33 // both types, so we can simply cast between them. |
34 COMPILE_ASSERT(static_cast<OpCode>(WebSocket::MESSAGE_TYPE_CONTINUATION) == | 34 COMPILE_ASSERT(static_cast<OpCode>(WebSocket::MessageType::CONTINUATION) == |
35 net::WebSocketFrameHeader::kOpCodeContinuation, | 35 net::WebSocketFrameHeader::kOpCodeContinuation, |
36 enum_values_must_match_for_opcode_continuation); | 36 enum_values_must_match_for_opcode_continuation); |
37 COMPILE_ASSERT(static_cast<OpCode>(WebSocket::MESSAGE_TYPE_TEXT) == | 37 COMPILE_ASSERT(static_cast<OpCode>(WebSocket::MessageType::TEXT) == |
38 net::WebSocketFrameHeader::kOpCodeText, | 38 net::WebSocketFrameHeader::kOpCodeText, |
39 enum_values_must_match_for_opcode_text); | 39 enum_values_must_match_for_opcode_text); |
40 COMPILE_ASSERT(static_cast<OpCode>(WebSocket::MESSAGE_TYPE_BINARY) == | 40 COMPILE_ASSERT(static_cast<OpCode>(WebSocket::MessageType::BINARY) == |
41 net::WebSocketFrameHeader::kOpCodeBinary, | 41 net::WebSocketFrameHeader::kOpCodeBinary, |
42 enum_values_must_match_for_opcode_binary); | 42 enum_values_must_match_for_opcode_binary); |
43 return static_cast<OpCode>(type); | 43 return static_cast<OpCode>(type); |
44 } | 44 } |
45 }; | 45 }; |
46 | 46 |
47 template <> | 47 template <> |
48 struct TypeConverter<WebSocket::MessageType, | 48 struct TypeConverter<WebSocket::MessageType, |
49 net::WebSocketFrameHeader::OpCode> { | 49 net::WebSocketFrameHeader::OpCode> { |
50 static WebSocket::MessageType Convert( | 50 static WebSocket::MessageType Convert( |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 uint32_t num_bytes, | 227 uint32_t num_bytes, |
228 const char* data) { | 228 const char* data) { |
229 std::vector<char> buffer(num_bytes); | 229 std::vector<char> buffer(num_bytes); |
230 memcpy(&buffer[0], data, num_bytes); | 230 memcpy(&buffer[0], data, num_bytes); |
231 DCHECK(channel_); | 231 DCHECK(channel_); |
232 channel_->SendFrame( | 232 channel_->SendFrame( |
233 fin, ConvertTo<net::WebSocketFrameHeader::OpCode>(type), buffer); | 233 fin, ConvertTo<net::WebSocketFrameHeader::OpCode>(type), buffer); |
234 } | 234 } |
235 | 235 |
236 } // namespace mojo | 236 } // namespace mojo |
OLD | NEW |