diff options
Diffstat (limited to 'src/libclient')
| -rw-r--r-- | src/libclient/client.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/libclient/client.c b/src/libclient/client.c index 0b06504..79f9f62 100644 --- a/src/libclient/client.c +++ b/src/libclient/client.c @@ -12,7 +12,6 @@ static bool results_callback(void *userdata, struct nn_rpc_connection *conn, struct nn_packet *packet, struct nn_packet *rpacket) { struct camu_client *client = (struct camu_client *)userdata; - (void)conn; (void)rpacket; u8 op = nn_packet_read_u8(packet); @@ -36,7 +35,6 @@ static bool meta_callback(void *userdata, struct nn_rpc_connection *conn, struct nn_packet *packet, struct nn_packet *rpacket) { struct camu_client *client = (struct camu_client *)userdata; - (void)conn; (void)rpacket; client->callback(client->userdata, CAMU_CLIENT_GOT_META, packet); @@ -50,7 +48,6 @@ static bool visual_data_callback(void *userdata, struct nn_rpc_connection *conn, struct nn_packet *packet, struct nn_packet *rpacket) { struct camu_client *client = (struct camu_client *)userdata; - (void)conn; (void)rpacket; client->callback(client->userdata, CAMU_CLIENT_GOT_VISUAL_DATA, packet); @@ -78,6 +75,12 @@ static void connection_callback(void *userdata, struct nn_rpc_connection *conn) { struct camu_client *client = (struct camu_client *)userdata; client->conn = conn; +} + +static void ready_callback(void *userdata, struct nn_rpc_connection *conn) +{ + struct camu_client *client = (struct camu_client *)userdata; + (void)conn; struct nn_packet *packet = nn_rpc_get_packet(&client->client, CAMU_SERVER_IDENTIFY); nn_packet_write_u8(packet, CAMU_CLIENT); nn_packet_write_str(packet, &client->username); @@ -87,7 +90,7 @@ static void connection_callback(void *userdata, struct nn_rpc_connection *conn) static void connection_closed_callback(void *userdata, struct nn_rpc_connection *conn) { struct camu_client *client = (struct camu_client *)userdata; - al_assert(client->conn == NULL || client->conn == conn); + al_assert(!client->conn || client->conn == conn); client->conn = NULL; } @@ -97,7 +100,7 @@ bool camu_client_login(struct camu_client *client, str *username, client->loop = loop; al_str_clone(&client->username, username); client->conn = NULL; - nn_rpc_init(&client->client, client->loop, connection_callback, connection_closed_callback, client); + nn_rpc_init(&client->client, client->loop, connection_callback, ready_callback, connection_closed_callback, client); for (u32 i = 0; i < ARRAY_SIZE(commands); i++) { commands[i].userdata = client; nn_rpc_add_command(&client->client, &commands[i]); @@ -107,8 +110,7 @@ bool camu_client_login(struct camu_client *client, str *username, (void)type; (void)addr; (void)port; - struct nn_rpc_connection *conn = client->client.conn; - nn_multiplex_direct_connect(conn->stream, CAMU_MULTIPLEX_RPC); + nn_multiplex_direct_connect(client->client.conn->stream, CAMU_MULTIPLEX_RPC); #else nn_rpc_connect(&client->client, CAMU_MULTIPLEX_RPC, type, addr, port); #endif |