90 } |
90 } |
91 |
91 |
92 /* MAYBE: Could add caching */ |
92 /* MAYBE: Could add caching */ |
93 static int event_buffer_get_data(lua_State* L) { |
93 static int event_buffer_get_data(lua_State* L) { |
94 le_buffer* buf = event_buffer_check(L, 1); |
94 le_buffer* buf = event_buffer_check(L, 1); |
95 lua_pushlstring(L, (const char*)EVBUFFER_DATA(buf->buffer), EVBUFFER_LENGTH(buf->buffer)); |
95 int begin, len; |
|
96 switch(lua_gettop(L)) { |
|
97 case 1: |
|
98 /* Obtain full data */ |
|
99 begin = 0; |
|
100 len = EVBUFFER_LENGTH(buf->buffer); |
|
101 break; |
|
102 case 2: |
|
103 begin = 0; |
|
104 len = luaL_checkinteger(L, 2); |
|
105 if(len > EVBUFFER_LENGTH(buf->buffer)) |
|
106 len = EVBUFFER_LENGTH(buf->buffer); |
|
107 break; |
|
108 case 3: |
|
109 default: |
|
110 begin = luaL_checkinteger(L, 2); |
|
111 len = luaL_checkinteger(L, 3); |
|
112 if(begin > EVBUFFER_LENGTH(buf->buffer)) |
|
113 begin = EVBUFFER_LENGTH(buf->buffer); |
|
114 if(begin + len > EVBUFFER_LENGTH(buf->buffer)) |
|
115 len = EVBUFFER_LENGTH(buf->buffer) - begin; |
|
116 break; |
|
117 } |
|
118 lua_pushlstring(L, (const char*)EVBUFFER_DATA(buf->buffer) + begin, len); |
96 return 1; |
119 return 1; |
97 } |
120 } |
98 |
121 |
99 static int event_buffer_drain(lua_State* L) { |
122 static int event_buffer_drain(lua_State* L) { |
100 le_buffer* buf = event_buffer_check(L, 1); |
123 le_buffer* buf = event_buffer_check(L, 1); |