he server plug-in API uses many data structures. All their definitions are gathered here for your convenience.
base/session.h file.
typedef struct {
/* Information about the remote client */
pblock *client;
/* The socket descriptor to the remote client */
SYS_NETFD csd;
/* The input buffer for that socket descriptor */
netbuf *inbuf;
/* Raw socket information about the remote */
/* client (for internal use) */
struct in_addr iaddr;
} Session;
base/pblock.h file.
#include "base/pblock.h"
typedef struct {
int hsize;
struct pb_entry **ht;
} pblock;
base/pblock.h file.
struct pb_entry {
pb_param *param;
struct pb_entry *next;
};
base/pblock.h file.
typedef struct {
char *name,*value;
} pb_param;
Session->client parameter block structure contains two entries: The ip entry is the IP address of the client machine.
The dns entry is the DNS name of the remote machine. This member must be accessed through the session_dns function call.
base/session.h file.
/*
* session_dns returns the DNS host name of the client for this
* session and inserts it into the client pblock. Returns NULL if
* unavailable.
*/
char *session_dns(Session *sn);
frame/req.h file.
typedef struct {
/* Server working variables */
pblock *vars;
/* The method, URI, and protocol revision of this request */
block *reqpb;
/* Protocol specific headers */
int loadhdrs;
pblock *headers;
/* Server's response headers */
pblock *srvhdrs;
/* The object set constructed to fulfill this request */
httpd_objset *os;
/* The stat last returned by request_stat_path */
char *statpath;
struct stat *finfo;
} Request;
struct stat {
dev_t st_dev; /* device of inode */
inot_t st_ino; /* inode number */
short st_mode; /* mode bits */
short st_nlink; /* number of links to file /*
short st_uid; /* owner's user id */
short st_gid; /* owner's group id */
dev_t st_rdev; /* for special files */
off_t st_size; /* file size in characters */
time_t st_atime; /* time last accessed */
time_t st_mtime; /* time last modified */
time_t st_ctime; /* time inode last changed*/
}.
The elements that are most significant for server plug-in API activities are st_size, st_atime, st_mtime, and st_ctime.
typedef struct {
void *data; /* the data */
int size; /* the maximum length of the data */
char *name; /* internal use: filename to unlink if exposed */
SYS_FILE fd; /* internal use: file descriptor for region */
} shmem_s;
buffer.h.
buffer.h.
cinfo.h.
typedef struct {
char *type; /* Identifies what kind of data is in the file*/
char *encoding; /* Identifies any compression or other content/*-
/* independent transformation that's been applied/*
/* to the file, such as uuencode)*/
char *language; /* Identifies the language a text document is in. */
} cinfo;
sem.h.
crit.h.
crit.h.
systhr.h.