1 /* LuaEvent - Copyright (C) 2007 Thomas Harning <harningt@gmail.com> |
1 /* LuaEvent - Copyright (C) 2007 Thomas Harning <harningt@gmail.com> |
2 * Licensed as LGPL - See doc/COPYING for details */ |
2 * Licensed as LGPL - See doc/COPYING for details */ |
|
3 #include <stdlib.h> |
3 #include "buffer_event.h" |
4 #include "buffer_event.h" |
4 #include "utility.h" |
5 #include "utility.h" |
5 #include <lauxlib.h> |
6 #include <lauxlib.h> |
6 #include <stdlib.h> |
|
7 #include "event_buffer.h" |
7 #include "event_buffer.h" |
8 |
8 |
9 #define BUFFER_EVENT_MT "BUFFER_EVENT_MT" |
9 #define BUFFER_EVENT_MT "BUFFER_EVENT_MT" |
10 |
10 |
11 /* Locations of READ/WRITE buffers in the fenv */ |
11 /* Locations of READ/WRITE buffers in the fenv */ |
151 if(!ev->ev) return 0; |
151 if(!ev->ev) return 0; |
152 |
152 |
153 low = lua_tonumber(L, 2); |
153 low = lua_tonumber(L, 2); |
154 high = lua_tonumber(L, 3); |
154 high = lua_tonumber(L, 3); |
155 |
155 |
156 ev->ev->wm_read.low = low; |
156 bufferevent_setwatermark(ev->ev, EV_READ, low, high); |
157 ev->ev->wm_read.high = high; |
|
158 return 0; |
157 return 0; |
159 } |
158 } |
160 |
159 |
161 static int buffer_event_set_write_watermarks(lua_State* L) { |
160 static int buffer_event_set_write_watermarks(lua_State* L) { |
162 int low, high; |
161 int low, high; |
164 if(!ev->ev) return 0; |
163 if(!ev->ev) return 0; |
165 |
164 |
166 low = lua_tonumber(L, 2); |
165 low = lua_tonumber(L, 2); |
167 high = lua_tonumber(L, 3); |
166 high = lua_tonumber(L, 3); |
168 |
167 |
169 ev->ev->wm_write.low = low; |
168 bufferevent_setwatermark(ev->ev, EV_WRITE, low, high); |
170 ev->ev->wm_write.high = high; |
169 return 0; |
171 return 0; |
|
172 } |
|
173 |
|
174 static int buffer_event_get_read_watermarks(lua_State* L) { |
|
175 le_bufferevent* ev = buffer_event_get(L, 1); |
|
176 if(!ev->ev) return 0; |
|
177 |
|
178 lua_pushinteger(L, ev->ev->wm_read.low); |
|
179 lua_pushinteger(L, ev->ev->wm_read.high); |
|
180 return 2; |
|
181 } |
|
182 |
|
183 static int buffer_event_get_write_watermarks(lua_State* L) { |
|
184 le_bufferevent* ev = buffer_event_get(L, 1); |
|
185 if(!ev->ev) return 0; |
|
186 |
|
187 lua_pushinteger(L, ev->ev->wm_write.low); |
|
188 lua_pushinteger(L, ev->ev->wm_write.high); |
|
189 return 2; |
|
190 } |
170 } |
191 |
171 |
192 static int buffer_event_set_timeouts(lua_State* L) { |
172 static int buffer_event_set_timeouts(lua_State* L) { |
193 int timeout_read, timeout_write; |
173 int timeout_read, timeout_write; |
194 le_bufferevent* ev = buffer_event_get(L, 1); |
174 le_bufferevent* ev = buffer_event_get(L, 1); |
197 timeout_read = lua_tointeger(L, 2); |
177 timeout_read = lua_tointeger(L, 2); |
198 timeout_write = lua_tointeger(L, 3); |
178 timeout_write = lua_tointeger(L, 3); |
199 |
179 |
200 bufferevent_settimeout(ev->ev, timeout_read, timeout_write); |
180 bufferevent_settimeout(ev->ev, timeout_read, timeout_write); |
201 return 0; |
181 return 0; |
202 } |
|
203 |
|
204 static int buffer_event_get_timeouts(lua_State* L) { |
|
205 le_bufferevent* ev = buffer_event_get(L, 1); |
|
206 if(!ev->ev) return 0; |
|
207 |
|
208 lua_pushinteger(L, ev->ev->timeout_read); |
|
209 lua_pushinteger(L, ev->ev->timeout_write); |
|
210 return 2; |
|
211 } |
182 } |
212 |
183 |
213 static int buffer_event_enable(lua_State* L) { |
184 static int buffer_event_enable(lua_State* L) { |
214 le_bufferevent* ev = buffer_event_get(L, 1); |
185 le_bufferevent* ev = buffer_event_get(L, 1); |
215 if(!ev->ev) return 0; |
186 if(!ev->ev) return 0; |
229 static luaL_Reg buffer_event_funcs[] = { |
200 static luaL_Reg buffer_event_funcs[] = { |
230 {"get_read", buffer_event_get_read}, |
201 {"get_read", buffer_event_get_read}, |
231 {"get_write", buffer_event_get_write}, |
202 {"get_write", buffer_event_get_write}, |
232 {"set_read_watermarks", buffer_event_set_read_watermarks}, |
203 {"set_read_watermarks", buffer_event_set_read_watermarks}, |
233 {"set_write_watermarks", buffer_event_set_write_watermarks}, |
204 {"set_write_watermarks", buffer_event_set_write_watermarks}, |
234 {"get_read_watermarks", buffer_event_get_read_watermarks}, |
|
235 {"get_write_watermarks", buffer_event_get_write_watermarks}, |
|
236 {"set_timeouts", buffer_event_set_timeouts}, |
205 {"set_timeouts", buffer_event_set_timeouts}, |
237 {"get_timeouts", buffer_event_get_timeouts}, |
|
238 {"enable", buffer_event_enable}, |
206 {"enable", buffer_event_enable}, |
239 {"disable", buffer_event_disable}, |
207 {"disable", buffer_event_disable}, |
240 {NULL, NULL} |
208 {NULL, NULL} |
241 }; |
209 }; |
242 |
210 |