diff options
Diffstat (limited to 'plop.c')
-rw-r--r-- | plop.c | 59 |
1 files changed, 6 insertions, 53 deletions
@@ -1,8 +1,7 @@ +#include "plop.h" + #include <errno.h> #include <fcntl.h> -#include <lauxlib.h> -#include <lua.h> -#include <lualib.h> #include <netdb.h> #include <poll.h> #include <stdio.h> @@ -12,6 +11,10 @@ #include <sys/types.h> #include <unistd.h> +#include <lauxlib.h> +#include <lua.h> +#include <lualib.h> + #include "http.h" /// Tries to create, bind and start listening on INET server socket. @@ -178,53 +181,3 @@ int handle_server(struct pollfd * fdv, int fdc, const int size) return fdc; } - -/// 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 != luaL_dofile(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); - } -} |