/* netio/fget_netio.h. Generated from netio.h.in by configure. */
/*
** Copyright 1998-2004 University of Illinois Board of Trustees
** Copyright 1998-2004 Mark D. Roth
** All rights reserved.
**
** fget_netio.h - header file for network I/O module
**
** Mark D. Roth <roth@feep.net>
*/
#ifndef fget_NETIO_H
#define fget_NETIO_H
#include <stdarg.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/param.h>
#include <netdb.h>
/* typedef for NETIO handle */
typedef struct netio NETIO;
/* typedef for send/recv hook */
typedef void (*netio_hookfunc_t)(char *, void *, void *);
extern const int netio_is_thread_safe;
/***** handle.c **************************************************************/
/* values for netio_new() flags bitmask */
#define NETIO_CONNECT_DNS_RR 1 /* grok round-robin DNS entries */
/*
** fget_netio_new() - create a new netio handle
** Arguments:
** pointer to netio handle
** Returns:
** 0 success
** -1 (and sets errno) error
*/
int fget_netio_vnew(NETIO **, size_t, char *, time_t,
unsigned short, va_list);
int fget_netio_new(NETIO **, size_t, char *, time_t,
unsigned short, ...);
char *fget_netio_get_host(NETIO *);
int fget_netio_fd(NETIO *);
int fget_netio_local_addr(NETIO *,
struct sockaddr *, socklen_t *addrlen,
char *, size_t);
int fget_netio_remote_addr(NETIO *,
struct sockaddr *, socklen_t *addrlen,
char *, size_t);
/*
** fget_netio_free() - free netio handle
*/
int fget_netio_free(NETIO *);
/***** listen.c **************************************************************/
/*
** netio_listen() - create a NETIO handle to listen on a port
*/
int fget_netio_listen(NETIO **, char *, int);
/*
** netio_accept() - accept an incoming connection
*/
int fget_netio_accept(NETIO *, size_t, time_t, NETIO **);
/***** send.c ****************************************************************/
/*
** netio_write() - send a block of data
*/
ssize_t fget_netio_write(NETIO *, time_t, char *,
size_t, unsigned int);
/* values for netio_write() flags bitmask */
#define NETIO_WRITE_OOB 1 /* send with MSG_OOB flag */
/*
** fget_netio_write_line() - send a command
*/
ssize_t fget_netio_write_line(NETIO *, time_t, char *, ...);
ssize_t fget_netio_vwrite_line(NETIO *, time_t, char *, va_list);
/***** recv.c ****************************************************************/
/*
** fget_netio_read() - read a block of data
** Arguments:
** netio handle
** timeout
** buffer to save line to
** size of buffer
** Returns:
** size of line returned success
** 0 EOF
** -1 (and sets errno) error
*/
ssize_t fget_netio_read(NETIO *, time_t, char *, size_t);
/*
** fget_netio_read_line() - read next line
** Arguments:
** netio handle
** timeout
** buffer to save line to
** size of buffer
** Returns:
** size of line returned success
** 0 EOF
** -1 (and sets errno) error
*/
ssize_t fget_netio_read_line(NETIO *, time_t, char *, size_t);
/***** options.c *************************************************************/
/* netio options */
enum netio_options
{
NETIO_OPT_DEFAULT_SERVICE = 1, /* default service name */
NETIO_OPT_DEFAULT_PORT, /* default port number */
NETIO_OPT_SEND_HOOK, /* send hook */
NETIO_OPT_RECV_HOOK, /* receive hook */
NETIO_OPT_HOOK_HANDLE, /* send/recv hook handle ptr */
NETIO_OPT_HOOK_DATA /* send/recv hook data ptr */
};
/*
** netio_get_options() - get options from the NETIO handle
*/
void fget_netio_get_options(NETIO *, ...);
/*
** netio_set_options() - set options in the NETIO handle
*/
void fget_netio_set_options(NETIO *, ...);
/***** timeout.c *************************************************************/
/*
** netio_eof() - check whether the remote host has closed the connection
*/
int fget_netio_eof(NETIO *);
#endif /* ! fget_NETIO_H */
syntax highlighted by Code2HTML, v. 0.9.1