--- libaitio/src/sock.c 2013/11/21 18:26:40 1.4.4.5 +++ libaitio/src/sock.c 2013/11/21 18:59:50 1.4.4.6 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: sock.c,v 1.4.4.5 2013/11/21 18:26:40 misho Exp $ +* $Id: sock.c,v 1.4.4.6 2013/11/21 18:59:50 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -323,6 +323,25 @@ ioUpdTimerSocket(sock_cli_t * __restrict c) } /* + * ioCloseClient() - Close client socket + * + * @c = Client socket + * return: 0 ok or !=0 error + */ +int +ioCloseClient(sock_cli_t * __restrict c) +{ + sock_t *s; + + if (!c) + return -1; + else + s = c->cli_parent; + + return !schedEvent(s->sock_root, io_closeClient, c, 0, NULL, c->cli_fd); +} + +/* * ioLoopSocket() - Start socket scheduler * * @s = Socket @@ -332,25 +351,26 @@ ioUpdTimerSocket(sock_cli_t * __restrict c) int ioLoopSocket(sock_t * __restrict s, sched_task_func_t rcb) { + if (!s || !rcb || s->sock_kill) + return -1; + schedRead(s->sock_root, io_acceptClient, s, s->sock_fd, rcb, 0); return schedRun(s->sock_root, &s->sock_kill); } /* - * ioCloseClient() - Close client socket + * ioBridgeProg2Socket() - Start socket scheduler and bridge program to socket * - * @c = Client socket + * @s = Socket + * @prgname = Program name * return: 0 ok or !=0 error */ int -ioCloseClient(sock_cli_t * __restrict c) +ioBridgeProg2Socket(sock_t * __restrict s, const char *prgname) { - sock_t *s; - - if (!c) + if (!s || !prgname || s->sock_kill) return -1; - else - s = c->cli_parent; - return !schedEvent(s->sock_root, io_closeClient, c, 0, NULL, c->cli_fd); + schedRead(s->sock_root, io_bridgeProg, s, s->sock_fd, prgname, 0); + return schedRun(s->sock_root, &s->sock_kill); }