Exemple #1
0
void worker_main(int _worker_n)
{
    worker_n = _worker_n;
    attach_on_exit(on_exit_handler);

    if(is_daemon == 1 && !getarg("gcore")) {
        set_process_user(/*user*/ NULL, /*group*/ NULL);
    }

    if(!init_ntoa_cache() || !init_access_cache()) {
        LOGF(ERR, "Couldn't init rbtree");
        exit(1);
    }

    init_mime_types();
    shm_serv_status = _shm_serv_status->p;

    if(luaL_loadfile(_L, "core.lua")) {
        LOGF(ERR, "Couldn't load file: %s", lua_tostring(_L, -1));
        exit(1);
    }

    int mrkey = luaL_ref(_L, LUA_REGISTRYINDEX);

    lua_pushstring(_L, "__main");
    lua_rawgeti(_L, LUA_REGISTRYINDEX, mrkey);
    lua_rawset(_L, LUA_GLOBALSINDEX);

    int thread_count = 1000;

    if(getarg("thread")) {
        thread_count = atoi(getarg("thread"));

        if(thread_count < 100) {
            thread_count = 100;

        } else if(thread_count > 10000) {
            thread_count = 10000;
        }
    }

    init_lua_threads(_L, thread_count);

    /// 进入 loop 处理循环
    loop_fd = se_create(4096);
    set_loop_fd(loop_fd, _worker_n); // for coevent module
    se_accept(loop_fd, server_fd, be_accept);

    if(ssl_server_fd > 0) {
        se_accept(loop_fd, ssl_server_fd, be_ssl_accept);
    }

    se_loop(loop_fd, 10, other_simple_jobs); // loop

    exit(0);
}
Exemple #2
0
void worker_main(int _worker_n)
{
    worker_n = _worker_n;
    attach_on_exit(on_exit_handler);
    set_process_user(/*user*/ NULL, /*group*/ NULL);

    /// 进入 loop 处理循环
    loop_fd = se_create(4096);
    se_accept(loop_fd, server_fd, be_accept);

    se_loop(loop_fd, 10, other_simple_jobs); // loop

    exit(0);
}