/* url-socket.h - decls for the socket URLs file system
*
****************************************************************
* Copyright (C) 1999, 2000 Thomas Lord
*
* See the file "COPYING" for further information about
* the copyright and warranty status of this work.
*/
#ifndef INCLUDE__VU_NETWORK__URL_SOCKET_H
#define INCLUDE__VU_NETWORK__URL_SOCKET_H
#include "hackerlab/os/sys/socket.h"
#include "hackerlab/os/sys/param.h"
#include "hackerlab/os/sys/un.h"
#include "hackerlab/os/netinet/in.h"
#include "hackerlab/os/arpa/inet.h"
#include "hackerlab/os/netdb.h"
#include "hackerlab/vu/vu.h"
/* enum url_socket_type
*
* A single file name regexp can be used to name client sockets,
* server sockets, or both.
*/
enum url_socket_type
{
url_socket_client,
url_socket_server,
url_socket_server_or_client,
};
/* enum url_socket_domains
*
* A single file name regexp can be associated with
* sockets in the inet domain, the unix domain, or both.
*/
enum url_socket_domains
{
url_socket_unix,
url_socket_inet,
url_socket_inet_or_unix,
};
/* A client-supplied function that is called when a new server socket
* is created.
*/
typedef void (*url_socket_server_callback) (char * path,
int server_flags,
int flags,
int mode,
int server_fd,
struct sockaddr * server_addr,
int server_addr_len,
void * closure);
/* A client-supplied function that is called when a new client
* connection is received.
*/
typedef void (*url_socket_connect_callback) (char * path,
int flags,
int mode,
int server_fd,
int connection_fd,
struct sockaddr * client_addr,
int client_addr_len,
void * closure);
/* A client-supplied function that is called when a server socket is closed.
*/
typedef void (*url_socket_server_close_callback) (int server_fd,
struct sockaddr * server_addr,
int server_addr_len,
void * closure);
/* automatically generated __STDC__ prototypes */
extern void url_socket_push_client_handler (enum url_socket_domains domains,
int default_port,
int is_optional);
extern void url_socket_push_server_handler (enum url_socket_domains domains,
int server_flags,
int may_be_client,
int only_server_url,
int default_port,
int backlog,
url_socket_server_callback server_callback,
url_socket_connect_callback connection_callback,
url_socket_server_close_callback server_close_callback,
void * closure,
int is_optional);
extern int url_socket_create_server_socket (int * errn, char * path);
extern int url_inet_client (int * errn, t_uchar * host, int port);
extern int url_inet_client_addr (int * errn, t_ulong host, int port);
extern int url_inet_server_accept (int * errn, int server_fd);
extern int url_inet_server (alloc_limits limits,
t_ulong * host_addr_is,
t_uchar ** host_id_is,
int * port_is,
int * errn,
t_uchar * host,
int port);
#endif /* INCLUDE__VU_NETWORK__URL_SOCKET_H */
syntax highlighted by Code2HTML, v. 0.9.1