net: Group events into struct

This commit is contained in:
Xavier Del Campo Romero 2022-09-21 18:27:58 +02:00
parent 85d4af0266
commit 467f09e952
3 changed files with 21 additions and 16 deletions

View File

@ -68,9 +68,12 @@ static int on_connect(struct join_menu *const m)
.common = .common =
{ {
.domain = d, .domain = d,
.on_connected = on_connected, .ev =
.on_disconnected = on_disconnected, {
.arg = m .connected = on_connected,
.disconnected = on_disconnected,
.arg = m
}
} }
}; };

View File

@ -15,9 +15,13 @@ union net_connect
struct net_connect_common struct net_connect_common
{ {
enum net_domain domain; enum net_domain domain;
void (*on_connected)(void *arg);
void (*on_disconnected)(void *arg); struct net_connect_ev
void *arg; {
void (*connected)(void *arg);
void (*disconnected)(void *arg);
void *arg;
} ev;
} common; } common;
struct net_connect_ipv4 struct net_connect_ipv4

View File

@ -9,9 +9,7 @@ struct net_socket_domain
{ {
ENetHost *host; ENetHost *host;
ENetPeer *peers; ENetPeer *peers;
void (*on_connected)(void *arg); struct net_connect_ev ev;
void (*on_disconnected)(void *arg);
void *arg;
}; };
enum enum
@ -27,9 +25,7 @@ struct net_socket_domain *net_connect_ipv4(const union net_connect *const c)
if (!s) if (!s)
goto failure; goto failure;
s->on_connected = c->common.on_connected; s->ev = c->common.ev;
s->on_disconnected = c->common.on_disconnected;
s->arg = c->common.arg;
s->host = enet_host_create(NULL, 1, MAX_CHANNELS, 0, 0); s->host = enet_host_create(NULL, 1, MAX_CHANNELS, 0, 0);
if (!s->host) if (!s->host)
@ -96,14 +92,16 @@ int net_update_ipv4(struct net_socket_domain *const s)
switch (ev.type) switch (ev.type)
{ {
case ENET_EVENT_TYPE_CONNECT: case ENET_EVENT_TYPE_CONNECT:
if (s->on_connected) if (s->ev.connected)
s->on_connected(s->arg); s->ev.connected(s->ev.arg);
break; break;
case ENET_EVENT_TYPE_DISCONNECT: case ENET_EVENT_TYPE_DISCONNECT:
if (s->on_disconnected) if (s->ev.disconnected)
s->on_disconnected(s->arg); s->ev.disconnected(s->ev.arg);
break;
case ENET_EVENT_TYPE_RECEIVE: case ENET_EVENT_TYPE_RECEIVE:
break; break;