Пример #1
0
/* 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);
}
Пример #2
0
/* 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();
  }
}