lokinet/llarp/ev/pipe.hpp

40 lines
755 B
C++
Raw Normal View History

2019-04-08 12:01:52 +00:00
#ifndef LLARP_EV_PIPE_HPP
#define LLARP_EV_PIPE_HPP
#include <ev/ev.hpp>
2019-04-08 14:04:58 +00:00
/// a unidirectional packet pipe
struct llarp_ev_pkt_pipe : public llarp::ev_io
2019-04-08 12:01:52 +00:00
{
2019-04-08 14:04:58 +00:00
llarp_ev_pkt_pipe(llarp_ev_loop_ptr loop);
/// start the pipe, initialize fds
bool
Start();
/// write to the pipe from outside the event loop
/// returns true on success
/// returns false on failure
bool
Write(const llarp_buffer_t& buf);
/// override me to handle a packet from the other side in the owned event loop
virtual void
OnRead(const llarp_buffer_t& buf) = 0;
ssize_t
do_write(void* buf, size_t sz) override;
virtual bool
tick() override;
int
read(byte_t* buf, size_t sz) override;
2019-04-08 12:01:52 +00:00
private:
2019-04-08 14:04:58 +00:00
llarp_ev_loop_ptr m_Loop;
int writefd;
2019-04-08 12:01:52 +00:00
};
#endif