| Index: remoting/host/native_messaging/native_messaging_channel.cc
|
| diff --git a/remoting/host/native_messaging/native_messaging_channel.cc b/remoting/host/native_messaging/native_messaging_channel.cc
|
| deleted file mode 100644
|
| index 007de56fcacff50f8e4b2c139f717a40268633ba..0000000000000000000000000000000000000000
|
| --- a/remoting/host/native_messaging/native_messaging_channel.cc
|
| +++ /dev/null
|
| @@ -1,109 +0,0 @@
|
| -// Copyright 2013 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/host/native_messaging/native_messaging_channel.h"
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/bind.h"
|
| -#include "base/callback.h"
|
| -#include "base/callback_helpers.h"
|
| -#include "base/location.h"
|
| -#include "base/values.h"
|
| -
|
| -#if defined(OS_POSIX)
|
| -#include <unistd.h>
|
| -#endif
|
| -
|
| -namespace {
|
| -
|
| -base::File DuplicatePlatformFile(base::File file) {
|
| - base::PlatformFile result;
|
| -#if defined(OS_WIN)
|
| - if (!DuplicateHandle(GetCurrentProcess(),
|
| - file.TakePlatformFile(),
|
| - GetCurrentProcess(),
|
| - &result,
|
| - 0,
|
| - FALSE,
|
| - DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS)) {
|
| - PLOG(ERROR) << "Failed to duplicate handle " << file.GetPlatformFile();
|
| - return base::File();
|
| - }
|
| - return base::File(result);
|
| -#elif defined(OS_POSIX)
|
| - result = dup(file.GetPlatformFile());
|
| - return base::File(result);
|
| -#else
|
| -#error Not implemented.
|
| -#endif
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -namespace remoting {
|
| -
|
| -NativeMessagingChannel::NativeMessagingChannel(
|
| - base::File input,
|
| - base::File output)
|
| - : native_messaging_reader_(DuplicatePlatformFile(input.Pass())),
|
| - native_messaging_writer_(new NativeMessagingWriter(
|
| - DuplicatePlatformFile(output.Pass()))),
|
| - weak_factory_(this) {
|
| - weak_ptr_ = weak_factory_.GetWeakPtr();
|
| -}
|
| -
|
| -NativeMessagingChannel::~NativeMessagingChannel() {
|
| -}
|
| -
|
| -void NativeMessagingChannel::Start(const SendMessageCallback& received_message,
|
| - const base::Closure& quit_closure) {
|
| - DCHECK(CalledOnValidThread());
|
| - DCHECK(received_message_.is_null());
|
| - DCHECK(quit_closure_.is_null());
|
| -
|
| - received_message_ = received_message;
|
| - quit_closure_ = quit_closure;
|
| -
|
| - native_messaging_reader_.Start(
|
| - base::Bind(&NativeMessagingChannel::ProcessMessage, weak_ptr_),
|
| - base::Bind(&NativeMessagingChannel::Shutdown, weak_ptr_));
|
| -}
|
| -
|
| -void NativeMessagingChannel::ProcessMessage(scoped_ptr<base::Value> message) {
|
| - DCHECK(CalledOnValidThread());
|
| -
|
| - if (message->GetType() != base::Value::TYPE_DICTIONARY) {
|
| - LOG(ERROR) << "Expected DictionaryValue";
|
| - Shutdown();
|
| - return;
|
| - }
|
| -
|
| - scoped_ptr<base::DictionaryValue> message_dict(
|
| - static_cast<base::DictionaryValue*>(message.release()));
|
| - received_message_.Run(message_dict.Pass());
|
| -}
|
| -
|
| -void NativeMessagingChannel::SendMessage(
|
| - scoped_ptr<base::DictionaryValue> message) {
|
| - DCHECK(CalledOnValidThread());
|
| -
|
| - bool success = message && native_messaging_writer_;
|
| - if (success)
|
| - success = native_messaging_writer_->WriteMessage(*message);
|
| -
|
| - if (!success) {
|
| - // Close the write pipe so no more responses will be sent.
|
| - native_messaging_writer_.reset();
|
| - Shutdown();
|
| - }
|
| -}
|
| -
|
| -void NativeMessagingChannel::Shutdown() {
|
| - DCHECK(CalledOnValidThread());
|
| -
|
| - if (!quit_closure_.is_null())
|
| - base::ResetAndReturn(&quit_closure_).Run();
|
| -}
|
| -
|
| -} // namespace remoting
|
|
|