Skip to content

Commit 519f3ce

Browse files
committed
lib/core: Refactor JNetwork's init functions (#124)
1 parent 0d09e08 commit 519f3ce

File tree

2 files changed

+61
-64
lines changed

2 files changed

+61
-64
lines changed

include/core/jnetwork.h

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ G_BEGIN_DECLS
5959
* void* data_a = malloc(data_size), data_b = malloc(data_size), rdata = malloc(rdata_size);
6060
* // fill data !
6161
*
62-
* j_network_connection_init_client(config, J_BACKEND_TYPE_OBJECT, &connection);
62+
* connection = j_network_connection_init_client(config, J_BACKEND_TYPE_OBJECT);
6363
*
6464
* // message exchange
6565
* j_network_connection_recv(connection, rdata, rdata_size);
@@ -168,11 +168,10 @@ G_BEGIN_DECLS
168168
* Therefore, events can be read via j_fabric_sread_event.
169169
*
170170
* \param[in] configuration A configuration.
171-
* \param[out] instance A pointer to the resulting fabric.
172171
*
173-
* \return TRUE on success, FALSE if an error occurred.
172+
* \return A new fabric on success, NULL if an error occurred.
174173
**/
175-
gboolean j_network_fabric_init_server(JConfiguration* configuration, JNetworkFabric** instance);
174+
JNetworkFabric* j_network_fabric_init_server(JConfiguration* configuration);
176175

177176
/**
178177
* Gets identifier of memory region.
@@ -205,11 +204,10 @@ gboolean j_network_connection_memory_get_id(JNetworkConnectionMemory* this, JNet
205204
* \param[in] configuration A configuration.
206205
* \param[in] backend A backend type.
207206
* \param[in] index An index.
208-
* \param[out] instance A network connection.
209207
*
210-
* \return TRUE on success, FALSE if an error occurred.
208+
* \return A network connection on success, NULL if an error occurred.
211209
**/
212-
gboolean j_network_connection_init_client(JConfiguration* configuration, JBackendType backend, guint index, JNetworkConnection** instance);
210+
JNetworkConnection* j_network_connection_init_client(JConfiguration* configuration, JBackendType backend, guint index);
213211

214212
/**
215213
* Establish connection to client based on established GSocketConnection.
@@ -220,11 +218,10 @@ gboolean j_network_connection_init_client(JConfiguration* configuration, JBacken
220218
*
221219
* \param[in] fabric Fabric via which the connection should be established.
222220
* \param[in] connection GSocketConnection for address exchange.
223-
* \param[out] connection A new connection.
224221
*
225-
* \return TRUE on success, FALSE if an error occurred.
222+
* \return A new connection on success, NULL if an error occurred.
226223
**/
227-
gboolean j_network_connection_init_server(JNetworkFabric* fabric, GSocketConnection* gconnection, JNetworkConnection** connection);
224+
JNetworkConnection* j_network_connection_init_server(JNetworkFabric* fabric, GSocketConnection* gconnection);
228225

229226
/**
230227
* Closes a connection and free all related resources. *

lib/core/jnetwork.c

Lines changed: 54 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -424,8 +424,8 @@ j_network_fabric_sread_event(JNetworkFabric* fabric, gint timeout, JNetworkFabri
424424
return ret;
425425
}
426426

427-
gboolean
428-
j_network_fabric_init_server(JConfiguration* configuration, JNetworkFabric** instance_ptr)
427+
JNetworkFabric*
428+
j_network_fabric_init_server(JConfiguration* configuration)
429429
{
430430
J_TRACE_FUNCTION(NULL);
431431

@@ -436,9 +436,7 @@ j_network_fabric_init_server(JConfiguration* configuration, JNetworkFabric** ins
436436
gint res = 0;
437437
gsize addrlen = 0;
438438

439-
*instance_ptr = g_new0(JNetworkFabric, 1);
440-
441-
fabric = *instance_ptr;
439+
fabric = g_new0(JNetworkFabric, 1);
442440
fabric->config = configuration;
443441
fabric->con_side = JF_SERVER;
444442

@@ -490,10 +488,11 @@ j_network_fabric_init_server(JConfiguration* configuration, JNetworkFabric** ins
490488
fabric->fabric_addr_network.addr_len = htonl(fabric->fabric_addr_network.addr_len);
491489
fabric->fabric_addr_network.addr_format = htonl(fabric->info->addr_format);
492490

493-
return TRUE;
491+
return fabric;
494492

495493
end:
496-
return FALSE;
494+
/// \todo clean up fabric
495+
return NULL;
497496
}
498497

499498
/**
@@ -509,8 +508,8 @@ j_network_fabric_init_server(JConfiguration* configuration, JNetworkFabric** ins
509508
*
510509
* \return TRUE on success, FALSE if an error occurred.
511510
**/
512-
static gboolean
513-
j_network_fabric_init_client(JConfiguration* configuration, JNetworkFabricAddr* addr, JNetworkFabric** instance_ptr)
511+
static JNetworkFabric*
512+
j_network_fabric_init_client(JConfiguration* configuration, JNetworkFabricAddr* addr)
514513
{
515514
J_TRACE_FUNCTION(NULL);
516515

@@ -519,11 +518,8 @@ j_network_fabric_init_client(JConfiguration* configuration, JNetworkFabricAddr*
519518
struct fi_info* hints;
520519

521520
gint res;
522-
gboolean ret = FALSE;
523521

524-
*instance_ptr = g_new0(JNetworkFabric, 1);
525-
526-
fabric = *instance_ptr;
522+
fabric = g_new0(JNetworkFabric, 1);
527523
fabric->config = configuration;
528524
fabric->con_side = JF_CLIENT;
529525

@@ -549,10 +545,11 @@ j_network_fabric_init_client(JConfiguration* configuration, JNetworkFabricAddr*
549545
res = fi_fabric(fabric->info->fabric_attr, &fabric->fabric, NULL);
550546
CHECK("failed to initelize client fabric!");
551547

552-
ret = TRUE;
548+
return fabric;
553549

554550
end:
555-
return ret;
551+
/// \todo clean up fabric
552+
return NULL;
556553
}
557554

558555
/**
@@ -726,62 +723,66 @@ j_network_connection_init(JNetworkConnection* connection)
726723
return ret;
727724
}
728725

729-
gboolean
730-
j_network_connection_init_client(JConfiguration* configuration, JBackendType backend, guint index, JNetworkConnection** instance_ptr)
726+
JNetworkConnection*
727+
j_network_connection_init_client(JConfiguration* configuration, JBackendType backend, guint index)
731728
{
732729
J_TRACE_FUNCTION(NULL);
733730

734-
gboolean ret = FALSE;
735-
736731
JNetworkFabricAddr jf_addr;
737732
JNetworkConnection* connection;
738733
JNetworkConnectionEvents event;
739734

740735
GError* error = NULL;
741-
GInputStream* g_input;
742-
GSocketConnection* g_connection;
743-
g_autoptr(GSocketClient) g_client = NULL;
736+
GInputStream* input_stream;
737+
GSocketConnection* socket_connection;
738+
g_autoptr(GSocketClient) socket_client = NULL;
744739

745740
gint res;
746741
gchar const* server;
747742

748-
*instance_ptr = g_new0(JNetworkConnection, 1);
749-
connection = *instance_ptr;
743+
connection = g_new0(JNetworkConnection, 1);
750744

751-
g_client = g_socket_client_new();
745+
socket_client = g_socket_client_new();
752746
server = j_configuration_get_server(configuration, backend, index);
753-
g_connection = g_socket_client_connect_to_host(g_client, server, j_configuration_get_port(configuration), NULL, &error);
747+
socket_connection = g_socket_client_connect_to_host(socket_client, server, j_configuration_get_port(configuration), NULL, &error);
754748
G_CHECK("Failed to build gsocket connection to host");
755749

756-
if (g_connection == NULL)
750+
if (socket_connection == NULL)
757751
{
758752
g_warning("Can not connect to %s.", server);
759753
goto end;
760754
}
761755

762-
j_helper_set_nodelay(g_connection, TRUE);
756+
j_helper_set_nodelay(socket_connection, TRUE);
763757

764-
g_input = g_io_stream_get_input_stream(G_IO_STREAM(g_connection));
758+
input_stream = g_io_stream_get_input_stream(G_IO_STREAM(socket_connection));
765759

766-
g_input_stream_read(g_input, &jf_addr.addr_format, sizeof(jf_addr.addr_format), NULL, &error);
767-
G_CHECK("Failed to read addr format from g_connection!");
760+
g_input_stream_read(input_stream, &jf_addr.addr_format, sizeof(jf_addr.addr_format), NULL, &error);
761+
G_CHECK("Failed to read addr format from socket_connection!");
768762
jf_addr.addr_format = ntohl(jf_addr.addr_format);
769763

770-
g_input_stream_read(g_input, &jf_addr.addr_len, sizeof(jf_addr.addr_len), NULL, &error);
771-
G_CHECK("Failed to read addr len from g_connection!");
764+
g_input_stream_read(input_stream, &jf_addr.addr_len, sizeof(jf_addr.addr_len), NULL, &error);
765+
G_CHECK("Failed to read addr len from socket_connection!");
772766
jf_addr.addr_len = ntohl(jf_addr.addr_len);
773767

774768
jf_addr.addr = g_malloc(jf_addr.addr_len);
775-
g_input_stream_read(g_input, jf_addr.addr, jf_addr.addr_len, NULL, &error);
776-
G_CHECK("Failed to read addr from g_connection!");
769+
g_input_stream_read(input_stream, jf_addr.addr, jf_addr.addr_len, NULL, &error);
770+
G_CHECK("Failed to read addr from socket_connection!");
777771

778-
g_input_stream_close(g_input, NULL, &error);
772+
g_input_stream_close(input_stream, NULL, &error);
779773
G_CHECK("Failed to close input stream!");
780774

781-
g_io_stream_close(G_IO_STREAM(g_connection), NULL, &error);
775+
g_io_stream_close(G_IO_STREAM(socket_connection), NULL, &error);
782776
G_CHECK("Failed to close gsocket!");
783777

784-
EXE(j_network_fabric_init_client(configuration, &jf_addr, &connection->fabric), "Failed to initialize fabric for client!");
778+
connection->fabric = j_network_fabric_init_client(configuration, &jf_addr);
779+
780+
if (connection->fabric == NULL)
781+
{
782+
g_warning("Failed to initialize fabric for client!");
783+
goto end;
784+
}
785+
785786
connection->info = connection->fabric->info;
786787

787788
EXE(j_network_connection_init(connection), "Failed to initelze connection!");
@@ -800,45 +801,43 @@ j_network_connection_init_client(JConfiguration* configuration, JBackendType bac
800801
goto end;
801802
}
802803

803-
ret = TRUE;
804+
return connection;
804805

805806
end:
806-
return ret;
807+
/// \todo clean up connection
808+
return NULL;
807809
}
808810

809-
gboolean
810-
j_network_connection_init_server(JNetworkFabric* fabric, GSocketConnection* gconnection, JNetworkConnection** instance_ptr)
811+
JNetworkConnection*
812+
j_network_connection_init_server(JNetworkFabric* fabric, GSocketConnection* gconnection)
811813
{
812814
J_TRACE_FUNCTION(NULL);
813815

814-
gboolean ret = FALSE;
815-
816816
JNetworkConnection* connection;
817817
JNetworkConnectionEvents con_event;
818818
JNetworkFabricAddr* addr = &fabric->fabric_addr_network;
819819
JNetworkFabricEvents event;
820820

821821
GError* error = NULL;
822-
GOutputStream* g_out;
822+
GOutputStream* output_stream;
823823

824824
gint res;
825825
struct fi_eq_cm_entry request;
826826

827-
*instance_ptr = g_new0(JNetworkConnection, 1);
828-
connection = *instance_ptr;
827+
connection = g_new0(JNetworkConnection, 1);
829828

830829
// send addr
831-
g_out = g_io_stream_get_output_stream(G_IO_STREAM(gconnection));
832-
g_output_stream_write(g_out, &addr->addr_format, sizeof(addr->addr_format), NULL, &error);
830+
output_stream = g_io_stream_get_output_stream(G_IO_STREAM(gconnection));
831+
g_output_stream_write(output_stream, &addr->addr_format, sizeof(addr->addr_format), NULL, &error);
833832
G_CHECK("Failed to write addr_format to stream!");
834833

835-
g_output_stream_write(g_out, &addr->addr_len, sizeof(addr->addr_len), NULL, &error);
834+
g_output_stream_write(output_stream, &addr->addr_len, sizeof(addr->addr_len), NULL, &error);
836835
G_CHECK("Failed to write addr_len to stream!");
837836

838-
g_output_stream_write(g_out, addr->addr, ntohl(addr->addr_len), NULL, &error);
837+
g_output_stream_write(output_stream, addr->addr, ntohl(addr->addr_len), NULL, &error);
839838
G_CHECK("Failed to write addr to stream!");
840839

841-
g_output_stream_close(g_out, NULL, &error);
840+
g_output_stream_close(output_stream, NULL, &error);
842841
G_CHECK("Failed to close output stream!");
843842

844843
do
@@ -868,10 +867,11 @@ j_network_connection_init_server(JNetworkFabric* fabric, GSocketConnection* gcon
868867
goto end;
869868
}
870869

871-
ret = TRUE;
870+
return connection;
872871

873872
end:
874-
return ret;
873+
/// \todo clean up connection
874+
return NULL;
875875
}
876876

877877
gboolean

0 commit comments

Comments
 (0)