#pragma comment ( lib, "srv.lib" )
/*
* sever inferface
*/
typedef struct Sinfo Sinfo;
typedef struct Stype Stype;
enum {
Smesgsize = 8000, /* minimum size limit for rpc mesgs */
Snamelen = 28, /* maximum length including null for a server name */
Spathlen = 10*Snamelen, /* maximum path length for a server name */
Sinfolen = 16+2*Snamelen+4,
Sidlen = 4, /* in ints */
};
/* flags in Singo */
enum {
Sdir = (1<<0), /* is a directory */
};
struct Sinfo
{
int id[Sidlen];
char name[Snamelen];
char type[Snamelen];
int flags;
int mesgsize;
};
struct Stype
{
void *(*init)(void*, Sinfo*);
int (*fini)(void*);
void *(*open)(void*, int, char*, char*, Sinfo*);
int (*close)(void*, void*);
int (*free)(void*, void*);
int (*read)(void*, void*, uchar*, int);
int (*write)(void*, void*, uchar*, int);
int (*rpc)(void*, void*, uchar*, int, int);
int (*callback)(void*, void*, void (*f)(int, uchar*, int));
};
extern void srvinit(void);
extern void srvfini(void);
extern int srvmount(char*, Stype*, void*);
extern int srvunmount(char*);
extern void srvproxy(int);
extern int srvopen(char*, char*);
extern int srvinfo(int, Sinfo*);
extern int srvpath(int, char*);
extern int srvclose(int);
extern int srvread(int, void*, int);
extern int srvwrite(int, void*, int);
extern int srvrpc(int, void*, int, int);
extern int srvcallback(int, void (*f)(int, uchar*, int));
extern void srvgenid(int*, void*);
extern void pksinfo(uchar*, Sinfo*);
extern void unpksinfo(Sinfo*, uchar*);
/* some standard servers */
extern Stype srvremote;
extern Stype srvping;
extern Stype srvtcp;
extern Stype srvudp;
extern Stype srvpipe;
extern Stype srvnamedpipe;
extern Stype srvsmc;
/*
* network dialing and authentication
*/
extern int accept(int);
extern int announce(char*, char*);
extern int dial(char*, char*, char*);
extern int hangup(int);
extern int listen(int, char*);
extern void netmkaddr(char*, int, char*, char*, char*);
extern int reject(int, char*);
extern int netsrvset(char*, char*);
extern char *netsrvget(char);
syntax highlighted by Code2HTML, v. 0.9.1