/*
* addr_server.h -- definitions and prototypes for addr_server.c
* 8-92 : Dwayne Fontenot : original coding.
*/
#ifndef _ADDR_SERVER_H_
#define _ADDR_SERVER_H_
#define DFAULT_PROTO 0 /* use the appropriate protocol */
#define MAX_CONNS 4 /* max number of connections */
#define SNAME_LEN 64 /* length of symbolic name string */
#define MAX_EVENTS_IN_QUEUE 100
#define MAX_EVENTS_TO_PROCESS 100
enum conn_states {CLOSED,OPEN};
enum ev_type {NEW_CONN, CONN};
enum msgtypes {NAMEBYIP, IPBYNAME};
typedef struct conn *conn_ptr;
typedef struct conn {
int fd; /* file descriptor */
int state; /* connection state */
struct sockaddr_in addr; /* address struct for connected */
char sname[SNAME_LEN]; /* symbolic name of connected host */
} connection;
typedef struct queue_elem *queue_element_ptr;
typedef struct queue_elem {
short event_type; /* event type */
int fd; /* file descriptor on which data is pending */
queue_element_ptr next;
} queue_element;
void init_conn_sock();
void sigpipe_handler();
void sigio_handler();
void new_conn_handler();
void conn_data_handler();
void enqueue_datapending();
void dequeue_top_event();
void pop_queue_element();
void push_queue_element();
void handle_top_event();
int index_by_fd();
void terminate();
#endif /* _ADDR_SERVER_H_ */