最新的版本ACE-5.6.8,刚从外文网上搬下,与大家分享.

源代码在线查看: object.h

软件大小: 24894 K
上传用户: guozhongjiesg02
关键词: ACE 版本
下载地址: 免注册下载 普通下载 VIP

相关代码

				/*
				 * $Id: object.h 80826 2008-03-04 14:51:23Z wotte $
				 *
				 * Copyright (c) 1994, 1995.  Netscape Communications Corporation.  All
				 * rights reserved.
				 *
				 * Use of this software is governed by the terms of the license agreement for
				 * the Netscape Communications or Netscape Comemrce Server between the
				 * parties.
				 */
				
				
				/* ------------------------------------------------------------------------ */
				
				
				/*
				 * object.h: Handle httpd objects
				 *
				 * Manages information about a document from config. files. Called mainly
				 * by objset.c.
				 *
				 * This module does not assume anything about the directives being parsed.
				 * That is handled by objset.c.
				 *
				 * This module requires the pblock module from the base library.
				 *
				 * Rob McCool
				 *
				 */
				
				
				#ifndef OBJECT_H
				#define OBJECT_H
				
				
				#include "netsite.h"
				#include "base/pblock.h"
				#include "base/session.h"
				
				
				
				
				/* ------------------------------ Constants ------------------------------- */
				
				
				/* The maximum directive length unabbreviated, plus one space */
				#define MAX_DNAME_LEN 11
				#define NUM_DIRECTIVES 7
				
				
				/* ------------------------------ Structures ------------------------------ */
				
				
				
				/*
				 * Hierarchy of httpd_object
				 *
				 * An object contains dtables.
				 *
				 * Each dtable is a table of directives that were entered of a certain type.
				 * There is one dtable for each unique type of directive.
				 *
				 * Each dtable contains an array of directives, each of which is equivalent
				 * to one directive that occurred in a config. file.
				 *
				 * It is up to the caller to determine how many dtables will be allocated
				 * and to keep track of which of their directive types maps to which dtable
				 * number.
				 */
				
				
				/*
				 * directive is a structure containing the protection and parameters to an
				 * instance of a directive within an httpd_object.
				 *
				 * param is the parameters, client is the protection.
				 */
				
				typedef struct {
				    pblock *param;
				    pblock *client;
				} directive;
				
				/*
				 * dtable is a structure for creating tables of directives
				 */
				
				typedef struct {
				    int ni;
				    directive *inst;
				} dtable;
				
				/*
				 * The httpd_object structure.
				 *
				 * The name pblock array contains the names for this object, such as its
				 * virtual location, its physical location, or its identifier.
				 *
				 * tmpl contains any templates allocated to this object.
				 */
				
				typedef struct {
				    pblock *name;
				
				    int nd;
				    dtable *dt;
				} httpd_object;
				
				
				
				
				/* ------------------------------ Prototypes ------------------------------ */
				
				
				/*
				 * directive_name2num will return the position of the abbreviated directive
				 * dir in the directive table.
				 *
				 * If dir does not exist in the table, it will return -1.
				 */
				
				int directive_name2num(char *dir);
				
				
				/*
				 * directive_num2name returns a string describing directive number num.
				 */
				
				const char *directive_num2name(int num);
				
				
				/*
				 * object_create will create a new object and return a pointer to it.
				 * It will allocate space for nd directive types and set name accordingly.
				 */
				
				httpd_object *object_create(int nd, pblock *name);
				
				/*
				 * object_free will free an object and any data associated with it.
				 */
				
				void object_free(httpd_object *obj);
				
				/*
				 * object_add_directive will add a new directive to the dtable for
				 * the directive class at position dc.
				 */
				
				void object_add_directive(int dc, pblock *p, pblock *c, httpd_object *obj);
				
				
				/*
				 * object_findnext finds the object configured to follow the given object,
				 * and stores the variables in rq->vars. It returns REQ_PROCEED if more
				 * objects should be processed, or REQ_NOACTION if it did not find any
				 * further objects to process. If something bad happens, REQ_ABORTED is
				 * returned.
				 *
				 * Handles all DIRECTIVE_CONSTRUCT type directives such as NameTrans and
				 * AuthType.
				 */
				
				
				/* --------- Prototype moved to req.h because of interdependency ---------- */
				
				#endif
							

相关资源