diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2015-10-29 13:09:26 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2015-10-30 10:12:05 +0200 |
commit | 9861a788306d5f742e633ff6a8a26a913f5e3fd1 (patch) | |
tree | 803ba61295468becef3df24f10fade8cacf44efc /src/pies.h | |
parent | 4683f7830491d1d50c5097466d9a066cb41286c7 (diff) | |
download | pies-9861a788306d5f742e633ff6a8a26a913f5e3fd1.tar.gz pies-9861a788306d5f742e633ff6a8a26a913f5e3fd1.tar.bz2 |
Introduce control connection.
* src/ctl.c: New file.
* src/Makefile.am (pies_SOURCES): Add ctl.c
* src/pies.c: New configuration statement "control"
* src/pies.h (instance, ctl_url): New externs.
(register_socket): Change signature.
(update_socket,ctl_open): New protos.
* src/socket.c (listenset): Remove.
(fdset): New static.
(sockinst)<handler>: Array of three pointers: handlers for
read, write, and exception, correspondingly.
(find_socket_handler): Remove.
(register_socket): Take three function pointers as arguments.
Update corresponding elements of fdset.
(update_socket): New function.
(pies_pause): Handle all three I/O operations.
(deregister_socket)
(register_program_socket)
(disable_socket,enable_socket): Reflect the changes.
* src/sysvinit.c (create_fifo): Update call to register_socket.
Diffstat (limited to 'src/pies.h')
-rw-r--r-- | src/pies.h | 31 |
1 files changed, 30 insertions, 1 deletions
@@ -278,2 +278,3 @@ enum pies_action { +extern char *instance; extern char *log_tag; @@ -395,5 +396,21 @@ const char * pies_url_get_arg (struct pies_url *url, const char *argname); + void pies_pause (void); -void *register_socket (int fd, int (*handler) (int, void *), void *data); + +enum + { + PIES_EVT_RD, + PIES_EVT_WR, + PIES_EVT_EX + }; + +typedef int (*socket_handler_t) (int, void *); + +void *register_socket (int fd, + socket_handler_t rd, + socket_handler_t wr, + socket_handler_t ex, + void *data); void deregister_socket (int fd); +void update_socket (int fd, int evt, socket_handler_t f); @@ -539 +556,13 @@ void sysvinit_acct (int what, const char *user, const char *id, pid_t pid, + +/* ctl.c */ +struct control +{ + struct pies_url *url; + pies_acl_t acl; + unsigned int idle_timeout; +}; + +extern struct control control; + +void ctl_open(void); |