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

Unified Diff: remoting/client/plugin/pepper_port_allocator.cc

Issue 1681393006: Use UrlRequest in PortAllocator. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: remoting/client/plugin/pepper_port_allocator.cc
diff --git a/remoting/client/plugin/pepper_port_allocator.cc b/remoting/client/plugin/pepper_port_allocator.cc
deleted file mode 100644
index 6f3b55180411411542e818dd652b856010fdb0b0..0000000000000000000000000000000000000000
--- a/remoting/client/plugin/pepper_port_allocator.cc
+++ /dev/null
@@ -1,197 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "remoting/client/plugin/pepper_port_allocator.h"
-
-#include <stdint.h>
-
-#include <utility>
-
-#include "base/bind.h"
-#include "base/macros.h"
-#include "base/strings/string_number_conversions.h"
-#include "net/base/net_util.h"
-#include "ppapi/c/pp_errors.h"
-#include "ppapi/cpp/url_loader.h"
-#include "ppapi/cpp/url_request_info.h"
-#include "ppapi/cpp/url_response_info.h"
-#include "ppapi/utility/completion_callback_factory.h"
-#include "remoting/client/plugin/pepper_network_manager.h"
-#include "remoting/client/plugin/pepper_packet_socket_factory.h"
-#include "remoting/client/plugin/pepper_util.h"
-#include "remoting/protocol/transport_context.h"
-
-namespace remoting {
-
-namespace {
-
-// Read buffer we allocate per read when reading response from
-// URLLoader. Normally the response from URL loader is smaller than 1kB.
-const int kReadSize = 1024;
-
-class PepperPortAllocatorSession : public protocol::PortAllocatorSessionBase {
- public:
- PepperPortAllocatorSession(
- PepperPortAllocator* allocator,
- const std::string& content_name,
- int component,
- const std::string& ice_username_fragment,
- const std::string& ice_password);
- ~PepperPortAllocatorSession() override;
-
- // PortAllocatorBase overrides.
- void SendSessionRequest(const std::string& host) override;
-
- private:
- void OnUrlOpened(int32_t result);
- void ReadResponseBody();
- void OnResponseBodyRead(int32_t result);
-
- pp::InstanceHandle pp_instance_;
-
- cricket::ServerAddresses stun_hosts_;
-
- scoped_ptr<pp::URLLoader> relay_url_loader_;
- std::vector<char> relay_response_body_;
- bool relay_response_received_ = false;
-
- pp::CompletionCallbackFactory<PepperPortAllocatorSession> callback_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(PepperPortAllocatorSession);
-};
-
-PepperPortAllocatorSession::PepperPortAllocatorSession(
- PepperPortAllocator* allocator,
- const std::string& content_name,
- int component,
- const std::string& ice_username_fragment,
- const std::string& ice_password)
- : PortAllocatorSessionBase(allocator,
- content_name,
- component,
- ice_username_fragment,
- ice_password),
- pp_instance_(allocator->pp_instance()),
- callback_factory_(this) {}
-
-PepperPortAllocatorSession::~PepperPortAllocatorSession() {}
-
-void PepperPortAllocatorSession::SendSessionRequest(const std::string& host) {
- relay_url_loader_.reset(new pp::URLLoader(pp_instance_));
- pp::URLRequestInfo request_info(pp_instance_);
- std::string url = "https://" + host + GetSessionRequestUrl() + "&sn=1";
- request_info.SetURL(url);
- request_info.SetMethod("GET");
- std::stringstream headers;
- headers << "X-Talk-Google-Relay-Auth: " << relay_token() << "\n\r";
- headers << "X-Google-Relay-Auth: " << relay_token() << "\n\r";
- headers << "X-Stream-Type: " << "chromoting" << "\n\r";
- request_info.SetHeaders(headers.str());
-
- pp::CompletionCallback callback =
- callback_factory_.NewCallback(&PepperPortAllocatorSession::OnUrlOpened);
- int result = relay_url_loader_->Open(request_info, callback);
- DCHECK_EQ(result, PP_OK_COMPLETIONPENDING);
-}
-
-void PepperPortAllocatorSession::OnUrlOpened(int32_t result) {
- if (result == PP_ERROR_ABORTED) {
- return;
- }
-
- if (result < 0) {
- LOG(WARNING) << "URLLoader failed: " << result;
- // Retry creating session.
- TryCreateRelaySession();
- return;
- }
-
- pp::URLResponseInfo response = relay_url_loader_->GetResponseInfo();
- DCHECK(!response.is_null());
- if (response.GetStatusCode() != 200) {
- LOG(WARNING) << "Received HTTP status code " << response.GetStatusCode();
- // Retry creating session.
- TryCreateRelaySession();
- return;
- }
-
- relay_response_body_.clear();
- ReadResponseBody();
-}
-
-void PepperPortAllocatorSession::ReadResponseBody() {
- int pos = relay_response_body_.size();
- relay_response_body_.resize(pos + kReadSize);
- pp::CompletionCallback callback = callback_factory_.NewCallback(
- &PepperPortAllocatorSession::OnResponseBodyRead);
- int result = relay_url_loader_->ReadResponseBody(&relay_response_body_[pos],
- kReadSize,
- callback);
- DCHECK_EQ(result, PP_OK_COMPLETIONPENDING);
-}
-
-void PepperPortAllocatorSession::OnResponseBodyRead(int32_t result) {
- if (result == PP_ERROR_ABORTED) {
- return;
- }
-
- if (result < 0) {
- LOG(WARNING) << "Failed to read HTTP response body when "
- "creating relay session: " << result;
- // Retry creating session.
- TryCreateRelaySession();
- return;
- }
-
- // Resize the buffer in case we've read less than was requested.
- CHECK_LE(result, kReadSize);
- CHECK_GE(static_cast<int>(relay_response_body_.size()), kReadSize);
- relay_response_body_.resize(relay_response_body_.size() - kReadSize + result);
-
- if (result == 0) {
- relay_response_received_ = true;
- ReceiveSessionResponse(std::string(relay_response_body_.begin(),
- relay_response_body_.end()));
- return;
- }
-
- ReadResponseBody();
-}
-
-} // namespace
-
-PepperPortAllocator::PepperPortAllocator(
- scoped_refptr<protocol::TransportContext> transport_context,
- pp::InstanceHandle pp_instance)
- : PortAllocatorBase(
- make_scoped_ptr(new PepperNetworkManager(pp_instance)),
- make_scoped_ptr(new PepperPacketSocketFactory(pp_instance)),
- transport_context),
- pp_instance_(pp_instance) {}
-
-PepperPortAllocator::~PepperPortAllocator() {}
-
-cricket::PortAllocatorSession* PepperPortAllocator::CreateSessionInternal(
- const std::string& content_name,
- int component,
- const std::string& ice_username_fragment,
- const std::string& ice_password) {
- return new PepperPortAllocatorSession(this, content_name, component,
- ice_username_fragment, ice_password);
-}
-
-PepperPortAllocatorFactory::PepperPortAllocatorFactory(
- pp::InstanceHandle pp_instance)
- : pp_instance_(pp_instance) {}
-
-PepperPortAllocatorFactory::~PepperPortAllocatorFactory() {}
-
-scoped_ptr<cricket::PortAllocator>
-PepperPortAllocatorFactory::CreatePortAllocator(
- scoped_refptr<protocol::TransportContext> transport_context) {
- return make_scoped_ptr(
- new PepperPortAllocator(transport_context, pp_instance_));
-}
-
-} // namespace remoting
« no previous file with comments | « remoting/client/plugin/pepper_port_allocator.h ('k') | remoting/client/plugin/pepper_port_allocator_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698