lokinet/llarp/ev.hpp

67 lines
986 B
C++
Raw Normal View History

2018-04-30 13:18:57 +00:00
#ifndef LLARP_EV_HPP
#define LLARP_EV_HPP
#include <llarp/ev.h>
#ifndef _MSC_VER
2018-04-30 13:18:57 +00:00
#include <unistd.h>
#endif
#include <list>
2018-04-30 13:18:57 +00:00
namespace llarp
{
struct ev_io
{
#ifndef _WIN32
int fd;
ev_io(int f) : fd(f){};
#else
SOCKET fd;
ev_io(SOCKET f) : fd(f){};
#endif
virtual int
read(void* buf, size_t sz) = 0;
virtual int
sendto(const sockaddr* dst, const void* data, size_t sz) = 0;
virtual ~ev_io()
{
#ifndef _WIN32
::close(fd);
#else
closesocket(fd);
#endif
};
};
2018-04-30 16:14:20 +00:00
}; // namespace llarp
2018-04-30 13:18:57 +00:00
struct llarp_ev_loop
{
virtual bool
init() = 0;
virtual int
run() = 0;
2018-06-06 12:46:26 +00:00
virtual int
2018-06-06 21:23:57 +00:00
tick(int ms) = 0;
2018-06-06 12:46:26 +00:00
virtual void
stop() = 0;
2018-04-30 13:18:57 +00:00
virtual bool
2018-05-23 13:49:00 +00:00
udp_listen(llarp_udp_io* l, const sockaddr* src) = 0;
virtual bool
udp_close(llarp_udp_io* l) = 0;
virtual bool
close_ev(llarp::ev_io* ev) = 0;
2018-04-30 16:14:20 +00:00
2018-08-10 03:51:38 +00:00
virtual bool
running() const = 0;
2018-04-30 16:14:20 +00:00
virtual ~llarp_ev_loop(){};
std::list< llarp_udp_io* > udp_listeners;
2018-04-30 13:18:57 +00:00
};
#endif