aboutsummaryrefslogtreecommitdiffstats
path: root/reference
diff options
context:
space:
mode:
authorAndy Williams <andy@andywilliams.me>2017-12-19 17:51:20 +0000
committerAndy Williams <andy@andywilliams.me>2017-12-19 17:51:20 +0000
commitd226ee2c9856d86d81d44e4657c61657a728e181 (patch)
tree3640d9a18ffb82607a2a4bed08735d41d53f7a04 /reference
parentnet: Add a buffered net io example that is far simpler than without (diff)
downloadexamples-d226ee2c9856d86d81d44e4657c61657a728e181.tar.gz
net: simplify io example - no need for full lifecycle
Diffstat (limited to 'reference')
-rw-r--r--reference/c/net/src/net_io.c90
1 files changed, 42 insertions, 48 deletions
diff --git a/reference/c/net/src/net_io.c b/reference/c/net/src/net_io.c
index faf283a3..1421d09b 100644
--- a/reference/c/net/src/net_io.c
+++ b/reference/c/net/src/net_io.c
@@ -18,6 +18,39 @@ static Eina_List *_commands = NULL;
static Eina_Slice _delimiter;
static Eo *_dialer = NULL, *_sender = NULL, *_receiver = NULL;
+// call this method to cleanly shut down our example
+static void
+_quit(int retval)
+{
+ if (_waiting)
+ {
+ fprintf(stderr, "ERROR: %d operations were waiting!\n",
+ eina_list_count(_waiting));
+ eina_list_free(_waiting);
+ _waiting = NULL;
+ }
+
+ if (_receiver)
+ {
+ efl_io_closer_close(_receiver);
+ efl_del(efl_io_copier_destination_get(_receiver));
+ efl_del(_receiver);
+ }
+
+ if (_sender)
+ {
+ efl_io_closer_close(_sender);
+ efl_del(efl_io_copier_source_get(_sender));
+ efl_del(_sender);
+ }
+
+ if (_dialer)
+ efl_del(_dialer);
+
+ efl_exit(retval);
+}
+
+// iterate through the commands to send through the dialler
static void
_command_next(void)
{
@@ -85,7 +118,7 @@ _copier_done(void *data EINA_UNUSED, const Efl_Event *event)
_waiting = eina_list_remove(_waiting, event->object);
if (!_waiting)
- efl_exit(EXIT_SUCCESS);
+ _quit(EXIT_SUCCESS);
}
static void
@@ -96,52 +129,13 @@ _copier_error(void *data EINA_UNUSED, const Efl_Event *event)
fprintf(stderr, "INFO: %s error: #%d '%s'\n",
efl_name_get(event->object), *perr, eina_error_msg_get(*perr));
- efl_exit(EXIT_FAILURE);
+ _quit(EXIT_FAILURE);
}
EFL_CALLBACKS_ARRAY_DEFINE(copier_cbs,
{ EFL_IO_COPIER_EVENT_DONE, _copier_done },
{ EFL_IO_COPIER_EVENT_ERROR, _copier_error });
-EAPI void
-efl_pause(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
-{
-}
-
-EAPI void
-efl_resume(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
-{
-}
-
-EAPI void
-efl_terminate(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
-{
- if (_waiting)
- {
- fprintf(stderr, "ERROR: %d operations were waiting!\n",
- eina_list_count(_waiting));
- eina_list_free(_waiting);
- _waiting = NULL;
- }
-
- if (_receiver)
- {
- efl_io_closer_close(_receiver);
- efl_del(efl_io_copier_destination_get(_receiver));
- efl_del(_receiver);
- }
-
- if (_sender)
- {
- efl_io_closer_close(_sender);
- efl_del(efl_io_copier_source_get(_sender));
- efl_del(_sender);
- }
-
- if (_dialer)
- efl_del(_dialer);
-}
-
EAPI_MAIN void
efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
{
@@ -170,7 +164,7 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
if (!send_queue)
{
fprintf(stderr, "ERROR: could not create Efl_Io_Queue (send)\n");
- efl_exit(EXIT_FAILURE);
+ _quit(EXIT_FAILURE);
}
/*
@@ -192,7 +186,7 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
if (!receive_queue)
{
fprintf(stderr, "ERROR: could not create Efl_Io_Queue (receive)\n");
- efl_exit(EXIT_FAILURE);
+ _quit(EXIT_FAILURE);
}
/*
@@ -209,7 +203,7 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
if (!_dialer)
{
fprintf(stderr, "ERROR: could not create Efl_Net_Dialer_Tcp\n");
- efl_exit(EXIT_FAILURE);
+ _quit(EXIT_FAILURE);
}
/* sender: send_queue->network */
@@ -222,7 +216,7 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
if (!_sender)
{
fprintf(stderr, "ERROR: could not create Efl_Io_Copier (sender)\n");
- efl_exit(EXIT_FAILURE);
+ _quit(EXIT_FAILURE);
}
/* receiver: network->receive_queue */
@@ -235,7 +229,7 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
if (!_receiver)
{
fprintf(stderr, "ERROR: could not create Efl_Io_Copier (receiver)\n");
- efl_exit(EXIT_FAILURE);
+ _quit(EXIT_FAILURE);
}
err = efl_net_dialer_dial(_dialer, address);
@@ -243,11 +237,11 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
{
fprintf(stderr, "ERROR: could not dial %s: %s\n",
address, eina_error_msg_get(err));
- efl_exit(EXIT_FAILURE);
+ _quit(EXIT_FAILURE);
}
_waiting = eina_list_append(_waiting, _sender);
_waiting = eina_list_append(_waiting, _receiver);
}
-EFL_MAIN_EX()
+EFL_MAIN()