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

Unified Diff: webrtc/base/proxyserver.cc

Issue 2877023002: Move webrtc/{base => rtc_base} (Closed)
Patch Set: update presubmit.py and DEPS include rules Created 3 years, 6 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
« no previous file with comments | « webrtc/base/proxyserver.h ('k') | webrtc/base/ptr_util.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/base/proxyserver.cc
diff --git a/webrtc/base/proxyserver.cc b/webrtc/base/proxyserver.cc
deleted file mode 100644
index 713a98679a0cc3a0e36c46807c7408e3f5cb47b3..0000000000000000000000000000000000000000
--- a/webrtc/base/proxyserver.cc
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright 2004 The WebRTC Project Authors. All rights reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/base/proxyserver.h"
-
-#include <algorithm>
-
-#include "webrtc/base/checks.h"
-#include "webrtc/base/socketfactory.h"
-
-namespace rtc {
-
-// ProxyServer
-ProxyServer::ProxyServer(
- SocketFactory* int_factory, const SocketAddress& int_addr,
- SocketFactory* ext_factory, const SocketAddress& ext_ip)
- : ext_factory_(ext_factory), ext_ip_(ext_ip.ipaddr(), 0), // strip off port
- server_socket_(int_factory->CreateAsyncSocket(int_addr.family(),
- SOCK_STREAM)) {
- RTC_DCHECK(server_socket_.get() != nullptr);
- RTC_DCHECK(int_addr.family() == AF_INET || int_addr.family() == AF_INET6);
- server_socket_->Bind(int_addr);
- server_socket_->Listen(5);
- server_socket_->SignalReadEvent.connect(this, &ProxyServer::OnAcceptEvent);
-}
-
-ProxyServer::~ProxyServer() {
- for (BindingList::iterator it = bindings_.begin();
- it != bindings_.end(); ++it) {
- delete (*it);
- }
-}
-
-SocketAddress ProxyServer::GetServerAddress() {
- return server_socket_->GetLocalAddress();
-}
-
-void ProxyServer::OnAcceptEvent(AsyncSocket* socket) {
- RTC_DCHECK(socket != nullptr && socket == server_socket_.get());
- AsyncSocket* int_socket = socket->Accept(nullptr);
- AsyncProxyServerSocket* wrapped_socket = WrapSocket(int_socket);
- AsyncSocket* ext_socket = ext_factory_->CreateAsyncSocket(ext_ip_.family(),
- SOCK_STREAM);
- if (ext_socket) {
- ext_socket->Bind(ext_ip_);
- bindings_.push_back(new ProxyBinding(wrapped_socket, ext_socket));
- } else {
- LOG(LS_ERROR) << "Unable to create external socket on proxy accept event";
- }
-}
-
-void ProxyServer::OnBindingDestroyed(ProxyBinding* binding) {
- BindingList::iterator it =
- std::find(bindings_.begin(), bindings_.end(), binding);
- delete (*it);
- bindings_.erase(it);
-}
-
-// ProxyBinding
-ProxyBinding::ProxyBinding(AsyncProxyServerSocket* int_socket,
- AsyncSocket* ext_socket)
- : int_socket_(int_socket), ext_socket_(ext_socket), connected_(false),
- out_buffer_(kBufferSize), in_buffer_(kBufferSize) {
- int_socket_->SignalConnectRequest.connect(this,
- &ProxyBinding::OnConnectRequest);
- int_socket_->SignalReadEvent.connect(this, &ProxyBinding::OnInternalRead);
- int_socket_->SignalWriteEvent.connect(this, &ProxyBinding::OnInternalWrite);
- int_socket_->SignalCloseEvent.connect(this, &ProxyBinding::OnInternalClose);
- ext_socket_->SignalConnectEvent.connect(this,
- &ProxyBinding::OnExternalConnect);
- ext_socket_->SignalReadEvent.connect(this, &ProxyBinding::OnExternalRead);
- ext_socket_->SignalWriteEvent.connect(this, &ProxyBinding::OnExternalWrite);
- ext_socket_->SignalCloseEvent.connect(this, &ProxyBinding::OnExternalClose);
-}
-
-ProxyBinding::~ProxyBinding() = default;
-
-void ProxyBinding::OnConnectRequest(AsyncProxyServerSocket* socket,
- const SocketAddress& addr) {
- RTC_DCHECK(!connected_ && ext_socket_.get() != nullptr);
- ext_socket_->Connect(addr);
- // TODO: handle errors here
-}
-
-void ProxyBinding::OnInternalRead(AsyncSocket* socket) {
- Read(int_socket_.get(), &out_buffer_);
- Write(ext_socket_.get(), &out_buffer_);
-}
-
-void ProxyBinding::OnInternalWrite(AsyncSocket* socket) {
- Write(int_socket_.get(), &in_buffer_);
-}
-
-void ProxyBinding::OnInternalClose(AsyncSocket* socket, int err) {
- Destroy();
-}
-
-void ProxyBinding::OnExternalConnect(AsyncSocket* socket) {
- RTC_DCHECK(socket != nullptr);
- connected_ = true;
- int_socket_->SendConnectResult(0, socket->GetRemoteAddress());
-}
-
-void ProxyBinding::OnExternalRead(AsyncSocket* socket) {
- Read(ext_socket_.get(), &in_buffer_);
- Write(int_socket_.get(), &in_buffer_);
-}
-
-void ProxyBinding::OnExternalWrite(AsyncSocket* socket) {
- Write(ext_socket_.get(), &out_buffer_);
-}
-
-void ProxyBinding::OnExternalClose(AsyncSocket* socket, int err) {
- if (!connected_) {
- int_socket_->SendConnectResult(err, SocketAddress());
- }
- Destroy();
-}
-
-void ProxyBinding::Read(AsyncSocket* socket, FifoBuffer* buffer) {
- // Only read if the buffer is empty.
- RTC_DCHECK(socket != nullptr);
- size_t size;
- int read;
- if (buffer->GetBuffered(&size) && size == 0) {
- void* p = buffer->GetWriteBuffer(&size);
- read = socket->Recv(p, size, nullptr);
- buffer->ConsumeWriteBuffer(std::max(read, 0));
- }
-}
-
-void ProxyBinding::Write(AsyncSocket* socket, FifoBuffer* buffer) {
- RTC_DCHECK(socket != nullptr);
- size_t size;
- int written;
- const void* p = buffer->GetReadData(&size);
- written = socket->Send(p, size);
- buffer->ConsumeReadData(std::max(written, 0));
-}
-
-void ProxyBinding::Destroy() {
- SignalDestroyed(this);
-}
-
-AsyncProxyServerSocket* SocksProxyServer::WrapSocket(AsyncSocket* socket) {
- return new AsyncSocksProxyServerSocket(socket);
-}
-
-} // namespace rtc
« no previous file with comments | « webrtc/base/proxyserver.h ('k') | webrtc/base/ptr_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698