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
@@ -276,6 +276,7 @@ enum pies_action { | |||
276 | ACTION_KBREQUEST | 276 | ACTION_KBREQUEST |
277 | }; | 277 | }; |
278 | 278 | ||
279 | extern char *instance; | ||
279 | extern char *log_tag; | 280 | extern char *log_tag; |
280 | extern int log_facility; | 281 | extern int log_facility; |
281 | extern unsigned long shutdown_timeout; | 282 | extern unsigned long shutdown_timeout; |
@@ -393,9 +394,25 @@ int pies_url_create (struct pies_url **purl, const char *str); | |||
393 | void pies_url_destroy (struct pies_url **purl); | 394 | void pies_url_destroy (struct pies_url **purl); |
394 | const char * pies_url_get_arg (struct pies_url *url, const char *argname); | 395 | const char * pies_url_get_arg (struct pies_url *url, const char *argname); |
395 | 396 | ||
397 | |||
396 | void pies_pause (void); | 398 | void pies_pause (void); |
397 | void *register_socket (int fd, int (*handler) (int, void *), void *data); | 399 | |
400 | enum | ||
401 | { | ||
402 | PIES_EVT_RD, | ||
403 | PIES_EVT_WR, | ||
404 | PIES_EVT_EX | ||
405 | }; | ||
406 | |||
407 | typedef int (*socket_handler_t) (int, void *); | ||
408 | |||
409 | void *register_socket (int fd, | ||
410 | socket_handler_t rd, | ||
411 | socket_handler_t wr, | ||
412 | socket_handler_t ex, | ||
413 | void *data); | ||
398 | void deregister_socket (int fd); | 414 | void deregister_socket (int fd); |
415 | void update_socket (int fd, int evt, socket_handler_t f); | ||
399 | 416 | ||
400 | int register_program_socket (int socktype, int fd, void *data); | 417 | int register_program_socket (int socktype, int fd, void *data); |
401 | int pass_fd (const char *socket, int fd, unsigned time_out); | 418 | int pass_fd (const char *socket, int fd, unsigned time_out); |
@@ -537,3 +554,15 @@ struct sysvinit_request { | |||
537 | void sysvinit_acct (int what, const char *user, const char *id, pid_t pid, | 554 | void sysvinit_acct (int what, const char *user, const char *id, pid_t pid, |
538 | const char *line); | 555 | const char *line); |
539 | 556 | ||
557 | |||
558 | /* ctl.c */ | ||
559 | struct control | ||
560 | { | ||
561 | struct pies_url *url; | ||
562 | pies_acl_t acl; | ||
563 | unsigned int idle_timeout; | ||
564 | }; | ||
565 | |||
566 | extern struct control control; | ||
567 | |||
568 | void ctl_open(void); | ||