示例#1
0
DLL_EXPORT int luaopen_libluazmq(lua_State *L)
{
    /* context metatable. */
    luaL_newmetatable(L, MT_ZMQ_CONTEXT);
    luaL_setfuncs(L, ctxmethods, 0);
    lua_pushvalue(L, -1);
    lua_setfield(L, -1, "__index");

    /* socket metatable. */
    luaL_newmetatable(L, MT_ZMQ_SOCKET);
    luaL_setfuncs(L, sockmethods, 0);
    lua_pushvalue(L, -1);
    lua_setfield(L, -1, "__index");

    lua_newtable(L);
    luaL_setfuncs(L, zmqlib, 0);
    lua_pushvalue(L, -1);

    /* Socket types. */
    set_zmq_const(PAIR);
    set_zmq_const(PUB);
    set_zmq_const(SUB);
    set_zmq_const(REQ);
    set_zmq_const(REP);
    set_zmq_const(XREQ);
    set_zmq_const(XREP);
    set_zmq_const(PULL);
    set_zmq_const(PUSH);

    /* Socket options. */
#ifdef ZMQ_HWM
    set_zmq_const(HWM);
#else
    set_zmq_const(SNDHWM);
    set_zmq_const(RCVHWM);
#endif
#ifdef ZMQ_SWAP
    set_zmq_const(SWAP);
#endif
    set_zmq_const(AFFINITY);
    set_zmq_const(IDENTITY);
    set_zmq_const(SUBSCRIBE);
    set_zmq_const(UNSUBSCRIBE);
    set_zmq_const(RATE);
    set_zmq_const(RECOVERY_IVL);
#ifdef ZMQ_MCAST_LOOP
    set_zmq_const(MCAST_LOOP);
#endif
    set_zmq_const(SNDBUF);
    set_zmq_const(RCVBUF);
    set_zmq_const(RCVMORE);
#if VERSION_2_1
    set_zmq_const(FD);
    set_zmq_const(EVENTS);
    set_zmq_const(TYPE);
    set_zmq_const(LINGER);
    set_zmq_const(RECONNECT_IVL);
    set_zmq_const(BACKLOG);

    /* POLL events */
    set_zmq_const(POLLIN);
    set_zmq_const(POLLOUT);
    set_zmq_const(POLLERR);
#endif

    /* Send/recv options. */
    set_zmq_const(NOBLOCK);
    set_zmq_const(DONTWAIT);
    set_zmq_const(SNDMORE);

    Lzmq_CharInit(L);
    Lzmq_ByteInit(L);
    Lzmq_ShortInit(L);
    Lzmq_IntInit(L);
    Lzmq_LongInit(L);
    Lzmq_FloatInit(L);
    Lzmq_DoubleInit(L);

    return 1;
}
示例#2
0
LUALIB_API int luaopen_zmq(lua_State *L)
{
    /* context metatable. */
    luaL_newmetatable(L, MT_ZMQ_CONTEXT);
    lua_createtable(L, 0, sizeof(ctxmethods) / sizeof(luaL_reg) - 1);
    luaL_register(L, NULL, ctxmethods);
    lua_setfield(L, -2, "__index");

    /* socket metatable. */
    luaL_newmetatable(L, MT_ZMQ_SOCKET);
    lua_createtable(L, 0, sizeof(sockmethods) / sizeof(luaL_reg) - 1);
    luaL_register(L, NULL, sockmethods);
    lua_setfield(L, -2, "__index");

    luaL_register(L, "zmq", zmqlib);

    /* Socket types. */
    set_zmq_const(PAIR);
    set_zmq_const(PUB);
    set_zmq_const(SUB);
    set_zmq_const(REQ);
    set_zmq_const(REP);
    set_zmq_const(XREQ);
    set_zmq_const(XREP);
    set_zmq_const(PULL);
    set_zmq_const(PUSH);

    /* Socket options. */
    set_zmq_const(HWM);
    set_zmq_const(SWAP);
    set_zmq_const(AFFINITY);
    set_zmq_const(IDENTITY);
    set_zmq_const(SUBSCRIBE);
    set_zmq_const(UNSUBSCRIBE);
    set_zmq_const(RATE);
    set_zmq_const(RECOVERY_IVL);
    set_zmq_const(MCAST_LOOP);
    set_zmq_const(SNDBUF);
    set_zmq_const(RCVBUF);
    set_zmq_const(RCVMORE);
#if VERSION_2_1
    set_zmq_const(FD);
    set_zmq_const(EVENTS);
    set_zmq_const(TYPE);
    set_zmq_const(LINGER);
    set_zmq_const(RECONNECT_IVL);
    set_zmq_const(BACKLOG);

    /* POLL events */
    set_zmq_const(POLLIN);
    set_zmq_const(POLLOUT);
    set_zmq_const(POLLERR);
#endif

    /* Send/recv options. */
    set_zmq_const(NOBLOCK);
    set_zmq_const(SNDMORE);

    return 1;
}