--- libaitio/inc/aitio.h 2013/11/21 14:43:53 1.36.2.2 +++ libaitio/inc/aitio.h 2013/11/22 10:19:50 1.36.2.7 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitio.h,v 1.36.2.2 2013/11/21 14:43:53 misho Exp $ +* $Id: aitio.h,v 1.36.2.7 2013/11/22 10:19:50 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -86,10 +86,11 @@ struct tagCliSock { int cli_pty; sockaddr_t cli_addr; char cli_name[64]; + char cli_cmdline[PATH_MAX]; sched_task_func_t cli_func; - ait_val_t cli_buf; + ait_val_t cli_buf[2]; TAILQ_ENTRY(tagCliSock) cli_node; }; @@ -140,7 +141,15 @@ sock_t *ioInitSocket(int role, int type, int proto, * return: none */ void ioCloseSocket(sock_t ** __restrict s); +#define ioKillSocket(x) (assert((x)), (x)->sock_kill = 1) /* + * ioCloseClient() - Close client socket + * + * @c = Client socket + * return: 0 ok or !=0 error + */ +int ioCloseClient(sock_cli_t * __restrict c); +/* * ioUpSocket() - Setup socket for use * * @s = Socket @@ -153,9 +162,10 @@ int ioUpSocket(sock_t * __restrict s, void *arg, int t * ioUpdTimerSocket() - Update timeout of socket * * @c = Client socket + * @arg = Optional data argument * return: none */ -void ioUpdTimerSocket(sock_cli_t * __restrict c); +void ioUpdTimerSocket(sock_cli_t * __restrict c, void *arg); /* * ioLoopSocket() - Start socket scheduler * @@ -165,14 +175,13 @@ void ioUpdTimerSocket(sock_cli_t * __restrict c); */ int ioLoopSocket(sock_t * __restrict s, sched_task_func_t rcb); /* - * ioAcceptSocket() - Accept clients + * ioBridgeProg2Socket() - Start socket scheduler and bridge program to socket * * @s = Socket - * @f = callback function for client handling - * @arg = optional argument for callback function - * return: -1 error or 0 ok + * @prgname = Program name + * return: 0 ok or !=0 error */ -int ioAcceptSocket(sock_t * __restrict s, sock_cb_t f, void *arg); +int ioBridgeProg2Socket(sock_t * __restrict s, const char *prgname); /* * ioPromptRead() - Read data from input h[0] with prompt to output h[1] @@ -183,7 +192,8 @@ int ioAcceptSocket(sock_t * __restrict s, sock_cb_t f, * @dataLen = Length of data * return: 0 EOF; -1 error:: can`t read; >0 count of readed chars */ -int ioPromptRead(int *h, const char *csPrompt, char * __restrict psData, int dataLen); +int ioPromptRead(int *h, const char *csPrompt, + char * __restrict psData, int dataLen); /* * ioPromptPassword() - Read password from input h[0] with prompt to output h[1] * @@ -194,7 +204,8 @@ int ioPromptRead(int *h, const char *csPrompt, char * * @confirm = Confirm password, 0 - get password, !=0 Ask for confirmation * return: 0 EOF; -1 error:: can`t read; >0 count of readed chars */ -int ioPromptPassword(int *h, const char *csPrompt, char * __restrict psPass, int passLen, int confirm); +int ioPromptPassword(int *h, const char *csPrompt, + char * __restrict psPass, int passLen, int confirm); /*