#ifndef _XSTREAMS_H_
#define _XSTREAMS_H_
#define MEM_ALLIGN(ptr) ((((unsigned) (ptr + 3)) >> 2) << 2)
#define CONNECT_TIMEOUT 60
#define MAX_AUTO_BUF_LEN 256
#define MAX_DISP_DIGITS 20
#define MAX_NETS 8
typedef struct _host {
char host_name[32];
int host_len;
struct _host *next;
} HOST;
struct listenCall {
struct t_call *CurrentCall;
struct listenCall *NextCall;
};
struct listenQue {
struct listenCall *QueHead;
struct listenCall *QueTail;
};
#define EMPTY(p) (p->QueHead == (struct listenCall *) NULL)
typedef struct {
int flags;
char type;
int display;
char *inputbuf;
int buflen;
int bufptr;
int msglen;
} IOBUFFER;
typedef struct {
int _nnets;
#ifdef SVR4
struct netconfig *_net[MAX_NETS];
#else
char *_net[MAX_NETS];
#endif
struct listenQue FreeList[MAX_NETS];
struct listenQue PendingQue[MAX_NETS];
int _npeers;
char **_peer;
int *_peerlen;
HOST *_validhosts;
} networkInfo;
typedef struct _Xstream {
int (*SetupTheListener)();
int (*ConnectNewClient)();
int (*CallTheListener)();
int (*ReadFromStream)();
int (*BytesCanBeRead)();
int (*WriteToStream)();
int (*CloseStream)();
int (*CreateAddress)();
union ext {
int (*NameServer)();
networkInfo *NetInfo;
} u;
} Xstream;
#ifdef USL_COMPAT
#define _XsStream xstream
#define _XReadV _readv
#define _XWriteV _writev
#define _XSelect XSelect
#define _XsErrorCall ErrorCall
#define _XsSetupLocalStream SetupLocalStream
#define _XsConnectLocalClient ConnectLocalClient
#define _XsOpenSpServer OpenSpServer
#define _XsReadLocalStream ReadLocalStream
#define _XsConnectTliClient ConnectTliClient
#define _XsSetupTliStrean SetupTliStream
#define _XsCallTliServer CallTliServer
#define _XsCallLocalServer CallLocalServer
#define _XsTypeOfStream TypeOfStream
#ifdef SVR4
#define _XsSetupNamedStream SetupNamedStream
#define _XsSetupSpStream SetupSpStream
#endif
#endif
extern Xstream _XsStream[];
#define NO_BUFFERING 0
#define BUFFERING 1
#define OpenDaemonConnection 0
#define PEER_NAME 1
#define PEER_ALLOC 2
#define PEER_FREE 3
#define ConvertNetAddrToName 4
#define ConvertNameToNetAddr 5
#define ConvertNameToTliCall 6
#define ConvertTliCallToName 7
#define ConvertNameToTliBind 8
#define UNAME_LENGTH 14
#define X_LOCAL_STREAM 0
#define X_NAMED_STREAM 1
#define X_SP_STREAM 2
#define X_TLI_STREAM 3
#define CLOSED_STREAM -1
#define FamilyUname 3
#define X_TCP_PORT 6000
#define NAMED_LISTENER "/dev/X/Nserver"
#define LOCAL_LISTENER "/dev/X/server"
#define NAME_SERVER_NODE "/dev/X/nameserver"
#define XNETSPECDIR "lib/net"
#define XROOTDIR "/usr/X"
#define MAX_SIMUL_TLI_CALLS 20
#define SetupNetworkInfo() _XsStream[X_LOCAL_STREAM].u.NetInfo = &Network; \
_XsStream[X_NAMED_STREAM].u.NetInfo = &Network; \
\
\
_XsStream[X_TLI_STREAM].u.NameServer = nameserver
#define NetworkInfo (_XsStream[X_LOCAL_STREAM].u.NetInfo)
#define GetNetworkInfo (*_XsStream[X_TLI_STREAM].u.NameServer)
#define validhosts _XsStream[X_LOCAL_STREAM].u.NetInfo->_validhosts
#define HEADERSIZE (5*sizeof(int))
#endif