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

Side by Side Diff: content/child/websocket_dispatcher.cc

Issue 1461283002: [DO NOT COMMIT] mojo datapipe performance measurement Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 6 months 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
« no previous file with comments | « content/child/websocket_dispatcher.h ('k') | content/common/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/child/websocket_dispatcher.h" 5 #include "content/child/websocket_dispatcher.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <map> 8 #include <map>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "content/child/child_thread_impl.h"
11 #include "content/child/websocket_bridge.h" 12 #include "content/child/websocket_bridge.h"
12 #include "content/common/websocket_messages.h" 13 #include "content/common/websocket_messages.h"
14 #include "content/public/common/service_registry.h"
13 #include "ipc/ipc_message.h" 15 #include "ipc/ipc_message.h"
14 #include "url/gurl.h" 16 #include "url/gurl.h"
15 17
16 namespace content { 18 namespace content {
17 19
18 WebSocketDispatcher::WebSocketDispatcher() 20 WebSocketDispatcher::WebSocketDispatcher()
19 : channel_id_max_(0), 21 : channel_id_max_(0),
20 weak_ptr_factory_(this) {} 22 weak_ptr_factory_(this) {
23 ServiceRegistry* registry = ChildThreadImpl::current()->service_registry();
24 registry->ConnectToRemoteService(mojo::GetProxy(&loader_test_service_));
25 }
21 26
22 WebSocketDispatcher::~WebSocketDispatcher() {} 27 WebSocketDispatcher::~WebSocketDispatcher() {}
23 28
24 bool WebSocketDispatcher::CanHandleMessage(const IPC::Message& msg) { 29 bool WebSocketDispatcher::CanHandleMessage(const IPC::Message& msg) {
25 switch (msg.type()) { 30 switch (msg.type()) {
26 case WebSocketMsg_AddChannelResponse::ID: 31 case WebSocketMsg_AddChannelResponse::ID:
27 case WebSocketMsg_NotifyStartOpeningHandshake::ID: 32 case WebSocketMsg_NotifyStartOpeningHandshake::ID:
28 case WebSocketMsg_NotifyFinishOpeningHandshake::ID: 33 case WebSocketMsg_NotifyFinishOpeningHandshake::ID:
29 case WebSocketMsg_NotifyFailure::ID: 34 case WebSocketMsg_NotifyFailure::ID:
30 case WebSocketMsg_SendFrame::ID: 35 case WebSocketMsg_SendFrame::ID:
31 case WebSocketMsg_FlowControl::ID: 36 case WebSocketMsg_FlowControl::ID:
32 case WebSocketMsg_DropChannel::ID: 37 case WebSocketMsg_DropChannel::ID:
33 case WebSocketMsg_NotifyClosing::ID: 38 case WebSocketMsg_NotifyClosing::ID:
39 case WebSocketMsg_LoaderTransferTest_SetDataBuffer::ID:
40 case WebSocketMsg_LoaderTransferTest_Ack::ID:
41 case WebSocketMsg_LoaderTransferTest_Done::ID:
34 return true; 42 return true;
35 default: 43 default:
36 return false; 44 return false;
37 } 45 }
38 } 46 }
39 47
40 int WebSocketDispatcher::AddBridge(WebSocketBridge* bridge) { 48 int WebSocketDispatcher::AddBridge(WebSocketBridge* bridge) {
41 ++channel_id_max_; 49 ++channel_id_max_;
42 bridges_.insert(std::make_pair(channel_id_max_, bridge)); 50 bridges_.insert(std::make_pair(channel_id_max_, bridge));
43 return channel_id_max_; 51 return channel_id_max_;
44 } 52 }
45 53
46 void WebSocketDispatcher::RemoveBridge(int channel_id) { 54 void WebSocketDispatcher::RemoveBridge(int channel_id) {
47 std::map<int, WebSocketBridge*>::iterator iter = bridges_.find(channel_id); 55 std::map<int, WebSocketBridge*>::iterator iter = bridges_.find(channel_id);
48 if (iter == bridges_.end()) { 56 if (iter == bridges_.end()) {
49 DVLOG(1) << "Remove a non-existent bridge(" << channel_id << ")"; 57 DVLOG(1) << "Remove a non-existent bridge(" << channel_id << ")";
50 return; 58 return;
51 } 59 }
52 bridges_.erase(iter); 60 bridges_.erase(iter);
53 } 61 }
54 62
55 bool WebSocketDispatcher::OnMessageReceived(const IPC::Message& msg) { 63 bool WebSocketDispatcher::OnMessageReceived(const IPC::Message& msg) {
56 if (!CanHandleMessage(msg)) 64 if (!CanHandleMessage(msg))
57 return false; 65 return false;
66
58 WebSocketBridge* bridge = GetBridge(msg.routing_id(), msg.type()); 67 WebSocketBridge* bridge = GetBridge(msg.routing_id(), msg.type());
59 if (!bridge) 68 if (!bridge)
60 return true; 69 return true;
61 return bridge->OnMessageReceived(msg); 70 return bridge->OnMessageReceived(msg);
62 } 71 }
63 72
64 WebSocketBridge* WebSocketDispatcher::GetBridge(int channel_id, uint32_t type) { 73 WebSocketBridge* WebSocketDispatcher::GetBridge(int channel_id, uint32_t type) {
65 std::map<int, WebSocketBridge*>::iterator iter = bridges_.find(channel_id); 74 std::map<int, WebSocketBridge*>::iterator iter = bridges_.find(channel_id);
66 if (iter == bridges_.end()) { 75 if (iter == bridges_.end()) {
67 DVLOG(1) << "No bridge for channel_id=" << channel_id 76 DVLOG(1) << "No bridge for channel_id=" << channel_id
68 << ", type=" << type; 77 << ", type=" << type;
69 return NULL; 78 return NULL;
70 } 79 }
71 return iter->second; 80 return iter->second;
72 } 81 }
73 82
74 } // namespace content 83 } // namespace content
OLDNEW
« no previous file with comments | « content/child/websocket_dispatcher.h ('k') | content/common/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698