/*
* Copyright © 2013-2014 Canonical Ltd.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
* Authored by: Kevin DuBois
*/
#ifndef ANBOX_NETWORK_MESSAGE_RECEIVER_H_
#define ANBOX_NETWORK_MESSAGE_RECEIVER_H_
#include
#include
#include
#include "anbox/common/fd.h"
namespace anbox {
namespace network {
class MessageReceiver {
public:
// receive message from the socket. 'handler' will be called when 'buffer' has
// been filled with exactly 'size'
typedef std::function
AnboxReadHandler;
virtual void async_receive_msg(
AnboxReadHandler const& handler,
boost::asio::mutable_buffers_1 const& buffer) = 0;
virtual boost::system::error_code receive_msg(
boost::asio::mutable_buffers_1 const& buffer) = 0;
virtual size_t available_bytes() = 0;
protected:
MessageReceiver() = default;
virtual ~MessageReceiver() = default;
MessageReceiver(MessageReceiver const&) = delete;
MessageReceiver& operator=(MessageReceiver const&) = delete;
};
} // namespace network
} // namespace anbox
#endif