| Index: remoting/protocol/pepper_p2p_channel.cc
|
| diff --git a/remoting/protocol/pepper_p2p_channel.cc b/remoting/protocol/pepper_p2p_channel.cc
|
| deleted file mode 100644
|
| index 516b7b7d1cccdb1ca614ed762bedcc5f9ed7a9df..0000000000000000000000000000000000000000
|
| --- a/remoting/protocol/pepper_p2p_channel.cc
|
| +++ /dev/null
|
| @@ -1,170 +0,0 @@
|
| -// Copyright (c) 2011 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/protocol/pepper_p2p_channel.h"
|
| -
|
| -#include "base/logging.h"
|
| -#include "net/base/io_buffer.h"
|
| -#include "net/base/net_errors.h"
|
| -#include "ppapi/c/pp_errors.h"
|
| -#include "ppapi/cpp/dev/transport_dev.h"
|
| -#include "ppapi/cpp/var.h"
|
| -
|
| -namespace remoting {
|
| -namespace protocol {
|
| -
|
| -namespace {
|
| -
|
| -const char kPepperTransportUdpProtocol[] = "udp";
|
| -
|
| -// Maps value returned by Recv() and Send() Pepper methods to net::Error.
|
| -int PPErrorToNetError(int result) {
|
| - if (result > 0)
|
| - return result;
|
| -
|
| - switch (result) {
|
| - case PP_OK:
|
| - return net::OK;
|
| - case PP_OK_COMPLETIONPENDING:
|
| - return net::ERR_IO_PENDING;
|
| - default:
|
| - return net::ERR_FAILED;
|
| - }
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -PepperP2PChannel::PepperP2PChannel(
|
| - pp::Instance* pp_instance,
|
| - const char* name,
|
| - const IncomingCandidateCallback& candidate_callback)
|
| - : candidate_callback_(candidate_callback),
|
| - get_address_pending_(false),
|
| - read_callback_(NULL),
|
| - write_callback_(NULL) {
|
| - transport_.reset(
|
| - new pp::Transport_Dev(pp_instance, name, kPepperTransportUdpProtocol));
|
| -}
|
| -
|
| -bool PepperP2PChannel::Init() {
|
| - // This will return false when the GetNextAddress() returns an
|
| - // error. Particularly it is useful to detect when the P2P Transport
|
| - // API is not supported.
|
| - return ProcessCandidates();
|
| -}
|
| -
|
| -PepperP2PChannel::~PepperP2PChannel() {
|
| -}
|
| -
|
| -void PepperP2PChannel::AddRemoteCandidate(const std::string& candidate) {
|
| - DCHECK(CalledOnValidThread());
|
| - transport_->ReceiveRemoteAddress(candidate);
|
| -}
|
| -
|
| -int PepperP2PChannel::Read(net::IOBuffer* buf, int buf_len,
|
| - net::CompletionCallback* callback) {
|
| - DCHECK(CalledOnValidThread());
|
| - DCHECK(!read_callback_);
|
| - DCHECK(!read_buffer_);
|
| -
|
| - int result = PPErrorToNetError(transport_->Recv(
|
| - buf->data(), buf_len,
|
| - pp::CompletionCallback(&PepperP2PChannel::ReadCallback, this)));
|
| -
|
| - if (result == net::ERR_IO_PENDING) {
|
| - read_callback_ = callback;
|
| - read_buffer_ = buf;
|
| - }
|
| -
|
| - return result;
|
| -}
|
| -
|
| -int PepperP2PChannel::Write(net::IOBuffer* buf, int buf_len,
|
| - net::CompletionCallback* callback) {
|
| - DCHECK(CalledOnValidThread());
|
| - DCHECK(!write_callback_);
|
| - DCHECK(!write_buffer_);
|
| -
|
| - int result = PPErrorToNetError(transport_->Send(
|
| - buf->data(), buf_len,
|
| - pp::CompletionCallback(&PepperP2PChannel::WriteCallback, this)));
|
| -
|
| - if (result == net::ERR_IO_PENDING) {
|
| - write_callback_ = callback;
|
| - write_buffer_ = buf;
|
| - }
|
| -
|
| - return result;
|
| -}
|
| -
|
| -bool PepperP2PChannel::SetReceiveBufferSize(int32 size) {
|
| - DCHECK(CalledOnValidThread());
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| -}
|
| -
|
| -bool PepperP2PChannel::SetSendBufferSize(int32 size) {
|
| - DCHECK(CalledOnValidThread());
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| -}
|
| -
|
| -bool PepperP2PChannel::ProcessCandidates() {
|
| - DCHECK(CalledOnValidThread());
|
| - DCHECK(!get_address_pending_);
|
| -
|
| - while (true) {
|
| - pp::Var address;
|
| - int result = transport_->GetNextAddress(
|
| - &address,
|
| - pp::CompletionCallback(&PepperP2PChannel::NextAddressCallback, this));
|
| - if (result == PP_OK_COMPLETIONPENDING) {
|
| - get_address_pending_ = true;
|
| - break;
|
| - }
|
| -
|
| - if (result == PP_OK) {
|
| - candidate_callback_.Run(address.AsString());
|
| - } else {
|
| - LOG(ERROR) << "GetNextAddress() returned an error " << result;
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -// static
|
| -void PepperP2PChannel::NextAddressCallback(void* data, int32_t result) {
|
| - PepperP2PChannel* channel = reinterpret_cast<PepperP2PChannel*>(data);
|
| - DCHECK(channel->CalledOnValidThread());
|
| - channel->get_address_pending_ = false;
|
| - channel->ProcessCandidates();
|
| -}
|
| -
|
| -// static
|
| -void PepperP2PChannel::ReadCallback(void* data, int32_t result) {
|
| - PepperP2PChannel* channel = reinterpret_cast<PepperP2PChannel*>(data);
|
| - DCHECK(channel->CalledOnValidThread());
|
| - DCHECK(channel->read_callback_);
|
| - DCHECK(channel->read_buffer_);
|
| - net::CompletionCallback* callback = channel->read_callback_;
|
| - channel->read_callback_ = NULL;
|
| - channel->read_buffer_ = NULL;
|
| - callback->Run(result);
|
| -}
|
| -
|
| -// static
|
| -void PepperP2PChannel::WriteCallback(void* data, int32_t result) {
|
| - PepperP2PChannel* channel = reinterpret_cast<PepperP2PChannel*>(data);
|
| - DCHECK(channel->CalledOnValidThread());
|
| - DCHECK(channel->write_callback_);
|
| - DCHECK(channel->write_buffer_);
|
| - net::CompletionCallback* callback = channel->write_callback_;
|
| - channel->write_callback_ = NULL;
|
| - channel->write_buffer_ = NULL;
|
| - callback->Run(result);
|
| -}
|
| -
|
| -} // namespace protocol
|
| -} // namespace remoting
|
|
|