Compilation fixed for examples.
parent
90a51a7ed7
commit
12427217c6
|
@ -26,7 +26,7 @@ int main (int argc, char *argv[])
|
||||||
printf ("Ow. :(\n");
|
printf ("Ow. :(\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
usock_close (&fd);
|
usock_close (fd);
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,12 +19,13 @@ void chomp (char *str, ssize_t len)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ipc_connection_info *srv;
|
struct ipc_ctx *ctx;
|
||||||
|
|
||||||
void interactive (char *env[])
|
void interactive ()
|
||||||
{
|
{
|
||||||
long timer = 10;
|
int timer = 10000; // 10 seconds
|
||||||
|
|
||||||
|
SECURE_DECLARATION (struct ipc_event, event);
|
||||||
SECURE_BUFFER_DECLARATION (char, service_name, 100);
|
SECURE_BUFFER_DECLARATION (char, service_name, 100);
|
||||||
|
|
||||||
char *sn = getenv ("PATH_TRANSLATED");
|
char *sn = getenv ("PATH_TRANSLATED");
|
||||||
|
@ -37,21 +38,17 @@ void interactive (char *env[])
|
||||||
}
|
}
|
||||||
|
|
||||||
// init service
|
// init service
|
||||||
TEST_IPC_Q (ipc_connection (env, srv, service_name), EXIT_FAILURE);
|
TEST_IPC_Q (ipc_connection (ctx, service_name), EXIT_FAILURE);
|
||||||
|
|
||||||
SECURE_DECLARATION (struct ipc_event, event);
|
ipc_add_fd (ctx, 0); // add STDIN
|
||||||
SECURE_DECLARATION (struct ipc_ctx, services);
|
|
||||||
|
|
||||||
ipc_add (&services, srv);
|
|
||||||
ipc_add_fd (&services, 0); // add STDIN
|
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
TEST_IPC_WAIT_EVENT_Q (ipc_wait_event (&services, NULL, &event, &timer), EXIT_FAILURE);
|
TEST_IPC_WAIT_EVENT_Q (ipc_wait_event (ctx, &event, &timer), EXIT_FAILURE);
|
||||||
|
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
case IPC_EVENT_TYPE_TIMER:{
|
case IPC_EVENT_TYPE_TIMER:{
|
||||||
fprintf (stderr, "time up!\n");
|
fprintf (stderr, "time up!\n");
|
||||||
timer = 10;
|
timer = 10000;
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
case IPC_EVENT_TYPE_EXTRA_SOCKET:
|
case IPC_EVENT_TYPE_EXTRA_SOCKET:
|
||||||
|
@ -60,19 +57,19 @@ void interactive (char *env[])
|
||||||
SECURE_BUFFER_DECLARATION (char, buf, 4096);
|
SECURE_BUFFER_DECLARATION (char, buf, 4096);
|
||||||
ssize_t len;
|
ssize_t len;
|
||||||
|
|
||||||
len = read (event.origin->fd, buf, 4096);
|
len = read (event.origin, buf, 4096);
|
||||||
|
|
||||||
// in case we want to quit the program
|
// in case we want to quit the program
|
||||||
if (len == 0 || strncmp (buf, "quit", 4) == 0 || strncmp (buf, "exit", 4) == 0) {
|
if (len == 0 || strncmp (buf, "quit", 4) == 0 || strncmp (buf, "exit", 4) == 0) {
|
||||||
|
|
||||||
TEST_IPC_Q (ipc_close (srv), EXIT_FAILURE);
|
TEST_IPC_Q (ipc_close_all (ctx), EXIT_FAILURE);
|
||||||
|
|
||||||
ipc_connections_free (&services);
|
ipc_ctx_free (ctx);
|
||||||
|
|
||||||
exit (EXIT_SUCCESS);
|
exit (EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
// send the message read on STDIN
|
// send the message read on STDIN
|
||||||
ssize_t len_sent = write (srv->fd, buf, len);
|
ssize_t len_sent = write (ctx->pollfd[0].fd, buf, len);
|
||||||
if (len_sent != len) {
|
if (len_sent != len) {
|
||||||
fprintf (stderr, "cannot send the message %lu-byte message, sent %lu bytes",
|
fprintf (stderr, "cannot send the message %lu-byte message, sent %lu bytes",
|
||||||
len, len_sent);
|
len, len_sent);
|
||||||
|
@ -94,6 +91,10 @@ void interactive (char *env[])
|
||||||
fflush (stdout);
|
fflush (stdout);
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
|
case IPC_EVENT_TYPE_TX: {
|
||||||
|
printf ("Message sent\n");
|
||||||
|
}
|
||||||
|
break;
|
||||||
ERROR_CASE (IPC_EVENT_TYPE_DISCONNECTION, "main loop", "disconnection: should not happen");
|
ERROR_CASE (IPC_EVENT_TYPE_DISCONNECTION, "main loop", "disconnection: should not happen");
|
||||||
ERROR_CASE (IPC_EVENT_TYPE_NOT_SET , "main loop", "not set: should not happen");
|
ERROR_CASE (IPC_EVENT_TYPE_NOT_SET , "main loop", "not set: should not happen");
|
||||||
ERROR_CASE (IPC_EVENT_TYPE_CONNECTION , "main loop", "connection: should not happen");
|
ERROR_CASE (IPC_EVENT_TYPE_CONNECTION , "main loop", "connection: should not happen");
|
||||||
|
@ -104,19 +105,12 @@ void interactive (char *env[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int main (int argc, char *argv[], char *env[])
|
int main (void)
|
||||||
{
|
{
|
||||||
argc = argc; // warnings
|
ctx = malloc (sizeof (struct ipc_ctx));
|
||||||
argv = argv; // warnings
|
memset (ctx, 0, sizeof (struct ipc_ctx));
|
||||||
|
|
||||||
srv = malloc (sizeof (struct ipc_connection_info));
|
interactive ();
|
||||||
memset (srv, 0, sizeof (struct ipc_connection_info));
|
|
||||||
|
|
||||||
// index and version should be filled
|
|
||||||
srv->index = 0;
|
|
||||||
srv->version = 0;
|
|
||||||
|
|
||||||
interactive (env);
|
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue