当前位置: 首页>>代码示例>>C++>>正文


C++ WebServer::processRequest方法代码示例

本文整理汇总了C++中WebServer::processRequest方法的典型用法代码示例。如果您正苦于以下问题:C++ WebServer::processRequest方法的具体用法?C++ WebServer::processRequest怎么用?C++ WebServer::processRequest使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在WebServer的用法示例。


在下文中一共展示了WebServer::processRequest方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: mongoose_event_handler_web_server

/**
 * @brief Mongoose event handler.
 * The event handler is called when an event occurs associated with the WebServer
 * listening network connection.
 *
 * @param [in] mgConnection The network connection associated with the event.
 * @param [in] event The type of event.
 * @param [in] eventData Data associated with the event.
 * @return N/A.
 */
static void mongoose_event_handler_web_server(
	struct mg_connection *mgConnection, // The network connection associated with the event.
	int event, // The type of event.
	void *eventData // Data associated with the event.
) {
	if (event == MG_EV_POLL) {
		return;
	}
	ESP_LOGD(tag, "Event: %s [%d]", mongoose_eventToString(event).c_str(), mgConnection->sock);
	switch (event) {
		case MG_EV_HTTP_REQUEST: {
			struct http_message *message = (struct http_message *) eventData;
			dumpHttpMessage(message);

			struct WebServerUserData *pWebServerUserData = (struct WebServerUserData *)mgConnection->user_data;
			WebServer *pWebServer = pWebServerUserData->pWebServer;
			pWebServer->processRequest(mgConnection, message);
			break;
		} // MG_EV_HTTP_REQUEST

		case MG_EV_HTTP_MULTIPART_REQUEST: {
			struct WebServerUserData *pWebServerUserData = (struct WebServerUserData *)mgConnection->user_data;
			ESP_LOGD(tag, "User_data address 0x%d", (uint32_t)pWebServerUserData);
			WebServer *pWebServer = pWebServerUserData->pWebServer;
			if (pWebServer->m_pMultiPartFactory == nullptr) {
				return;
			}
			WebServer::HTTPMultiPart *pMultiPart = pWebServer->m_pMultiPartFactory->newInstance();
			struct WebServerUserData *p2 = new WebServerUserData();
			ESP_LOGD(tag, "New User_data address 0x%d", (uint32_t)p2);
			p2->originalUserData    = pWebServerUserData;
			p2->pWebServer          = pWebServerUserData->pWebServer;
			p2->pMultiPart          = pMultiPart;
			p2->pWebSocketHandler   = nullptr;
			mgConnection->user_data = p2;
			//struct http_message *message = (struct http_message *) eventData;
			//dumpHttpMessage(message);
			break;
		} // MG_EV_HTTP_MULTIPART_REQUEST

		case MG_EV_HTTP_MULTIPART_REQUEST_END: {
			struct WebServerUserData *pWebServerUserData = (struct WebServerUserData *)mgConnection->user_data;
			if (pWebServerUserData->pMultiPart != nullptr) {
				delete pWebServerUserData->pMultiPart;
				pWebServerUserData->pMultiPart = nullptr;
			}
			mgConnection->user_data = pWebServerUserData->originalUserData;
			delete pWebServerUserData;
			WebServer::HTTPResponse httpResponse = WebServer::HTTPResponse(mgConnection);
			httpResponse.setStatus(200);
			httpResponse.sendData("");
			break;
		} // MG_EV_HTTP_MULTIPART_REQUEST_END

		case MG_EV_HTTP_PART_BEGIN: {
			struct WebServerUserData *pWebServerUserData = (struct WebServerUserData *)mgConnection->user_data;
			struct mg_http_multipart_part *part = (struct mg_http_multipart_part *)eventData;
			ESP_LOGD(tag, "file_name: \"%s\", var_name: \"%s\", status: %d, user_data: 0x%d",
					part->file_name, part->var_name, part->status, (uint32_t)part->user_data);
			if (pWebServerUserData->pMultiPart != nullptr) {
				pWebServerUserData->pMultiPart->begin(std::string(part->var_name), std::string(part->file_name));
			}
			break;
		} // MG_EV_HTTP_PART_BEGIN

		case MG_EV_HTTP_PART_DATA: {
			struct WebServerUserData *pWebServerUserData = (struct WebServerUserData *)mgConnection->user_data;
			struct mg_http_multipart_part *part = (struct mg_http_multipart_part *)eventData;
			ESP_LOGD(tag, "file_name: \"%s\", var_name: \"%s\", status: %d, user_data: 0x%d",
					part->file_name, part->var_name, part->status, (uint32_t)part->user_data);
			if (pWebServerUserData->pMultiPart != nullptr) {
				pWebServerUserData->pMultiPart->data(mgStrToString(part->data));
			}
			break;
		} // MG_EV_HTTP_PART_DATA

		case MG_EV_HTTP_PART_END: {
			struct WebServerUserData *pWebServerUserData = (struct WebServerUserData *)mgConnection->user_data;
			struct mg_http_multipart_part *part = (struct mg_http_multipart_part *)eventData;
			ESP_LOGD(tag, "file_name: \"%s\", var_name: \"%s\", status: %d, user_data: 0x%d",
					part->file_name, part->var_name, part->status, (uint32_t)part->user_data);
			if (pWebServerUserData->pMultiPart != nullptr) {
				pWebServerUserData->pMultiPart->end();
			}
			break;
		} // MG_EV_HTTP_PART_END

		case MG_EV_WEBSOCKET_HANDSHAKE_REQUEST: {
			struct WebServerUserData *pWebServerUserData = (struct WebServerUserData *)mgConnection->user_data;
			WebServer *pWebServer = pWebServerUserData->pWebServer;
//.........这里部分代码省略.........
开发者ID:EdWeller,项目名称:esp32-snippets,代码行数:101,代码来源:WebServer.cpp


注:本文中的WebServer::processRequest方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。