Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gevent
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
gevent
Commits
dcd37c15
Commit
dcd37c15
authored
Sep 08, 2009
by
Denis Bilenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add wrappers for evbuffer, evhttp, evhttp_request and evhttp_connection
parent
c5747fdf
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
614 additions
and
0 deletions
+614
-0
gevent/evbuffer.pxi
gevent/evbuffer.pxi
+60
-0
gevent/evhttp.pxi
gevent/evhttp.pxi
+508
-0
gevent/libevent.h
gevent/libevent.h
+46
-0
No files found.
gevent/evbuffer.pxi
0 → 100644
View file @
dcd37c15
cdef
extern
from
"libevent.h"
:
struct
evbuffer
:
char
*
buf
"buffer"
int
off
evbuffer
*
evbuffer_new
()
int
evbuffer_add
(
evbuffer
*
buf
,
char
*
p
,
int
len
)
char
*
evbuffer_readline
(
evbuffer
*
buf
)
void
evbuffer_free
(
evbuffer
*
buf
)
size_t
evbuffer_get_length
(
evbuffer
*
buffer
)
unsigned
char
*
evbuffer_pullup
(
evbuffer
*
buf
,
size_t
size
)
int
EVBUFFER_DRAIN
(
evbuffer
*
buf
,
size_t
len
)
cdef
class
buffer
:
cdef
evbuffer
*
__obj
def
__init__
(
self
,
size_t
_obj
):
self
.
__obj
=
<
evbuffer
*>
_obj
property
_obj
:
def
__get__
(
self
):
return
<
size_t
>
(
self
.
__obj
)
def
__len__
(
self
):
return
evbuffer_get_length
(
self
.
__obj
)
def
__nonzero__
(
self
):
return
self
.
__obj
and
evbuffer_get_length
(
self
.
__obj
)
# cython does not implement generators
#def __iter__(self):
# while len(self):
# yield self.readline()
def
read
(
self
,
long
size
=-
1
):
cdef
long
length
=
evbuffer_get_length
(
self
.
__obj
)
if
size
<
0
:
size
=
length
else
:
size
=
min
(
size
,
length
)
if
size
<=
0
:
return
''
cdef
char
*
data
=
<
char
*>
evbuffer_pullup
(
self
.
__obj
,
size
)
if
not
data
:
raise
RuntimeError
(
'evbuffer_pullup(%x, %s) returned NULL'
%
(
self
.
_obj
,
size
))
cdef
object
result
=
PyString_FromStringAndSize
(
data
,
size
)
cdef
res
=
EVBUFFER_DRAIN
(
self
.
__obj
,
size
)
if
res
:
raise
RuntimeError
(
'evbuffer_drain(%x, %s) returned %s'
%
(
self
.
_obj
,
size
,
res
))
return
result
def
readline
(
self
):
return
evbuffer_readline
(
self
.
__obj
)
or
''
def
readlines
(
self
,
hint
=-
1
):
return
list
(
self
.
__iter__
())
gevent/evhttp.pxi
0 → 100644
View file @
dcd37c15
This diff is collapsed.
Click to expand it.
gevent/libevent.h
View file @
dcd37c15
#include "sys/queue.h"
#ifdef USE_LIBEVENT_2
#warning "Using libevent2"
#include "event2/event.h"
#include "event2/event_struct.h"
#include "event2/event_compat.h"
#include "event2/http.h"
#include "event2/http_compat.h"
#include "event2/http_struct.h"
#include "event2/buffer.h"
#include "event2/buffer_compat.h"
#define EVBUFFER_DRAIN evbuffer_drain
#define EVHTTP_SET_CB evhttp_set_cb
#elif USE_LIBEVENT_1
#warning "Using libevent1"
#include "event.h"
#include "evhttp.h"
/* compatibility */
#define evbuffer_get_length EVBUFFER_LENGTH
#define evbuffer_pullup(BUF, SIZE) EVBUFFER_DATA(BUF)
#define TAILQ_FIRST(head) ((head)->tqh_first)
#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
/* functions that return int in libeven2 but void in libevent1 */
#define EVBUFFER_DRAIN(A, B) (evbuffer_drain((A), (B)), 0)
#define EVHTTP_SET_CB(A, B, C, D) (evhttp_set_cb((A), (B), (C), (D)), 0)
#else
#error "Please define either USE_LIBEVENT_1 or USE_LIBEVENT_2"
#endif
#define TAILQ_GET_NEXT(X) TAILQ_NEXT((X), next)
extern
void
*
current_base
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment