示例#1
0
void WebRequest::process (void)
{
	int index;
	static int count = 0;
	char buffer[100];
	WebPage *page;


	log (LOG_WEBSOCKET, "Process: %s, %s, %s", method, path, protocol);

	for (index = 0; index < number_of_arguments; index ++)
	{
		log (LOG_WEBSOCKET, "   Arg : %-15s = %s", argument_key[index], argument_value[index]);
	}

	for (index = 0; index < number_of_headers; index ++)
	{
		log (LOG_WEBSOCKET, "   Head: %-15s = %s", header_key[index], header_value[index]);
	}

	page = WebPage::find (path);

	if (page)
	{
		log (LOG_WEBSOCKET, "    Page = %p", page);

		if (page->process (this))
		{
			end_response ();
		}
	}
	else
	{
		page = WebPage::open (path);

		if ((page) && (page->process (this)))
		{
			end_response ();
		}
		else
		{
			add_response_part ("request_path", path);
			add_response_part ("page_left", "");
			add_response_part ("page_right", "Page Not Found : ${request_path}");
			add_template_response ("${page_layout}", strlen ("${page_layout}"));
			set_response_code (404);
			end_response ();
		}
	}

	socket->close_when_written ();
}
示例#2
0
  std::unique_ptr<Reply> HandleMessage(Message* message) override {
    auto payload = ToPropertyMapPayload(message->payload());
    if (!payload) {
      WDS_ERROR("Failed to obtain payload in M5 handler.");
      return nullptr;
    }
    auto property =
        static_cast<rtsp::TriggerMethod*>(payload->GetProperty(rtsp::TriggerMethodPropertyType).get());

    auto reply = std::unique_ptr<Reply>(new Reply(rtsp::STATUS_OK));
    reply->header().set_cseq(message->cseq());
    if (property->method() != rtsp::TriggerMethod::SETUP) {
      reply->set_response_code(rtsp::STATUS_SeeOther);
    }

    return reply;
  }