/***********************************************************************1* *2* This software is part of the ast package *3* Copyright (c) 1990-2011 AT&T Intellectual Property *4* and is licensed under the *5* Eclipse Public License, Version 1.0 *6* by AT&T Intellectual Property *7* *8* A copy of the License is available at *9* http://www.eclipse.org/org/documents/epl-v10.html *10* (with md5 checksum b35adb5213ca9657e911e9befb180842) *11* *12* Information and Software Systems Research *13* AT&T Research *14* Florham Park NJ *15* *16* Glenn Fowler <[email protected]> *17* *18***********************************************************************/19#pragma prototyped2021/*22* Glenn Fowler23* AT&T Research24*25* connect stream server interface definitions26*/2728#ifndef _CSS_H29#define _CSS_H3031#define CSS_VERSION 19970717L3233#ifndef CS_INTERFACE34#define CS_INTERFACE 235#endif3637#define CSS_AUTHENTICATE (1<<10) /* authenticate connections */38#define CSS_DAEMON (1<<0) /* become daemon proc */39#define CSS_LOG (1<<1) /* stderr to daemon log file */40#define CSS_PRESERVE (1<<2) /* preserve daemon fd's */41#define CSS_RECURSIVE (1<<3) /* allow recursive csspoll() */4243#define CSS_CLOSE (1<<4) /* server close exception */44#define CSS_DORMANT (1<<5) /* dormant timeout exception */45#define CSS_ERROR (1<<6) /* error exception */46#define CSS_INTERRUPT (1<<7) /* interrupt exception */47#define CSS_TIMEOUT (1<<8) /* timeout exception */48#define CSS_WAKEUP (1<<9) /* wakeup exception */4950#define CS_POLL_DUP 151#define CS_POLL_MOVE 252#define CS_POLL_PRI 35354#define CS_POLL_ARG 0x8000000055#define CS_POLL_SHIFT 1656#define CS_POLL_MASK 0x00007fff5758#define CS_POLL_CMD(f,c)(CS_POLL_ARG|(c)|(((long)(f)&CS_POLL_MASK)<<CS_POLL_SHIFT))5960#include <cs.h>6162struct Css_s;63struct Cssdisc_s;64struct Cssfd_s;6566typedef struct Css_s Css_t;67typedef struct Cssdisc_s Cssdisc_t;68typedef struct Cssfd_s Cssfd_t;6970struct Cssdisc_s /* user discipline */71{72unsigned long version; /* CSS_VERSION */73unsigned long flags; /* CSS_* flags */74unsigned long timeout; /* timeout in ms, 0 if none */75unsigned long wakeup; /* wakeup in ms, 0 if none */76Error_f errorf; /* error message handler */77int (*acceptf)(Css_t*, Cssfd_t*, Csid_t*, char**, Cssdisc_t*);78/* accept new connection/fd */79int (*actionf)(Css_t*, Cssfd_t*, Cssdisc_t*);80/* fd state change action */81int (*exceptf)(Css_t*, unsigned long, unsigned long, Cssdisc_t*);82/* poll exception action */83};8485struct Cssfd_s /* fd info */86{87int fd; /* fd */88int status; /* action status */89int (*actionf)(Css_t*, Cssfd_t*, Cssdisc_t*);90/* css.actionf by default */91void* data; /* user data, 0 by default */9293#ifdef _CSS_FD_PRIVATE_94_CSS_FD_PRIVATE_95#endif9697};9899struct Css_s /* connect stream server state */100{101char* id; /* library identifier */102char* service; /* service name */103char* path; /* service path */104int fd; /* service fd */105int fdmax; /* max # serviceable fd's */106int perm; /* service permissions */107char mount[PATH_MAX];/* service mount path */108char* control; /* CS_MNT_* in css.mount */109Cs_t* state; /* from csalloc() */110111#ifdef _CSS_PRIVATE_112_CSS_PRIVATE_113#endif114115};116117#if _BLD_cs && defined(__EXPORT__)118#define extern __EXPORT__119#endif120121extern Css_t* cssopen(const char*, Cssdisc_t*);122extern Cssfd_t* cssfd(Css_t*, int, unsigned long);123extern Cssfd_t* csspoll(unsigned long, unsigned long);124extern int cssclose(Css_t*);125126#undef extern127128#endif129130131