fixed socket options [jugg]

lua-zmq
Aleksey Yeschenko 16 years ago
parent f6c1bcb8a8
commit 253d931a77

44
zmq.c

@ -119,10 +119,10 @@ static int Lzmq_setsockopt(lua_State *L)
int rc = 0; int rc = 0;
switch (option) { switch (option) {
case ZMQ_HWM:
case ZMQ_LWM:
case ZMQ_SWAP: case ZMQ_SWAP:
case ZMQ_AFFINITY: case ZMQ_RATE:
case ZMQ_RECOVERY_IVL:
case ZMQ_MCAST_LOOP:
{ {
int64_t optval = (int64_t) luaL_checklong(L, 3); int64_t optval = (int64_t) luaL_checklong(L, 3);
rc = zmq_setsockopt(s->ptr, option, (void *) &optval, sizeof(int64_t)); rc = zmq_setsockopt(s->ptr, option, (void *) &optval, sizeof(int64_t));
@ -137,9 +137,8 @@ static int Lzmq_setsockopt(lua_State *L)
rc = zmq_setsockopt(s->ptr, option, (void *) optval, optvallen); rc = zmq_setsockopt(s->ptr, option, (void *) optval, optvallen);
} }
break; break;
case ZMQ_RATE: case ZMQ_HWM:
case ZMQ_RECOVERY_IVL: case ZMQ_AFFINITY:
case ZMQ_MCAST_LOOP:
case ZMQ_SNDBUF: case ZMQ_SNDBUF:
case ZMQ_RCVBUF: case ZMQ_RCVBUF:
{ {
@ -168,12 +167,14 @@ static int Lzmq_getsockopt(lua_State *L)
int rc = 0; int rc = 0;
switch (option) { switch (option) {
case ZMQ_HWM:
case ZMQ_LWM:
case ZMQ_SWAP: case ZMQ_SWAP:
case ZMQ_AFFINITY: case ZMQ_RATE:
case ZMQ_RECOVERY_IVL:
case ZMQ_MCAST_LOOP:
case ZMQ_RCVMORE:
{ {
int64_t optval; int64_t optval;
optvallen = sizeof(int64_t);
rc = zmq_getsockopt(s->ptr, option, (void *) &optval, &optvallen); rc = zmq_getsockopt(s->ptr, option, (void *) &optval, &optvallen);
if (rc == 0) { if (rc == 0) {
lua_pushinteger(L, (lua_Integer) optval); lua_pushinteger(L, (lua_Integer) optval);
@ -181,18 +182,26 @@ static int Lzmq_getsockopt(lua_State *L)
} }
} }
break; break;
/* case ZMQ_IDENTITY: case ZMQ_IDENTITY:
* case ZMQ_SUBSCRIBE: {
* case ZMQ_UNSUBSCRIBE: char id[256];
*/ memset((void *)id, '\0', 256);
case ZMQ_RATE: optvallen = 256;
case ZMQ_RECOVERY_IVL: rc = zmq_getsockopt(s->ptr, option, (void *)id, &optvallen);
case ZMQ_MCAST_LOOP: id[255] = '\0';
if (rc == 0) {
lua_pushstring(L, id);
return 1;
}
}
break;
case ZMQ_HWM:
case ZMQ_AFFINITY:
case ZMQ_SNDBUF: case ZMQ_SNDBUF:
case ZMQ_RCVBUF: case ZMQ_RCVBUF:
case ZMQ_RCVMORE:
{ {
uint64_t optval; uint64_t optval;
optvallen = sizeof(uint64_t);
rc = zmq_getsockopt(s->ptr, option, (void *) &optval, &optvallen); rc = zmq_getsockopt(s->ptr, option, (void *) &optval, &optvallen);
if (rc == 0) { if (rc == 0) {
lua_pushinteger(L, (lua_Integer) optval); lua_pushinteger(L, (lua_Integer) optval);
@ -344,7 +353,6 @@ LUALIB_API int luaopen_zmq(lua_State *L)
set_zmq_const(DOWNSTREAM); set_zmq_const(DOWNSTREAM);
set_zmq_const(HWM); set_zmq_const(HWM);
set_zmq_const(LWM);
set_zmq_const(SWAP); set_zmq_const(SWAP);
set_zmq_const(AFFINITY); set_zmq_const(AFFINITY);
set_zmq_const(IDENTITY); set_zmq_const(IDENTITY);

Loading…
Cancel
Save