mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-10 04:50:37 -04:00
Move evkeyvalq into a separate header for evhttp_parse_query users
The evhttp_parse_query API is a bit misdesigned; all the other evkeyvalq stuff is abstract and lets you get away with having a header stub, but evhttp_parse_query seems to require that you instantiate an empty evkeyvalq of your own.
This commit is contained in:
parent
d3ceca800e
commit
ca9048f12c
@ -16,6 +16,7 @@ EVENT2_EXPORT = \
|
|||||||
event2/http.h \
|
event2/http.h \
|
||||||
event2/http_compat.h \
|
event2/http_compat.h \
|
||||||
event2/http_struct.h \
|
event2/http_struct.h \
|
||||||
|
event2/keyvalq_struct.h \
|
||||||
event2/listener.h \
|
event2/listener.h \
|
||||||
event2/rpc.h \
|
event2/rpc.h \
|
||||||
event2/rpc_compat.h \
|
event2/rpc_compat.h \
|
||||||
|
@ -49,6 +49,9 @@ extern "C" {
|
|||||||
/* For int types. */
|
/* For int types. */
|
||||||
#include <event2/util.h>
|
#include <event2/util.h>
|
||||||
|
|
||||||
|
/* For evkeyvalq */
|
||||||
|
#include <event2/keyvalq_struct.h>
|
||||||
|
|
||||||
#define EVLIST_TIMEOUT 0x01
|
#define EVLIST_TIMEOUT 0x01
|
||||||
#define EVLIST_INSERTED 0x02
|
#define EVLIST_INSERTED 0x02
|
||||||
#define EVLIST_SIGNAL 0x04
|
#define EVLIST_SIGNAL 0x04
|
||||||
@ -119,19 +122,7 @@ struct event {
|
|||||||
void *ev_arg;
|
void *ev_arg;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* Key-Value pairs. Can be used for HTTP headers but also for
|
|
||||||
* query argument parsing.
|
|
||||||
*/
|
|
||||||
struct evkeyval {
|
|
||||||
TAILQ_ENTRY(evkeyval) next;
|
|
||||||
|
|
||||||
char *key;
|
|
||||||
char *value;
|
|
||||||
};
|
|
||||||
|
|
||||||
TAILQ_HEAD (event_list, event);
|
TAILQ_HEAD (event_list, event);
|
||||||
TAILQ_HEAD (evkeyvalq, evkeyval);
|
|
||||||
|
|
||||||
#ifdef _EVENT_DEFINED_TQENTRY
|
#ifdef _EVENT_DEFINED_TQENTRY
|
||||||
#undef TAILQ_ENTRY
|
#undef TAILQ_ENTRY
|
||||||
|
80
include/event2/keyvalq_struct.h
Normal file
80
include/event2/keyvalq_struct.h
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu>
|
||||||
|
* Copyright (c) 2007-2010 Niels Provos and Nick Mathewson
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. The name of the author may not be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||||
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
#ifndef _EVENT2_EVENT_KEYVALQ_STRUCT_H_
|
||||||
|
#define _EVENT2_EVENT_KEYVALQ_STRUCT_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Fix so that people don't have to run with <sys/queue.h> */
|
||||||
|
/* XXXX This code is duplicated with event_struct.h */
|
||||||
|
#ifndef TAILQ_ENTRY
|
||||||
|
#define _EVENT_DEFINED_TQENTRY
|
||||||
|
#define TAILQ_ENTRY(type) \
|
||||||
|
struct { \
|
||||||
|
struct type *tqe_next; /* next element */ \
|
||||||
|
struct type **tqe_prev; /* address of previous next element */ \
|
||||||
|
}
|
||||||
|
#endif /* !TAILQ_ENTRY */
|
||||||
|
|
||||||
|
#ifndef TAILQ_HEAD
|
||||||
|
#define _EVENT_DEFINED_TQHEAD
|
||||||
|
#define TAILQ_HEAD(name, type) \
|
||||||
|
struct name { \
|
||||||
|
struct type *tqh_first; \
|
||||||
|
struct type **tqh_last; \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Key-Value pairs. Can be used for HTTP headers but also for
|
||||||
|
* query argument parsing.
|
||||||
|
*/
|
||||||
|
struct evkeyval {
|
||||||
|
TAILQ_ENTRY(evkeyval) next;
|
||||||
|
|
||||||
|
char *key;
|
||||||
|
char *value;
|
||||||
|
};
|
||||||
|
|
||||||
|
TAILQ_HEAD (evkeyvalq, evkeyval);
|
||||||
|
|
||||||
|
/* XXXX This code is duplicated with event_struct.h */
|
||||||
|
#ifdef _EVENT_DEFINED_TQENTRY
|
||||||
|
#undef TAILQ_ENTRY
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _EVENT_DEFINED_TQHEAD
|
||||||
|
#undef TAILQ_HEAD
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
Loading…
x
Reference in New Issue
Block a user