Added getstats.
This commit is contained in:
parent
2562738e2d
commit
63807d6476
7 changed files with 31 additions and 7 deletions
14
src/buffer.c
14
src/buffer.c
|
@ -45,6 +45,18 @@ void buf_init(p_buf buf, p_io io, p_tm tm) {
|
|||
buf->first = buf->last = 0;
|
||||
buf->io = io;
|
||||
buf->tm = tm;
|
||||
buf->received = buf->sent = 0;
|
||||
buf->birthday = tm_gettime();
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*\
|
||||
* object:getstats() interface
|
||||
\*-------------------------------------------------------------------------*/
|
||||
int buf_meth_getstats(lua_State *L, p_buf buf) {
|
||||
lua_pushnumber(L, buf->received);
|
||||
lua_pushnumber(L, buf->sent);
|
||||
lua_pushnumber(L, tm_gettime() - buf->birthday);
|
||||
return 3;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*\
|
||||
|
@ -141,6 +153,7 @@ static int sendraw(p_buf buf, const char *data, size_t count, size_t *sent) {
|
|||
total += done;
|
||||
}
|
||||
*sent = total;
|
||||
buf->sent += total;
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -205,6 +218,7 @@ static int recvline(p_buf buf, luaL_Buffer *b) {
|
|||
* transport layer
|
||||
\*-------------------------------------------------------------------------*/
|
||||
static void buf_skip(p_buf buf, size_t count) {
|
||||
buf->received += count;
|
||||
buf->first += count;
|
||||
if (buf_isempty(buf))
|
||||
buf->first = buf->last = 0;
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
|
||||
/* buffer control structure */
|
||||
typedef struct t_buf_ {
|
||||
double birthday; /* throttle support info: creation time, */
|
||||
int sent, received; /* bytes sent, and bytes received */
|
||||
p_io io; /* IO driver used for this buffer */
|
||||
p_tm tm; /* timeout management for this buffer */
|
||||
size_t first, last; /* index of first and last bytes of stored data */
|
||||
|
@ -38,6 +40,7 @@ int buf_open(lua_State *L);
|
|||
void buf_init(p_buf buf, p_io io, p_tm tm);
|
||||
int buf_meth_send(lua_State *L, p_buf buf);
|
||||
int buf_meth_receive(lua_State *L, p_buf buf);
|
||||
int buf_meth_getstats(lua_State *L, p_buf buf);
|
||||
int buf_isempty(p_buf buf);
|
||||
|
||||
#endif /* BUF_H */
|
||||
|
|
13
src/tcp.c
13
src/tcp.c
|
@ -23,6 +23,7 @@ static int meth_connect(lua_State *L);
|
|||
static int meth_listen(lua_State *L);
|
||||
static int meth_bind(lua_State *L);
|
||||
static int meth_send(lua_State *L);
|
||||
static int meth_getstats(lua_State *L);
|
||||
static int meth_getsockname(lua_State *L);
|
||||
static int meth_getpeername(lua_State *L);
|
||||
static int meth_shutdown(lua_State *L);
|
||||
|
@ -47,6 +48,7 @@ static luaL_reg tcp[] = {
|
|||
{"getfd", meth_getfd},
|
||||
{"getpeername", meth_getpeername},
|
||||
{"getsockname", meth_getsockname},
|
||||
{"getstats", meth_getstats},
|
||||
{"listen", meth_listen},
|
||||
{"receive", meth_receive},
|
||||
{"send", meth_send},
|
||||
|
@ -100,18 +102,21 @@ int tcp_open(lua_State *L)
|
|||
/*-------------------------------------------------------------------------*\
|
||||
* Just call buffered IO methods
|
||||
\*-------------------------------------------------------------------------*/
|
||||
static int meth_send(lua_State *L)
|
||||
{
|
||||
static int meth_send(lua_State *L) {
|
||||
p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{client}", 1);
|
||||
return buf_meth_send(L, &tcp->buf);
|
||||
}
|
||||
|
||||
static int meth_receive(lua_State *L)
|
||||
{
|
||||
static int meth_receive(lua_State *L) {
|
||||
p_tcp tcp = (p_tcp) aux_checkclass(L, "tcp{client}", 1);
|
||||
return buf_meth_receive(L, &tcp->buf);
|
||||
}
|
||||
|
||||
static int meth_getstats(lua_State *L) {
|
||||
p_tcp tcp = (p_tcp) aux_checkgroup(L, "tcp{any}", 1);
|
||||
return buf_meth_getstats(L, &tcp->buf);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*\
|
||||
* Just call option handler
|
||||
\*-------------------------------------------------------------------------*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue