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

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

Issue 292044: WebSocket support in chromium. (Closed)
Patch Set: rebaseline Created 11 years, 1 month 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
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/browser/net/url_request_context_getter.h"
10 #include "chrome/common/net/socket_stream.h"
11 #include "net/socket_stream/socket_stream.h"
12
13 static const char* kSocketIdKey = "socketId";
14
15 class SocketStreamId : public net::SocketStream::UserData {
16 public:
17 explicit SocketStreamId(int socket_id) : socket_id_(socket_id) {}
18 virtual ~SocketStreamId() {}
19 int socket_id() const { return socket_id_; }
20 private:
21 int socket_id_;
22 };
23
24 SocketStreamHost::SocketStreamHost(
25 net::SocketStream::Delegate* delegate, int socket_id)
26 : delegate_(delegate),
27 socket_id_(socket_id) {
28 DCHECK_NE(socket_id_, chrome_common_net::kNoSocketId);
29 LOG(INFO) << "SocketStreamHost: socket_id=" << socket_id_;
30 }
31
32 /* static */
33 int SocketStreamHost::SocketIdFromSocketStream(net::SocketStream* socket) {
34 net::SocketStream::UserData* d = socket->GetUserData(kSocketIdKey);
35 if (d) {
36 SocketStreamId* socket_stream_id = static_cast<SocketStreamId*>(d);
37 return socket_stream_id->socket_id();
38 }
39 return chrome_common_net::kNoSocketId;
40 }
41
42 SocketStreamHost::~SocketStreamHost() {
43 LOG(INFO) << "SocketStreamHost destructed socket_id=" << socket_id_;
44 socket_->DetachDelegate();
45 }
46
47 void SocketStreamHost::Connect(const GURL& url) {
48 LOG(INFO) << "SocketStreamHost::Connect url=" << url;
49 socket_ = new net::SocketStream(url, delegate_);
50 URLRequestContextGetter* context_getter = Profile::GetDefaultRequestContext();
51 if (context_getter)
52 socket_->set_context(context_getter->GetURLRequestContext());
53 socket_->SetUserData(kSocketIdKey, new SocketStreamId(socket_id_));
54 socket_->Connect();
55 }
56
57 bool SocketStreamHost::SendData(const std::vector<char>& data) {
58 LOG(INFO) << "SocketStreamHost::SendData";
59 if (!socket_)
60 return false;
61 return socket_->SendData(&data[0], data.size());
62 }
63
64 void SocketStreamHost::Close() {
65 LOG(INFO) << "SocketStreamHost::Close";
66 if (!socket_)
67 return;
68 return socket_->Close();
69 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698