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

Side by Side Diff: chrome/browser/renderer_host/socket_stream_host.cc

Issue 5850001: Make SocketStreamDispatcherHost a BrowserMessageFilter.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/browser/renderer_host/socket_stream_host.h" 5 #include "chrome/browser/renderer_host/socket_stream_host.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/common/net/socket_stream.h" 9 #include "chrome/common/net/socket_stream.h"
10 #include "chrome/common/net/url_request_context_getter.h" 10 #include "chrome/common/net/url_request_context_getter.h"
11 #include "chrome/common/render_messages.h"
12 #include "net/socket_stream/socket_stream_job.h" 11 #include "net/socket_stream/socket_stream_job.h"
13 12
14 static const char* kSocketHostKey = "socketHost"; 13 static const char* kSocketIdKey = "socketId";
15 14
16 class SocketStreamInfo : public net::SocketStream::UserData { 15 class SocketStreamId : public net::SocketStream::UserData {
17 public: 16 public:
18 explicit SocketStreamInfo(SocketStreamHost* host) : host_(host) {} 17 explicit SocketStreamId(int socket_id) : socket_id_(socket_id) {}
19 virtual ~SocketStreamInfo() {} 18 virtual ~SocketStreamId() {}
20 SocketStreamHost* host() const { return host_; } 19 int socket_id() const { return socket_id_; }
21 20
22 private: 21 private:
23 SocketStreamHost* host_; 22 int socket_id_;
24 }; 23 };
25 24
26 SocketStreamHost::SocketStreamHost( 25 SocketStreamHost::SocketStreamHost(
27 net::SocketStream::Delegate* delegate, 26 net::SocketStream::Delegate* delegate,
28 ResourceDispatcherHost::Receiver* receiver,
29 int socket_id) 27 int socket_id)
30 : delegate_(delegate), 28 : delegate_(delegate),
31 receiver_(receiver),
32 socket_id_(socket_id) { 29 socket_id_(socket_id) {
33 DCHECK_NE(socket_id_, chrome_common_net::kNoSocketId); 30 DCHECK_NE(socket_id_, chrome_common_net::kNoSocketId);
34 VLOG(1) << "SocketStreamHost: socket_id=" << socket_id_; 31 VLOG(1) << "SocketStreamHost: socket_id=" << socket_id_;
35 } 32 }
36 33
37 /* static */ 34 /* static */
38 SocketStreamHost* 35 int SocketStreamHost::SocketIdFromSocketStream(net::SocketStream* socket) {
39 SocketStreamHost::GetSocketStreamHost(net::SocketStream* socket) { 36 net::SocketStream::UserData* d = socket->GetUserData(kSocketIdKey);
40 net::SocketStream::UserData* d = socket->GetUserData(kSocketHostKey);
41 if (d) { 37 if (d) {
42 SocketStreamInfo* info = static_cast<SocketStreamInfo*>(d); 38 SocketStreamId* socket_stream_id = static_cast<SocketStreamId*>(d);
43 return info->host(); 39 return socket_stream_id->socket_id();
44 } 40 }
45 return NULL; 41 return chrome_common_net::kNoSocketId;
46 } 42 }
47 43
48 SocketStreamHost::~SocketStreamHost() { 44 SocketStreamHost::~SocketStreamHost() {
49 VLOG(1) << "SocketStreamHost destructed socket_id=" << socket_id_; 45 VLOG(1) << "SocketStreamHost destructed socket_id=" << socket_id_;
50 if (!receiver_->Send(new ViewMsg_SocketStream_Closed(socket_id_)))
51 LOG(ERROR) << "ViewMsg_SocketStream_Closed failed.";
52 socket_->DetachDelegate(); 46 socket_->DetachDelegate();
53 } 47 }
54 48
55 void SocketStreamHost::Connect(const GURL& url) { 49 void SocketStreamHost::Connect(const GURL& url) {
56 VLOG(1) << "SocketStreamHost::Connect url=" << url; 50 VLOG(1) << "SocketStreamHost::Connect url=" << url;
57 socket_ = net::SocketStreamJob::CreateSocketStreamJob(url, delegate_); 51 socket_ = net::SocketStreamJob::CreateSocketStreamJob(url, delegate_);
58 URLRequestContextGetter* context_getter = Profile::GetDefaultRequestContext(); 52 URLRequestContextGetter* context_getter = Profile::GetDefaultRequestContext();
59 if (context_getter) 53 if (context_getter)
60 socket_->set_context(context_getter->GetURLRequestContext()); 54 socket_->set_context(context_getter->GetURLRequestContext());
61 socket_->SetUserData(kSocketHostKey, new SocketStreamInfo(this)); 55 socket_->SetUserData(kSocketIdKey, new SocketStreamId(socket_id_));
62 socket_->Connect(); 56 socket_->Connect();
63 } 57 }
64 58
65 bool SocketStreamHost::SendData(const std::vector<char>& data) { 59 bool SocketStreamHost::SendData(const std::vector<char>& data) {
66 VLOG(1) << "SocketStreamHost::SendData"; 60 VLOG(1) << "SocketStreamHost::SendData";
67 return socket_ && socket_->SendData(&data[0], data.size()); 61 return socket_ && socket_->SendData(&data[0], data.size());
68 } 62 }
69 63
70 void SocketStreamHost::Close() { 64 void SocketStreamHost::Close() {
71 VLOG(1) << "SocketStreamHost::Close"; 65 VLOG(1) << "SocketStreamHost::Close";
72 if (!socket_) 66 if (!socket_)
73 return; 67 return;
74 socket_->Close(); 68 socket_->Close();
75 } 69 }
76
77 bool SocketStreamHost::Connected(int max_pending_send_allowed) {
78 return receiver_->Send(new ViewMsg_SocketStream_Connected(
79 socket_id_, max_pending_send_allowed));
80 }
81
82 bool SocketStreamHost::SentData(int amount_sent) {
83 return receiver_->Send(new ViewMsg_SocketStream_SentData(
84 socket_id_, amount_sent));
85 }
86
87 bool SocketStreamHost::ReceivedData(const char* data, int len) {
88 return receiver_->Send(new ViewMsg_SocketStream_ReceivedData(
89 socket_id_, std::vector<char>(data, data + len)));
90 }
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/socket_stream_host.h ('k') | chrome/browser/worker_host/worker_process_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698