/
MudOS_0.9.19/bin/
MudOS_0.9.19/doc/concepts/
MudOS_0.9.19/doc/driver/
MudOS_0.9.19/doc/efuns/bitstrings/
MudOS_0.9.19/doc/efuns/buffers/
MudOS_0.9.19/doc/efuns/communication/
MudOS_0.9.19/doc/efuns/core/
MudOS_0.9.19/doc/efuns/mappings/
MudOS_0.9.19/doc/efuns/math/
MudOS_0.9.19/doc/efuns/security/
MudOS_0.9.19/doc/lpc/constructs/
MudOS_0.9.19/doc/lpc/types/
MudOS_0.9.19/doc/platforms/
MudOS_0.9.19/etc/
MudOS_0.9.19/mudlib/
MudOS_0.9.19/mudlib/lil/
MudOS_0.9.19/mudlib/lil/clone/
MudOS_0.9.19/mudlib/lil/command/
MudOS_0.9.19/mudlib/lil/data/
MudOS_0.9.19/mudlib/lil/etc/
MudOS_0.9.19/mudlib/lil/include/
MudOS_0.9.19/mudlib/lil/inherit/
MudOS_0.9.19/mudlib/lil/inherit/master/
MudOS_0.9.19/mudlib/lil/log/
MudOS_0.9.19/mudlib/lil/single/
MudOS_0.9.19/mudlib/lil/u/
MudOS_0.9.19/src/testsuite/
MudOS_0.9.19/src/testsuite/clone/
MudOS_0.9.19/src/testsuite/command/
MudOS_0.9.19/src/testsuite/data/
MudOS_0.9.19/src/testsuite/etc/
MudOS_0.9.19/src/testsuite/include/
MudOS_0.9.19/src/testsuite/inherit/
MudOS_0.9.19/src/testsuite/inherit/master/
MudOS_0.9.19/src/testsuite/log/
MudOS_0.9.19/src/testsuite/single/
MudOS_0.9.19/src/testsuite/single/efuns/
MudOS_0.9.19/src/testsuite/u/
/*
 *  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_ */