/* Mounts a Router instance to the server. */ void WebApp::use(Router * router) { Router * routerNode = m_routerTail; while(routerNode->getNext() != NULL){ routerNode = routerNode->getNext(); } routerNode->setNext(router); }
/* Processes an incoming connection with request buffer and length given as parameters. */ void WebApp::process(Client *client, char *buff, int bufflen) { m_clientObject = client; bool routeMatch = false; if (m_clientObject != NULL) { m_request.init(m_clientObject, buff, bufflen); m_response.init(m_clientObject); m_request.processRequest(); if (m_request.method() == Request::INVALID) { m_failureCommand(m_request, m_response); } else { m_request.processHeaders(m_headerTail); Router* routerNode = m_routerTail; while(routerNode != NULL){ if (routerNode->dispatchCommands(m_request, m_response)) { routeMatch = true; } routerNode = routerNode->getNext(); } if (!routeMatch) { m_notFoundCommand(m_request, m_response); } } m_request.reset(); m_response.reset(); } }