--- libaitio/inc/aitio.h 2013/12/12 14:56:38 1.38.10.13 +++ libaitio/inc/aitio.h 2013/12/15 22:31:44 1.38.10.17 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitio.h,v 1.38.10.13 2013/12/12 14:56:38 misho Exp $ +* $Id: aitio.h,v 1.38.10.17 2013/12/15 22:31:44 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -82,6 +82,7 @@ typedef struct { unsigned int prog_inin; /* init progs */ unsigned int prog_maxn; /* max progs */ unsigned int prog_cnum; /* current progs */ + unsigned int prog_poll; /* purge unused instances after sec */ char prog_name[PATH_MAX]; pthread_mutex_t prog_mtx; @@ -94,7 +95,7 @@ typedef void *(*sock_cb_t)(sock_cli_t*); struct tagCliSock { void *cli_parent; int cli_fd; - int cli_pty; + intptr_t cli_pty; sockaddr_t cli_addr; char cli_name[64]; char cli_cmdline[PATH_MAX]; @@ -149,10 +150,17 @@ prog_t *io_progInit(const char *progName, * * @prg = program pool * @execNum = execute program(s) (0 max) - * return: 0 error, >0 executed programs and abs(<0) executed programs with logged error + * return: -1 error, >0 executed programs */ int io_progOpen(prog_t * __restrict prg, unsigned int execNum); /* + * io_progOpen2() - Start program from pool on first unused slot + * + * @prg = program pool + * return: -1 error, >-1 reside at slot + */ +int io_progOpen2(prog_t * __restrict prg); +/* * io_progGrow() - Execute to number of programs in pool * * @prg = program pool @@ -178,6 +186,18 @@ int io_progVacuum(prog_t * __restrict prg, unsigned in */ int io_progCloseAt(prog_t * __restrict prg, unsigned int idx); /* + * io_progCloseOf() - Close program at pool with certain handle + * + * @prg = program pool + * @h = handle of program + * return: 0 error, >0 closed programs + */ +#ifdef POPEN_STREAM +int io_progCloseOf(prog_t * __restrict prg, FILE *h); +#else +int io_progCloseOf(prog_t * __restrict prg, int h); +#endif +/* * io_progClose() - Close all programs in pool * * @prg = program pool @@ -197,7 +217,7 @@ void io_progDestroy(prog_t ** __restrict pprg); * io_progCheck() - Check exit status of program pool * * @prg = program pool - * @re = resurrect program + * @re = resurrect program to init number * return: -1 error or >-1 exited programs */ int io_progCheck(prog_t * __restrict prg, int re); @@ -256,6 +276,14 @@ void ioCloseSocket(sock_t ** __restrict s); * return: 0 ok or !=0 error */ int ioCloseClient(sock_cli_t * __restrict c); +/* + * ioSetupProg2Socket() - Setup program pool to socket server + * + * @s = Socket + * @p = Program pool + * return: -1 error or 0 ok + */ +int ioSetupProg2Socket(sock_t * __restrict s, prog_t * __restrict p); /* * ioUpSocket() - Setup socket for use *