SOURCE FILE: cnaiapi.h


/* cnaiapi.h */

#ifndef _CNAIAPI_H_
#define _CNAIAPI_H_

#if defined(LINUX) || defined(SOLARIS)
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <pthread.h>
#include <unistd.h>
#endif /* defined(LINUX) || defined(SOLARIS) */

#if defined(WIN32)
#include <winsock2.h>
#include <cnaiapi_win32.h>
#endif /* defined(WIN32) */

#include <sys/types.h>

typedef short   appnum;
typedef long    computer;
typedef int     connection;

struct port2sock {
        short   port;
        int     sock;
};

#define P2S_SIZE 64 /* number of entries in port to socket map table    */
#define LISTEN_Q_LEN 5

appnum          appname_to_appnum(char *appname);
computer        cname_to_comp(char *cname);
connection      await_contact(appnum a);
connection      make_contact(computer c, appnum a);
int             send_eof(connection c);
void            cnaiapi_init(void);

#if defined(LINUX) || defined(SOLARIS)
extern pthread_mutex_t await_contact_mutex, cname_mutex, appname_mutex;
#elif defined(WIN32)
extern HANDLE await_contact_mutex, cname_mutex, appname_mutex;
#endif

#endif /* !defined(_CNAIAPI_H_) */