OLD | NEW |
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 "net/websockets/websocket_job.h" | 5 #include "net/websockets/websocket_job.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/singleton.h" | 9 #include "base/lazy_instance.h" |
10 #include "base/string_tokenizer.h" | 10 #include "base/string_tokenizer.h" |
11 #include "googleurl/src/gurl.h" | 11 #include "googleurl/src/gurl.h" |
12 #include "net/base/net_errors.h" | 12 #include "net/base/net_errors.h" |
13 #include "net/base/net_log.h" | 13 #include "net/base/net_log.h" |
14 #include "net/base/cookie_policy.h" | 14 #include "net/base/cookie_policy.h" |
15 #include "net/base/cookie_store.h" | 15 #include "net/base/cookie_store.h" |
16 #include "net/base/io_buffer.h" | 16 #include "net/base/io_buffer.h" |
17 #include "net/http/http_util.h" | 17 #include "net/http/http_util.h" |
18 #include "net/url_request/url_request_context.h" | 18 #include "net/url_request/url_request_context.h" |
19 #include "net/websockets/websocket_frame_handler.h" | 19 #include "net/websockets/websocket_frame_handler.h" |
(...skipping 13 matching lines...) Expand all Loading... |
33 | 33 |
34 net::SocketStreamJob* WebSocketJobFactory( | 34 net::SocketStreamJob* WebSocketJobFactory( |
35 const GURL& url, net::SocketStream::Delegate* delegate) { | 35 const GURL& url, net::SocketStream::Delegate* delegate) { |
36 net::WebSocketJob* job = new net::WebSocketJob(delegate); | 36 net::WebSocketJob* job = new net::WebSocketJob(delegate); |
37 job->InitSocketStream(new net::SocketStream(url, job)); | 37 job->InitSocketStream(new net::SocketStream(url, job)); |
38 return job; | 38 return job; |
39 } | 39 } |
40 | 40 |
41 class WebSocketJobInitSingleton { | 41 class WebSocketJobInitSingleton { |
42 private: | 42 private: |
43 friend struct DefaultSingletonTraits<WebSocketJobInitSingleton>; | 43 friend struct base::DefaultLazyInstanceTraits<WebSocketJobInitSingleton>; |
44 WebSocketJobInitSingleton() { | 44 WebSocketJobInitSingleton() { |
45 net::SocketStreamJob::RegisterProtocolFactory("ws", WebSocketJobFactory); | 45 net::SocketStreamJob::RegisterProtocolFactory("ws", WebSocketJobFactory); |
46 net::SocketStreamJob::RegisterProtocolFactory("wss", WebSocketJobFactory); | 46 net::SocketStreamJob::RegisterProtocolFactory("wss", WebSocketJobFactory); |
47 } | 47 } |
48 }; | 48 }; |
49 | 49 |
| 50 static base::LazyInstance<WebSocketJobInitSingleton> g_websocket_job_init( |
| 51 base::LINKER_INITIALIZED); |
| 52 |
50 } // anonymous namespace | 53 } // anonymous namespace |
51 | 54 |
52 namespace net { | 55 namespace net { |
53 | 56 |
54 // static | 57 // static |
55 void WebSocketJob::EnsureInit() { | 58 void WebSocketJob::EnsureInit() { |
56 Singleton<WebSocketJobInitSingleton>::get(); | 59 g_websocket_job_init.Get(); |
57 } | 60 } |
58 | 61 |
59 WebSocketJob::WebSocketJob(SocketStream::Delegate* delegate) | 62 WebSocketJob::WebSocketJob(SocketStream::Delegate* delegate) |
60 : delegate_(delegate), | 63 : delegate_(delegate), |
61 state_(INITIALIZED), | 64 state_(INITIALIZED), |
62 waiting_(false), | 65 waiting_(false), |
63 callback_(NULL), | 66 callback_(NULL), |
64 handshake_request_(new WebSocketHandshakeRequestHandler), | 67 handshake_request_(new WebSocketHandshakeRequestHandler), |
65 handshake_response_(new WebSocketHandshakeResponseHandler), | 68 handshake_response_(new WebSocketHandshakeResponseHandler), |
66 handshake_request_sent_(0), | 69 handshake_request_sent_(0), |
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
500 socket_->Close(); | 503 socket_->Close(); |
501 return; | 504 return; |
502 } | 505 } |
503 current_buffer_ = new DrainableIOBuffer( | 506 current_buffer_ = new DrainableIOBuffer( |
504 send_frame_handler_->GetCurrentBuffer(), | 507 send_frame_handler_->GetCurrentBuffer(), |
505 send_frame_handler_->GetCurrentBufferSize()); | 508 send_frame_handler_->GetCurrentBufferSize()); |
506 socket_->SendData(current_buffer_->data(), current_buffer_->BytesRemaining()); | 509 socket_->SendData(current_buffer_->data(), current_buffer_->BytesRemaining()); |
507 } | 510 } |
508 | 511 |
509 } // namespace net | 512 } // namespace net |
OLD | NEW |