Fixing some test functions: no leaks when ending these programs.
parent
513348652e
commit
e6edfd0e43
|
@ -32,6 +32,7 @@ int main(int argc, char * argv[])
|
||||||
printf ("error: %s\n", ipc_errors_get(ret.error_code));
|
printf ("error: %s\n", ipc_errors_get(ret.error_code));
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
ipc_ctx_free (&ctx);
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ int main(int argc, char * argv[])
|
||||||
argc = (int) argc;
|
argc = (int) argc;
|
||||||
argv = (char **) argv;
|
argv = (char **) argv;
|
||||||
|
|
||||||
|
|
||||||
SECURE_DECLARATION(struct ipc_ctx, ctx);
|
SECURE_DECLARATION(struct ipc_ctx, ctx);
|
||||||
int timer = 10000; // 10 seconds timer
|
int timer = 10000; // 10 seconds timer
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ void read_message (struct ipc_ctx *ctx)
|
||||||
SECURE_DECLARATION (struct ipc_message, m);
|
SECURE_DECLARATION (struct ipc_message, m);
|
||||||
|
|
||||||
TEST_IPC_Q(ipc_read (ctx, 0 /* only one server here */, &m), EXIT_FAILURE);
|
TEST_IPC_Q(ipc_read (ctx, 0 /* only one server here */, &m), EXIT_FAILURE);
|
||||||
printf ("received message: %*.s\n", m.length, m.payload);
|
printf ("received message: %.*s\n", m.length, m.payload);
|
||||||
free (m.payload);
|
free (m.payload);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -76,11 +76,13 @@ int main(void)
|
||||||
read_message (&ctx1);
|
read_message (&ctx1);
|
||||||
|
|
||||||
TEST_IPC_Q (ipc_close_all (&ctx1), EXIT_FAILURE);
|
TEST_IPC_Q (ipc_close_all (&ctx1), EXIT_FAILURE);
|
||||||
|
ipc_ctx_free (&ctx1);
|
||||||
|
|
||||||
send_message (&ctx2);
|
send_message (&ctx2);
|
||||||
read_message (&ctx2);
|
read_message (&ctx2);
|
||||||
|
|
||||||
TEST_IPC_Q (ipc_close_all (&ctx2), EXIT_FAILURE);
|
TEST_IPC_Q (ipc_close_all (&ctx2), EXIT_FAILURE);
|
||||||
|
ipc_ctx_free (&ctx2);
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,20 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#define SERVICE_NAME "pong"
|
#define SERVICE_NAME "pong"
|
||||||
|
struct ipc_ctx *pctx = NULL;
|
||||||
|
|
||||||
|
void exit_program(int signal)
|
||||||
|
{
|
||||||
|
printf("Quitting, signal: %d\n", signal);
|
||||||
|
|
||||||
|
// the application will shut down, and close the service
|
||||||
|
TEST_IPC_Q(ipc_close_all (pctx), EXIT_FAILURE);
|
||||||
|
|
||||||
|
// free remaining ctx
|
||||||
|
ipc_ctx_free (pctx);
|
||||||
|
|
||||||
|
exit(EXIT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
int main_loop(int argc, char * argv[])
|
int main_loop(int argc, char * argv[])
|
||||||
{
|
{
|
||||||
|
@ -13,6 +27,7 @@ int main_loop(int argc, char * argv[])
|
||||||
argv = argv;
|
argv = argv;
|
||||||
|
|
||||||
SECURE_DECLARATION (struct ipc_ctx, ctx);
|
SECURE_DECLARATION (struct ipc_ctx, ctx);
|
||||||
|
pctx = &ctx;
|
||||||
int timer = 10000; // in ms
|
int timer = 10000; // in ms
|
||||||
|
|
||||||
printf ("func 03 - server init...\n");
|
printf ("func 03 - server init...\n");
|
||||||
|
@ -41,8 +56,12 @@ int main_loop(int argc, char * argv[])
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
case IPC_EVENT_TYPE_MESSAGE : {
|
case IPC_EVENT_TYPE_MESSAGE : {
|
||||||
printf ("received message: %s\n", ((struct ipc_message*) event.m)->payload);
|
struct ipc_message *m = (struct ipc_message*) event.m;
|
||||||
ipc_write (&ctx, (struct ipc_message*) event.m);
|
printf ("received message (%d bytes): %.*s\n"
|
||||||
|
, m->length
|
||||||
|
, m->length
|
||||||
|
, m->payload);
|
||||||
|
ipc_write (&ctx, m);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IPC_EVENT_TYPE_TX : {
|
case IPC_EVENT_TYPE_TX : {
|
||||||
|
@ -68,21 +87,17 @@ int main_loop(int argc, char * argv[])
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void exit_program(int signal)
|
|
||||||
{
|
|
||||||
printf("Quitting, signal: %d\n", signal);
|
|
||||||
exit(EXIT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char * argv[])
|
int main(int argc, char * argv[])
|
||||||
{
|
{
|
||||||
|
// In case we want to quit the program, do it cleanly.
|
||||||
signal (SIGHUP, exit_program);
|
signal (SIGHUP, exit_program);
|
||||||
signal (SIGALRM, exit_program);
|
signal (SIGALRM, exit_program);
|
||||||
signal (SIGUSR1, exit_program);
|
signal (SIGUSR1, exit_program);
|
||||||
signal (SIGUSR2, exit_program);
|
signal (SIGUSR2, exit_program);
|
||||||
signal (SIGTERM, exit_program);
|
signal (SIGTERM, exit_program);
|
||||||
signal (SIGINT, exit_program);
|
signal (SIGINT, exit_program);
|
||||||
|
|
||||||
main_loop (argc, argv);
|
main_loop (argc, argv);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue