Example #1
0
static int luazmq_skt_send_msg (lua_State *L) {
  zsocket *skt  = luazmq_getsocket(L);
  zmessage *msg = luazmq_getmessage_at(L,2);
  int flags = luaL_optint(L,3,0);
  int ret = zmq_msg_send(&msg->msg, skt->skt, flags);
  if(-1 == ret) return luazmq_fail(L, skt);
  return luazmq_pass(L);
}
Example #2
0
File: zmsg.c Project: jrossi/lzmq
static int luazmq_msg_copy(lua_State *L){
  zmessage *dst, *src;
  int err;
  if(lua_gettop(L) == 1){
    src = luazmq_getmessage_at(L, 1);
    dst = luazmq_newudata(L, zmessage, LUAZMQ_MESSAGE);
    err = zmq_msg_init(&dst->msg);
    if(-1 == err) return luazmq_fail(L, NULL);
  }
  else{
    dst = luazmq_getmessage_at(L, 1);
    src = luazmq_getmessage_at(L, 2);
    lua_pushvalue(L, 1); // result
  }

  err = zmq_msg_copy(&dst->msg, &src->msg);
  if(-1 == err) return luazmq_fail(L, NULL);
  return 1;
}
Example #3
0
static int luazmq_skt_recv_new_msg (lua_State *L){
  if(lua_isuserdata(L,2)) return luazmq_skt_recv_msg(L);
  luaL_optint(L, 2, 0);
  {
    int n = luazmq_msg_init(L);
    if(n != 1)return n;
    lua_insert(L, 2);
    n = luazmq_skt_recv_msg(L);
    if(lua_isnil(L, -n)){
      zmessage *msg = luazmq_getmessage_at(L, 2);
      zmq_msg_close(&msg->msg);
      msg->flags |= LUAZMQ_FLAG_CLOSED;
    }
    return n;
  }
}
Example #4
0
static int luazmq_skt_recv_msg (lua_State *L) {
  zsocket *skt  = luazmq_getsocket(L);
  zmessage *msg = luazmq_getmessage_at(L,2);
  int flags     = luaL_optint(L,3,0);
  int ret = zmq_msg_recv(&msg->msg, skt->skt, flags);

  if(-1 == ret) return luazmq_fail(L, skt);

  lua_settop(L, 2); // remove flags
  if( zmq_msg_more(&msg->msg) ){
    skt->flags |= LUAZMQ_FLAG_MORE;
    lua_pushboolean(L, 1);
  }
  else{
    skt->flags &= ~LUAZMQ_FLAG_MORE;
    lua_pushboolean(L, 0);
  }
  return 2;
}