X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=blobdiff_plain;f=src%2FIOHandler.h;h=eb32cdc71ab345ca8961e4e411b72acfa8064cef;hp=208b854b79e52567b22c786a6806eaca922098b4;hb=f83bd22fe2dcb3ca0ddb9321944ee0b9c9b61ea6;hpb=59659c9123e0b56c34f5fa9281566f574365deb5 diff --git a/src/IOHandler.h b/src/IOHandler.h index 208b854..eb32cdc 100644 --- a/src/IOHandler.h +++ b/src/IOHandler.h @@ -67,6 +67,7 @@ enum IOEventType { IOEVENT_NOTCONNECTED, /* client socket could not connect (errid valid) */ IOEVENT_CLOSED, /* client socket lost connection (errid valid) */ IOEVENT_ACCEPT, /* server socket accepted new connection (accept_fd valid) */ + IOEVENT_SSLACCEPT, /* SSL server socket accepted new connection (accept_iofd valid) */ IOEVENT_TIMEOUT, /* timer timed out */ IOEVENT_SSLFAILED /* failed to initialize SSL session */ }; @@ -81,12 +82,14 @@ struct IODescriptor { enum IOType type; enum IOStatus state; struct timeval timeout; + int constant_timeout; iohandler_callback *callback; struct IOBuffer readbuf; struct IOBuffer writebuf; void *data; int read_lines : 1; int ssl : 1; + int ssl_server_hs : 1; int ssl_active : 1; int ssl_hs_read : 1; int ssl_hs_write : 1; @@ -102,13 +105,29 @@ struct IOEvent { char *recv_str; int accept_fd; int errid; + struct IODescriptor *accept_iofd; } data; }; +#define IOHANDLER_LISTEN_IPV4 0x01 +#define IOHANDLER_LISTEN_IPV6 0x02 /* overrides IOHANDLER_LISTEN_IPV4 */ + +#define IOHANDLER_CONNECT_IPV4 0x01 +#define IOHANDLER_CONNECT_IPV6 0x02 /* overrides IOHANDLER_CONNECT_IPV4 */ + +#define IOHANDLER_SETTING_HIGH_PRECISION_TIMER 0x01 + +void iohandler_set(int setting, int value); + struct IODescriptor *iohandler_add(int sockfd, enum IOType type, struct timeval *timeout, iohandler_callback *callback); struct IODescriptor *iohandler_timer(struct timeval timeout, iohandler_callback *callback); +struct IODescriptor *iohandler_constant_timer(int msec, iohandler_callback *callback); struct IODescriptor *iohandler_connect(const char *hostname, unsigned int port, int ssl, const char *bind, iohandler_callback *callback); +struct IODescriptor *iohandler_connect_flags(const char *hostname, unsigned int port, int ssl, const char *bindhost, iohandler_callback *callback, int flags); struct IODescriptor *iohandler_listen(const char *hostname, unsigned int port, iohandler_callback *callback); +struct IODescriptor *iohandler_listen_flags(const char *hostname, unsigned int port, iohandler_callback *callback, int flags); +struct IODescriptor *iohandler_listen_ssl(const char *hostname, unsigned int port, const char *certfile, const char *keyfile, iohandler_callback *callback); +struct IODescriptor *iohandler_listen_ssl_flags(const char *hostname, unsigned int port, const char *certfile, const char *keyfile, iohandler_callback *callback, int flags); void iohandler_write(struct IODescriptor *iofd, const char *line); void iohandler_send(struct IODescriptor *iofd, const char *data, size_t datalen); void iohandler_printf(struct IODescriptor *iofd, const char *text, ...); @@ -117,5 +136,6 @@ void iohandler_update(struct IODescriptor *iofd); void iohandler_set_timeout(struct IODescriptor *iofd, struct timeval *timeout); void iohandler_poll(); +void iohandler_poll_timeout(struct timeval timeout); #endif