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

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

Issue 202058: WebSocket implementation in Chromium. (Closed)
Patch Set: update Created 11 years, 2 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 | « chrome/browser/renderer_host/socket_stream_host.h ('k') | chrome/chrome.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/renderer_host/socket_stream_host.h"
6
7 #include "base/logging.h"
8 #include "chrome/browser/profile.h"
9 #include "chrome/common/net/socket_stream.h"
10 #include "net/socket_stream/socket_stream.h"
11
12 static const char* kSocketIdKey = "socketId";
13
14 class SocketStreamId : public net::SocketStream::UserData {
15 public:
16 explicit SocketStreamId(int socket_id) : socket_id_(socket_id) {}
17 virtual ~SocketStreamId() {}
18 int socket_id() const { return socket_id_; }
19 private:
20 int socket_id_;
21 };
22
23 SocketStreamHost::SocketStreamHost(
24 net::SocketStream::Delegate* delegate, int socket_id)
25 : delegate_(delegate),
26 socket_id_(socket_id) {
27 DCHECK_NE(socket_id_, chrome_common_net::kNoSocketId);
28 LOG(INFO) << "SocketStreamHost: socket_id=" << socket_id_;
29 }
30
31 /* static */
32 int SocketStreamHost::SocketIdFromSocketStream(net::SocketStream* socket) {
33 net::SocketStream::UserData* d = socket->GetUserData(kSocketIdKey);
34 if (d) {
35 SocketStreamId* socket_stream_id = static_cast<SocketStreamId*>(d);
36 return socket_stream_id->socket_id();
37 }
38 return chrome_common_net::kNoSocketId;
39 }
40
41 SocketStreamHost::~SocketStreamHost() {
42 LOG(INFO) << "SocketStreamHost destructed socket_id=" << socket_id_;
43 socket_->DetachDelegate();
44 }
45
46 void SocketStreamHost::Connect(const GURL& url) {
47 LOG(INFO) << "SocketStreamHost::Connect url=" << url;
48 socket_ = new net::SocketStream(url, delegate_);
49 socket_->set_context(Profile::GetDefaultRequestContext());
50 socket_->SetUserData(kSocketIdKey, new SocketStreamId(socket_id_));
51 socket_->Connect();
52 }
53
54 bool SocketStreamHost::SendData(const std::vector<char>& data) {
55 LOG(INFO) << "SocketStreamHost::SendData";
56 if (!socket_)
57 return false;
58 return socket_->SendData(&data[0], data.size());
59 }
60
61 void SocketStreamHost::Close() {
62 LOG(INFO) << "SocketStreamHost::Close";
63 if (!socket_)
64 return;
65 return socket_->Close();
66 }
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/socket_stream_host.h ('k') | chrome/chrome.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698