| 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/string_tokenizer.h" | 9 #include "base/string_tokenizer.h" |
| 10 #include "googleurl/src/gurl.h" | 10 #include "googleurl/src/gurl.h" |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 | 137 |
| 138 void WebSocketJob::RestartWithAuth( | 138 void WebSocketJob::RestartWithAuth( |
| 139 const string16& username, | 139 const string16& username, |
| 140 const string16& password) { | 140 const string16& password) { |
| 141 state_ = CONNECTING; | 141 state_ = CONNECTING; |
| 142 socket_->RestartWithAuth(username, password); | 142 socket_->RestartWithAuth(username, password); |
| 143 } | 143 } |
| 144 | 144 |
| 145 void WebSocketJob::DetachDelegate() { | 145 void WebSocketJob::DetachDelegate() { |
| 146 state_ = CLOSED; | 146 state_ = CLOSED; |
| 147 Singleton<WebSocketThrottle>::get()->RemoveFromQueue(this); | 147 WebSocketThrottle::GetInstance()->RemoveFromQueue(this); |
| 148 Singleton<WebSocketThrottle>::get()->WakeupSocketIfNecessary(); | 148 WebSocketThrottle::GetInstance()->WakeupSocketIfNecessary(); |
| 149 | 149 |
| 150 scoped_refptr<WebSocketJob> protect(this); | 150 scoped_refptr<WebSocketJob> protect(this); |
| 151 | 151 |
| 152 delegate_ = NULL; | 152 delegate_ = NULL; |
| 153 if (socket_) | 153 if (socket_) |
| 154 socket_->DetachDelegate(); | 154 socket_->DetachDelegate(); |
| 155 socket_ = NULL; | 155 socket_ = NULL; |
| 156 if (callback_) { | 156 if (callback_) { |
| 157 waiting_ = false; | 157 waiting_ = false; |
| 158 callback_ = NULL; | 158 callback_ = NULL; |
| 159 Release(); // Balanced with OnStartOpenConnection(). | 159 Release(); // Balanced with OnStartOpenConnection(). |
| 160 } | 160 } |
| 161 } | 161 } |
| 162 | 162 |
| 163 int WebSocketJob::OnStartOpenConnection( | 163 int WebSocketJob::OnStartOpenConnection( |
| 164 SocketStream* socket, CompletionCallback* callback) { | 164 SocketStream* socket, CompletionCallback* callback) { |
| 165 DCHECK(!callback_); | 165 DCHECK(!callback_); |
| 166 state_ = CONNECTING; | 166 state_ = CONNECTING; |
| 167 addresses_.Copy(socket->address_list().head(), true); | 167 addresses_.Copy(socket->address_list().head(), true); |
| 168 Singleton<WebSocketThrottle>::get()->PutInQueue(this); | 168 WebSocketThrottle::GetInstance()->PutInQueue(this); |
| 169 if (!waiting_) | 169 if (!waiting_) |
| 170 return OK; | 170 return OK; |
| 171 callback_ = callback; | 171 callback_ = callback; |
| 172 AddRef(); // Balanced when callback_ becomes NULL. | 172 AddRef(); // Balanced when callback_ becomes NULL. |
| 173 return ERR_IO_PENDING; | 173 return ERR_IO_PENDING; |
| 174 } | 174 } |
| 175 | 175 |
| 176 void WebSocketJob::OnConnected( | 176 void WebSocketJob::OnConnected( |
| 177 SocketStream* socket, int max_pending_send_allowed) { | 177 SocketStream* socket, int max_pending_send_allowed) { |
| 178 if (state_ == CLOSED) | 178 if (state_ == CLOSED) |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 receive_frame_handler_->GetCurrentBufferSize()); | 230 receive_frame_handler_->GetCurrentBufferSize()); |
| 231 receive_frame_handler_->ReleaseCurrentBuffer(); | 231 receive_frame_handler_->ReleaseCurrentBuffer(); |
| 232 } | 232 } |
| 233 if (delegate_ && received_data.size() > 0) | 233 if (delegate_ && received_data.size() > 0) |
| 234 delegate_->OnReceivedData( | 234 delegate_->OnReceivedData( |
| 235 socket, received_data.data(), received_data.size()); | 235 socket, received_data.data(), received_data.size()); |
| 236 } | 236 } |
| 237 | 237 |
| 238 void WebSocketJob::OnClose(SocketStream* socket) { | 238 void WebSocketJob::OnClose(SocketStream* socket) { |
| 239 state_ = CLOSED; | 239 state_ = CLOSED; |
| 240 Singleton<WebSocketThrottle>::get()->RemoveFromQueue(this); | 240 WebSocketThrottle::GetInstance()->RemoveFromQueue(this); |
| 241 Singleton<WebSocketThrottle>::get()->WakeupSocketIfNecessary(); | 241 WebSocketThrottle::GetInstance()->WakeupSocketIfNecessary(); |
| 242 | 242 |
| 243 scoped_refptr<WebSocketJob> protect(this); | 243 scoped_refptr<WebSocketJob> protect(this); |
| 244 | 244 |
| 245 SocketStream::Delegate* delegate = delegate_; | 245 SocketStream::Delegate* delegate = delegate_; |
| 246 delegate_ = NULL; | 246 delegate_ = NULL; |
| 247 socket_ = NULL; | 247 socket_ = NULL; |
| 248 if (callback_) { | 248 if (callback_) { |
| 249 waiting_ = false; | 249 waiting_ = false; |
| 250 callback_ = NULL; | 250 callback_ = NULL; |
| 251 Release(); // Balanced with OnStartOpenConnection(). | 251 Release(); // Balanced with OnStartOpenConnection(). |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 receive_frame_handler_->ReleaseCurrentBuffer(); | 398 receive_frame_handler_->ReleaseCurrentBuffer(); |
| 399 } | 399 } |
| 400 | 400 |
| 401 state_ = OPEN; | 401 state_ = OPEN; |
| 402 if (delegate_) | 402 if (delegate_) |
| 403 delegate_->OnReceivedData( | 403 delegate_->OnReceivedData( |
| 404 socket_, received_data.data(), received_data.size()); | 404 socket_, received_data.data(), received_data.size()); |
| 405 | 405 |
| 406 handshake_response_.reset(); | 406 handshake_response_.reset(); |
| 407 | 407 |
| 408 Singleton<WebSocketThrottle>::get()->RemoveFromQueue(this); | 408 WebSocketThrottle::GetInstance()->RemoveFromQueue(this); |
| 409 Singleton<WebSocketThrottle>::get()->WakeupSocketIfNecessary(); | 409 WebSocketThrottle::GetInstance()->WakeupSocketIfNecessary(); |
| 410 return; | 410 return; |
| 411 } | 411 } |
| 412 | 412 |
| 413 AddRef(); // Balanced in OnCanSetCookieCompleted | 413 AddRef(); // Balanced in OnCanSetCookieCompleted |
| 414 | 414 |
| 415 int policy = OK; | 415 int policy = OK; |
| 416 if (socket_->context()->cookie_policy()) { | 416 if (socket_->context()->cookie_policy()) { |
| 417 GURL url_for_cookies = GetURLForCookies(); | 417 GURL url_for_cookies = GetURLForCookies(); |
| 418 policy = socket_->context()->cookie_policy()->CanSetCookie( | 418 policy = socket_->context()->cookie_policy()->CanSetCookie( |
| 419 url_for_cookies, | 419 url_for_cookies, |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 socket_->Close(); | 499 socket_->Close(); |
| 500 return; | 500 return; |
| 501 } | 501 } |
| 502 current_buffer_ = new DrainableIOBuffer( | 502 current_buffer_ = new DrainableIOBuffer( |
| 503 send_frame_handler_->GetCurrentBuffer(), | 503 send_frame_handler_->GetCurrentBuffer(), |
| 504 send_frame_handler_->GetCurrentBufferSize()); | 504 send_frame_handler_->GetCurrentBufferSize()); |
| 505 socket_->SendData(current_buffer_->data(), current_buffer_->BytesRemaining()); | 505 socket_->SendData(current_buffer_->data(), current_buffer_->BytesRemaining()); |
| 506 } | 506 } |
| 507 | 507 |
| 508 } // namespace net | 508 } // namespace net |
| OLD | NEW |