aboutsummaryrefslogtreecommitdiff
path: root/src/pies.h
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2015-10-29 13:09:26 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2015-10-30 10:12:05 +0200
commit9861a788306d5f742e633ff6a8a26a913f5e3fd1 (patch)
tree803ba61295468becef3df24f10fade8cacf44efc /src/pies.h
parent4683f7830491d1d50c5097466d9a066cb41286c7 (diff)
downloadpies-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.h31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/pies.h b/src/pies.h
index b627b47..a4e1a1b 100644
--- a/src/pies.h
+++ b/src/pies.h
@@ -276,6 +276,7 @@ enum pies_action {
276 ACTION_KBREQUEST 276 ACTION_KBREQUEST
277}; 277};
278 278
279extern char *instance;
279extern char *log_tag; 280extern char *log_tag;
280extern int log_facility; 281extern int log_facility;
281extern unsigned long shutdown_timeout; 282extern unsigned long shutdown_timeout;
@@ -393,9 +394,25 @@ int pies_url_create (struct pies_url **purl, const char *str);
393void pies_url_destroy (struct pies_url **purl); 394void pies_url_destroy (struct pies_url **purl);
394const char * pies_url_get_arg (struct pies_url *url, const char *argname); 395const char * pies_url_get_arg (struct pies_url *url, const char *argname);
395 396
397
396void pies_pause (void); 398void pies_pause (void);
397void *register_socket (int fd, int (*handler) (int, void *), void *data); 399
400enum
401 {
402 PIES_EVT_RD,
403 PIES_EVT_WR,
404 PIES_EVT_EX
405 };
406
407typedef int (*socket_handler_t) (int, void *);
408
409void *register_socket (int fd,
410 socket_handler_t rd,
411 socket_handler_t wr,
412 socket_handler_t ex,
413 void *data);
398void deregister_socket (int fd); 414void deregister_socket (int fd);
415void update_socket (int fd, int evt, socket_handler_t f);
399 416
400int register_program_socket (int socktype, int fd, void *data); 417int register_program_socket (int socktype, int fd, void *data);
401int pass_fd (const char *socket, int fd, unsigned time_out); 418int pass_fd (const char *socket, int fd, unsigned time_out);
@@ -537,3 +554,15 @@ struct sysvinit_request {
537void sysvinit_acct (int what, const char *user, const char *id, pid_t pid, 554void 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 */
559struct control
560{
561 struct pies_url *url;
562 pies_acl_t acl;
563 unsigned int idle_timeout;
564};
565
566extern struct control control;
567
568void ctl_open(void);

Return to:

Send suggestions and report system problems to the System administrator.