#include #include #include #include #include #include "plop.h" /// Standard entry point for the program. /// \param argc Argument count /// \param argv Argument array /// \return Error code int main(int argc, char ** argv) { lua_State * L = luaL_newstate(); luaL_openlibs(L); if (3 != argc) { return 1; // TODO: Document error codes/print usage information } if (LUA_OK != load_handler(L, argv[2])) { return 2; // TODO: Document error codes/print usage information } static const int max_clients = 200; int fdc = 0; struct request * requests[max_clients]; struct pollfd fdv[max_clients]; memset(requests, 0, sizeof(requests)); memset(fdv, 0, sizeof(fdv)); fdv[0].fd = make_server(NULL, argv[1]); fdv[0].events = POLLIN; fdc++; if (-1 == fdv[0].fd) { return 1; // TODO: Document error codes/print usage information } while (0 < fdc && -1 != poll(fdv, fdc, -1)) { int shift_by = 0; for (int i = 1; i < fdc; ++i) { shift_by = handle_client(L, &fdv[i], &requests[i], shift_by); } fdc = handle_server(fdv, fdc - shift_by, max_clients); } }