Esempio n. 1
0
int main(int argc, char **argv) {
    zn_Timer *t1, *t2;
    strcpy(addr, "127.0.0.1");
    if (argc == 2) {
        unsigned p = atoi(argv[1]);
        if (p != 0) port = p;
    }
    else if (argc == 3) {
        unsigned p = atoi(argv[2]);
        strcpy(addr, argv[1]);
        if (p != 0) port = p;
    }

    init_data();
    zn_initialize();
    S = zn_newstate();
    zn_initbuffpool(&pool);
    if (S == NULL)
        return 2;

    t1 = zn_newtimer(S, on_timer, NULL);
    zn_starttimer(t1, INTERVAL);

    t2 = zn_newtimer(S, on_client, NULL);
    zn_starttimer(t2, 0);

    return zn_run(S, ZN_RUN_LOOP);
}
Esempio n. 2
0
int main(int argc, char **argv) {
    unsigned port = 12345;
    zn_Accept *accept;
    zn_Timer *timer;
    if (argc == 2) {
        unsigned p = atoi(argv[1]);
        if (p != 0) port = port;
    }

    zn_initialize();
    S = zn_newstate();
    zn_initbuffpool(&pool);
    if (S == NULL)
        return 2;

    accept = zn_newaccept(S);
    if (accept == NULL)
        return 2;
    zn_listen(accept, "0.0.0.0", port);
    zn_accept(accept, on_accept, NULL);
    printf("listening at: %u\n", port);

    timer = zn_newtimer(S, on_timer, NULL);
    zn_starttimer(timer, INTERVAL);

    return zn_run(S, ZN_RUN_LOOP);
}
Esempio n. 3
0
inline TimerID EventLoop::createTimer(zn_Time delayms, OnTimerHandler&& h)
{
    auto t = zn_newtimer(S, timer_cb, this);
    timers[t] = std::move(h);
    zn_starttimer(t, delayms);
    return t;
}
Esempio n. 4
0
static void on_summary(void *ud, zn_Timer *timer, unsigned elapsed) {
    printf("%u: ", zn_time());
    if (is_client)
        print_ud(&client, "client");
    else
        print_ud(&server, "server");
    printf("\n");
    zn_starttimer(timer, 1000);
}
Esempio n. 5
0
static int Ltimer_start(lua_State *L) {
    lzn_Timer *obj = (lzn_Timer*)lbind_check(L, 1, &lbT_Timer);
    lua_Integer delayms = luaL_optinteger(L, 2, 0);
    if (!obj->timer) return 0;
    if (delayms < 0) delayms = 0;
    obj->delayms = (unsigned)delayms;
    if (zn_starttimer(obj->timer, obj->delayms))
        lzn_ref(L, 1, &obj->ref);
    lbind_returnself(L);
}
Esempio n. 6
0
int main(int argc, const char **argv) {
    int i, client_count = 1;
    if (argc == 2 && strcmp(argv[1], "-h") == 0) {
        printf("usage: %s [(client/server) [ip [port]]]\n", argv[0]);
        exit(0);
    }
    if (argc > 1) {
        size_t n = strlen(argv[1]);
        if (n >= 6 && memcmp(argv[1], "client", 6) == 0) {
            is_client = 1;
            if (n > 6) client_count = atoi(argv[1] + 6);
        }
    }
    if (argc > 2) {
        strncpy(addr, argv[2], ZN_MAX_ADDRLEN-1);
    }
    if (argc > 3) {
        unsigned p = atoi(argv[3]);
        if (p != 0) port = p;
    }

    zn_initialize();
    printf("znet engine: %s\n", zn_engine());
    if ((S = zn_newstate()) == NULL) return 2;

    zn_initbuffpool(&pool);
    {
        unsigned short dlen = htons(BLOCK_SIZE-2);
        memcpy(send_data, &dlen, 2);
    }

    if (is_client) {
        printf("client count: %d\n", client_count);
        printf("connecting to %s:%d ...\n", addr, port);
        for (i = 0; i < client_count; ++i)
            zn_post(S, new_connection, NULL);
    }
    else {
        zn_Accept *accept;
        if ((accept = zn_newaccept(S)) == NULL) return 2;
        zn_listen(accept, addr, port);
        zn_accept(accept, on_accept, NULL);
        printf("listening at %s:%d ...\n", addr, port);
    }

    zn_starttimer(zn_newtimer(S, on_summary, NULL), 1000);

    register_interrupted();
    return zn_run(S, ZN_RUN_LOOP);
}
Esempio n. 7
0
static zn_Time lzn_ontimer(void *ud, zn_Timer *timer, zn_Time elapsed) {
    lzn_Timer *obj = (lzn_Timer*)ud;
    lua_State *L = obj->L;
    lua_rawgeti(L, LUA_REGISTRYINDEX, obj->ontimer_ref);
    lua_rawgeti(L, LUA_REGISTRYINDEX, obj->ref);
    lua_pushinteger(L, (lua_Integer)elapsed);
    if (lbind_pcall(L, 2, 1) != LUA_OK) {
        fprintf(stderr, "%s\n", lua_tostring(L, -1));
        lzn_unref(L, &obj->ref);
    }
    else if (lua_isinteger(L, -1)) {
        lua_Integer ret = lua_tointeger(L, -1);
        return ret >= 0 ? (zn_Time)ret : 0;
    }
    else if (lua_toboolean(L, -1))
        zn_starttimer(timer, obj->delayms);
    else
        lzn_unref(L, &obj->ref);
    lua_pop(L, 1);
    return 0;
}
Esempio n. 8
0
int main(int argc, const char **argv) {
    if (argc == 2 && strcmp(argv[1], "-h") == 0) {
        printf("usage: %s [(client/server) [ip [port]]]\n", argv[0]);
        exit(0);
    }
    if (argc > 1) {
        if (strcmp(argv[1], "client") == 0)
            is_client = 1;
    }
    if (argc > 2) {
        strncpy(addr, argv[2], ZN_MAX_ADDRLEN-1);
    }
    if (argc > 3) {
        unsigned p = atoi(argv[3]);
        if (p != 0) port = p;
    }

    zn_initialize();
    if ((S = zn_newstate()) == NULL) return 2;

    if (is_client) {
        zn_Tcp *tcp;
        if ((tcp = zn_newtcp(S)) == NULL) return 2;
        zn_connect(tcp, addr, port, on_connect, NULL);
        printf("connecting to %s:%d ...\n", addr, port);
    }
    else {
        zn_Accept *accept;
        if ((accept = zn_newaccept(S)) == NULL) return 2;
        zn_listen(accept, addr, port);
        zn_accept(accept, on_accept, NULL);
        printf("listening at %s:%d ...\n", addr, port);
    }


    zn_starttimer(zn_newtimer(S, on_summary, NULL), 1000);

    register_interrupted();
    return zn_run(S, ZN_RUN_LOOP);
}