blob: 193ad3f08f1bb63adf150fb21a814b82c7dc934e [file] [log] [blame]
/*
* Copyright 1999-2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Manages the request mappings. It includes the internal mapper and all
* properties associated with a location ( or virtual host ). The information
* is set using:
* - various autoconfiguration mechanisms.
* - uriworkers.properties
* - JkMount directives
* - <SetHandler> and apache specific directives.
* - XXX workers.properties-like directives ( for a single config file )
* - other server-specific directives
*
* The intention is to allow the user to use whatever is more comfortable
* and fits his needs. For 'basic' configuration the autoconf will be enough,
* server-specific configs are the best for fine-tunning, properties are
* easy to generate and edit.
*
*
* Author: Gal Shachor <shachor@il.ibm.com>
* author: Costin Manolache
*/
#ifndef JK_URIMAP_H
#define JK_URIMAP_H
#include "jk_global.h"
#include "jk_env.h"
#include "jk_logger.h"
#include "jk_uriEnv.h"
#include "jk_map.h"
#include "jk_pool.h"
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
struct jk_uriMap;
struct jk_map;
struct jk_env;
struct jk_pool;
typedef struct jk_uriMap jk_uriMap_t;
struct jk_uriMap
{
struct jk_bean *mbean;
/* All mappings */
struct jk_map *maps;
struct jk_workerEnv *workerEnv;
/* Virtual host map. For each host and alias there is one
* entry, the value is a uriEnv that corresponds to the vhost top
* level.
*/
struct jk_map *vhosts;
/* Virtual host map cache. Once processed the mapped host
* will be cached for performance reasons.
*/
struct jk_map *vhcache;
/* ---------- Methods ---------- */
/** Initialize the map. This should be called after all workers
were added. It'll check if mappings have valid workers.
*/
int (*init) (struct jk_env * env, jk_uriMap_t *_this);
void (*destroy) (struct jk_env * env, jk_uriMap_t *_this);
int (*addUriEnv) (struct jk_env * env,
struct jk_uriMap * uriMap,
struct jk_uriEnv * uriEnv);
/** Check the uri for potential security problems
*/
int (*checkUri) (struct jk_env * env, jk_uriMap_t *_this,
const char *uri);
/** Mapping the uri. To be thread safe, we need to pass a pool.
Or even better, create the jk_service structure already.
mapUri() can set informations on it as well.
MapUri() method should behave exactly like the native apache2
mapper - we need it since the mapping rules for servlets are
different ( or we don't know yet how to 'tweak' apache config
to do what we need ). Even when we'll know, uriMap will be needed
for other servers.
*/
struct jk_uriEnv *(*mapUri) (struct jk_env * env, jk_uriMap_t *_this,
const char *vhost,
int port, const char *uri);
/* -------------------- @deprecated -------------------- */
/* used by the mapper, temp storage ( ??? ) */
/* pool for mappings. Mappings will change at runtime, we can't
* recycle the main pool.
*/
struct jk_pool *pool;
};
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* JK_URI_MAP_H */