1#ifndef ARION_SOCKET_MANAGER_HPP
2#define ARION_SOCKET_MANAGER_HPP
37 bool server_listen =
false;
39 int server_backlog = 0;
41 bool blocking =
false;
43 socklen_t s_addr_sz = 0;
45 sockaddr *s_addr =
nullptr;
58 : fd(fd), family(family), type(type), protocol(protocol) {};
64 : fd(s->fd), family(s->family), type(s->type), protocol(s->protocol), ip(s->ip), port(s->port), path(s->path),
65 server(s->server), server_listen(s->server_listen), server_backlog(s->server_backlog), blocking(s->blocking),
66 s_addr_sz(s->s_addr_sz)
68 if (s->s_addr && s->s_addr_sz)
70 s_addr = (sockaddr *)malloc(s->s_addr_sz);
71 memcpy(s_addr, s->s_addr, s->s_addr_sz);
79 : fd(s->fd), family(s->family), type(s->type), protocol(s->protocol), ip(s->ip), port(s->port), path(s->path),
80 server(s->server), server_listen(s->server_listen), server_backlog(s->server_backlog), blocking(s->blocking),
81 s_addr_sz(s->s_addr_sz)
85 s_addr = (sockaddr *)malloc(s->
s_addr_sz);
122 std::map<int, std::shared_ptr<ARION_SOCKET>>
sockets;
Definition socket_manager.hpp:115
std::shared_ptr< ARION_SOCKET > get_arion_socket(int target_fd)
SocketManager(std::weak_ptr< Arion > arion)
Definition socket_manager.hpp:133
std::map< int, std::shared_ptr< ARION_SOCKET > > sockets
A map identifying a socket given its UNIX file descriptor.
Definition socket_manager.hpp:122
bool has_socket_entry(int target_fd)
void rm_socket_entry(int target_fd)
std::weak_ptr< Arion > arion
The Arion instance associated to this instance.
Definition socket_manager.hpp:118
void add_socket_entry(int target_fd, std::shared_ptr< ARION_SOCKET > socket)
static std::unique_ptr< SocketManager > initialize(std::weak_ptr< Arion > arion)
#define ARION_EXPORT
Defines which symbols should be exported from the library.
Definition global_defs.hpp:13
Definition arch_x86-64.hpp:11
std::vector< BYTE > serialize_arion_socket(ARION_SOCKET *arion_s)
ARION_SOCKET * deserialize_arion_socket(std::vector< BYTE > srz_socket)
This structure holds data about a UNIX socket.
Definition socket_manager.hpp:19
int fd
File Descriptor of the socket.
Definition socket_manager.hpp:21
ARION_SOCKET(ARION_SOCKET *s)
Definition socket_manager.hpp:78
int family
UNIX family of the socket (e.g, AF_UNIX, AF_INET).
Definition socket_manager.hpp:23
socklen_t s_addr_sz
Length of the socket sockaddr address, when relevant.
Definition socket_manager.hpp:43
sockaddr * s_addr
The socket sockaddr address, when relevant.
Definition socket_manager.hpp:45
int protocol
UNIX protocol of the socket.
Definition socket_manager.hpp:27
~ARION_SOCKET()
Definition socket_manager.hpp:92
std::string path
Path associated to the socket, when relevant.
Definition socket_manager.hpp:33
int type
UNIX type of the socket (e.g, SOCK_STREAM, SOCK_DGRAM).
Definition socket_manager.hpp:25
ARION_SOCKET(std::shared_ptr< ARION_SOCKET > s)
Definition socket_manager.hpp:63
ARION_SOCKET()
Definition socket_manager.hpp:49
ARION_SOCKET(int fd, int family, int type, int protocol)
Definition socket_manager.hpp:57
uint16_t port
Port associated to the socket, when relevant.
Definition socket_manager.hpp:31
std::string ip
IP address associated to the socket, when relevant.
Definition socket_manager.hpp:29