#pragma once
#include "StreamImpl.h"
#include <panda/optional.h>
namespace panda { namespace unievent { namespace backend {
struct PipeImpl : StreamImpl {
struct Mode {
static constexpr int not_connected = 0;
static constexpr int readable = 1;
static constexpr int writable = 2;
};
PipeImpl (LoopImpl* loop, IStreamImplListener* lst) : StreamImpl(loop, lst) {}
virtual std::error_code open (fd_t file) = 0;
virtual std::error_code bind (string_view name) = 0;
virtual std::error_code connect (string_view name, ConnectRequestImpl* req) = 0;
virtual expected<string, std::error_code> sockname () const = 0;
virtual expected<string, std::error_code> peername () const = 0;
virtual void pending_instances (int count) = 0;
virtual int pending_count () const = 0;
virtual std::error_code chmod (int mode) = 0;
};
}}}