58 lines
1.6 KiB
C
58 lines
1.6 KiB
C
#ifndef SOCKET_POOL_INCLUDED
|
|
#define SOCKET_POOL_INCLUDED
|
|
|
|
#ifndef HTTP_AMALGAMATION
|
|
#include "basic.h"
|
|
#include "socket.h"
|
|
#include "socket_raw.h"
|
|
#endif
|
|
|
|
typedef struct SocketPool SocketPool;
|
|
|
|
typedef int SocketHandle;
|
|
|
|
typedef enum {
|
|
SOCKET_EVENT_DIED,
|
|
SOCKET_EVENT_READY,
|
|
SOCKET_EVENT_ERROR,
|
|
SOCKET_EVENT_SIGNAL,
|
|
} SocketEventType;
|
|
|
|
typedef struct {
|
|
SocketEventType type;
|
|
SocketHandle handle;
|
|
void *user_data;
|
|
} SocketEvent;
|
|
|
|
int socket_pool_global_init(void);
|
|
void socket_pool_global_free(void);
|
|
|
|
SocketPool *socket_pool_init(HTTP_String addr,
|
|
uint16_t port, uint16_t secure_port, int max_socks,
|
|
bool reuse_addr, int backlog, HTTP_String cert_file,
|
|
HTTP_String key_file);
|
|
|
|
void socket_pool_free(SocketPool *pool);
|
|
|
|
int socket_pool_add_cert(SocketPool *pool, char *domain, int domain_len, char *cert_file, int cert_file_len, char *key_file, int key_file_len);
|
|
|
|
SocketEvent socket_pool_wait(SocketPool *pool);
|
|
|
|
void socket_pool_set_user_data(SocketPool *pool, SocketHandle handle, void *user_data);
|
|
|
|
void socket_pool_close(SocketPool *pool, SocketHandle handle);
|
|
|
|
int socket_pool_connect(SocketPool *pool, bool secure,
|
|
HTTP_String addr, uint16_t port, void *user_data);
|
|
|
|
int socket_pool_connect_ipv4(SocketPool *pool, bool secure,
|
|
HTTP_IPv4 addr, uint16_t port, void *user_data);
|
|
|
|
int socket_pool_connect_ipv6(SocketPool *pool, bool secure,
|
|
HTTP_IPv6 addr, uint16_t port, void *user_data);
|
|
|
|
int socket_pool_read(SocketPool *pool, SocketHandle handle, char *dst, int len);
|
|
|
|
int socket_pool_write(SocketPool *pool, SocketHandle handle, char *src, int len);
|
|
|
|
#endif // SOCKET_POOL_INCLUDED
|