diff options
Diffstat (limited to '')
-rw-r--r-- | apache2/mod_qos.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/apache2/mod_qos.h b/apache2/mod_qos.h new file mode 100644 index 0000000..3372abe --- /dev/null +++ b/apache2/mod_qos.h @@ -0,0 +1,79 @@ +/* -*-mode: c; indent-tabs-mode: nil; c-basic-offset: 2; -*- + */ + +/** + * mod_qos.h: Quality of service module for Apache Web Server. + * + * The Apache Web Servers requires threads and processes to serve + * requests. Each TCP connection to the web server occupies one + * thread or process. Sometimes, a server gets too busy to serve + * every request due the lack of free processes or threads. + * + * This module implements control mechanisms that can provide + * different priority to different requests. + * + * See http://mod-qos.sourceforge.net/ for further + * details. + * + * Copyright (C) 2023 Pascal Buchbinder + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + * + */ + +#ifndef __MOD_QOS_H__ +#define __MOD_QOS_H__ + +/************************************************************************** + * Hooks + **************************************************************************/ +#if !defined(WIN32) +#define QOS_DECLARE(type) type +#define QOS_DECLARE_NONSTD(type) type +#define QOS_DECLARE_DATA +#elif defined(QOS_DECLARE_STATIC) +#define QOS_DECLARE(type) type __stdcall +#define QOS_DECLARE_NONSTD(type) type +#define QOS_DECLARE_DATA +#elif defined(QOS_DECLARE_EXPORT) +#define QOS_DECLARE(type) __declspec(dllexport) type __stdcall +#define QOS_DECLARE_NONSTD(type) __declspec(dllexport) type +#define QOS_DECLARE_DATA __declspec(dllexport) +#else +#define QOS_DECLARE(type) __declspec(dllimport) type __stdcall +#define QOS_DECLARE_NONSTD(type) __declspec(dllimport) type +#define QOS_DECLARE_DATA __declspec(dllimport) +#endif + +#define QOS_OPTIONAL_HOOK(name,fn,pre,succ,order) \ + APR_OPTIONAL_HOOK(qos,name,fn,pre,succ,order) + +/** + * mod_qos.h header file defining hooks for path/query + * decoding (used by QS_Deny* and QS_Permit* rules). + * + * Define QS_MOD_EXT_HOOKS in order to enable these hooks + * within mod_qos.c. + */ + +/* hook to decode/unescape the path portion of the request uri */ +APR_DECLARE_EXTERNAL_HOOK(qos, QOS, apr_status_t, path_decode_hook, + (request_rec *r, char **path, int *len)) +/* hook to decode/unescape the query portion of the request uri */ +APR_DECLARE_EXTERNAL_HOOK(qos, QOS, apr_status_t, query_decode_hook, + (request_rec *r, char **query, int *len)) + +#endif /* __MOD_QOS_H__ */ |