#ifndef REMOTING_HOST_NATIVE_MESSAGING_NATIVE_MESSAGING_PIPE_H_
#define REMOTING_HOST_NATIVE_MESSAGING_NATIVE_MESSAGING_PIPE_H_
#include <memory>
#include "extensions/browser/api/messaging/native_message_host.h"
#include "extensions/browser/api/messaging/native_messaging_channel.h"
namespace base {
class Value;
}
namespace remoting {
class NativeMessagingPipe
: public extensions::NativeMessagingChannel::EventHandler,
public extensions::NativeMessageHost::Client {
public:
NativeMessagingPipe();
NativeMessagingPipe(const NativeMessagingPipe&) = delete;
NativeMessagingPipe& operator=(const NativeMessagingPipe&) = delete;
~NativeMessagingPipe() override;
void Start(std::unique_ptr<extensions::NativeMessageHost> host,
std::unique_ptr<extensions::NativeMessagingChannel> channel);
void PostMessageFromNativeHost(const std::string& message) override;
void CloseChannel(const std::string& error_message) override;
void OnMessage(const base::Value& message) override;
void OnDisconnect() override;
private:
std::unique_ptr<extensions::NativeMessagingChannel> channel_;
std::unique_ptr<extensions::NativeMessageHost> host_;
};
}
#endif