| // Copyright 2014 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. |
| |
| #ifndef REMOTING_HOST_NATIVE_MESSAGING_NATIVE_MESSAGING_PIPE_H_ |
| #define REMOTING_HOST_NATIVE_MESSAGING_NATIVE_MESSAGING_PIPE_H_ |
| |
| #include <memory> |
| |
| #include "base/macros.h" |
| #include "base/memory/weak_ptr.h" |
| #include "extensions/browser/api/messaging/native_message_host.h" |
| #include "extensions/browser/api/messaging/native_messaging_channel.h" |
| |
| namespace base { |
| class Value; |
| } |
| |
| namespace remoting { |
| |
| // Connects a extensions::NativeMessageHost to a PipeMessagingChannel. |
| class NativeMessagingPipe |
| : public extensions::NativeMessagingChannel::EventHandler, |
| public extensions::NativeMessageHost::Client { |
| public: |
| NativeMessagingPipe(); |
| ~NativeMessagingPipe() override; |
| |
| // Starts processing messages from the pipe. |
| void Start(std::unique_ptr<extensions::NativeMessageHost> host, |
| std::unique_ptr<extensions::NativeMessagingChannel> channel); |
| |
| // extensions::NativeMessageHost::Client implementation. |
| void PostMessageFromNativeHost(const std::string& message) override; |
| void CloseChannel(const std::string& error_message) override; |
| |
| // extensions::NativeMessagingChannel::EventHandler implementation. |
| void OnMessage(std::unique_ptr<base::Value> message) override; |
| void OnDisconnect() override; |
| |
| private: |
| std::unique_ptr<extensions::NativeMessagingChannel> channel_; |
| std::unique_ptr<extensions::NativeMessageHost> host_; |
| |
| DISALLOW_COPY_AND_ASSIGN(NativeMessagingPipe); |
| }; |
| |
| } // namespace remoting |
| |
| #endif // REMOTING_HOST_NATIVE_MESSAGING_NATIVE_MESSAGING_PIPE_H_ |