diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Image.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Image.cpp index 0a638e8..bb3b00d 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Image.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Image.cpp @@ -1,5 +1,16 @@ #include "../XEngine_Hdr.h" +// 处理图片相关HTTP任务请求。 +// 参数说明: +// 1) lpszClientAddr: 客户端地址,用于回复与日志。 +// 2) lpszMsgBuffer/nMsgLen: 图片二进制数据及长度(用于设置类操作)。 +// 3) ppptszList/nListCount: HTTP附加参数列表,至少包含操作码及相关参数。 +// 流程说明: +// - 根据编译开关检查是否支持OpenCV能力; +// - 解析操作码并分发到不同图片处理分支(获取/设置/扩展操作); +// - 对参数数量与格式进行校验; +// - 调用底层ModuleHelp_ImageSet_*接口处理; +// - 无论成功或失败,均封包并发送HTTP响应,同时记录日志。 bool HTTPTask_TaskPost_Image(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR*** ppptszList, int nListCount) { int nSDLen = 0; @@ -8,17 +19,20 @@ bool HTTPTask_TaskPost_Image(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int CXEngine_MemoryPoolEx m_MemorySend(XENGINE_MEMORY_SIZE_MAX); #if (0 == _XENGINE_BUILD_SWITCH_OPENCV) + // 编译时未启用OpenCV能力:直接返回“不支持”错误。 ModuleProtocol_Packet_Common(m_MemorySend.get(), &nSDLen, ERROR_XENGINE_PROTOCL_HTTP_NOTSUPPORT,_X("not support")); XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求图片操作失败,服务器没有启用此功能"), lpszClientAddr); return false; #else + // 从参数列表中提取操作码(示例:opcode=0/1/...)。 BaseLib_String_GetKeyValue((*ppptszList)[1], "=", tszHTTPKey, tszHTTPVlu); int nOPCode = _ttxoi(tszHTTPVlu); - //0获取,1设置 + // 0获取,1设置,其它值进入扩展图像处理分支 if (0 == nOPCode) { + // 获取配置/状态类请求前,先检查服务开关。 if (!st_ServiceConfig.st_XImageText.bEnable) { ModuleProtocol_Packet_Common(m_MemorySend.get(), &nSDLen, ERROR_XENGINE_PROTOCL_HTTP_DISABLE, _X("function is disable")); @@ -62,6 +76,7 @@ bool HTTPTask_TaskPost_Image(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } else { + // 扩展图片处理分支:要求至少包含操作参数与文件后缀等关键字段。 if (nListCount < 4) { ModuleProtocol_Packet_Common(m_MemorySend.get(), &nSDLen, ERROR_XENGINE_PROTOCL_HTTP_FAILURE, _X("image operator failure")); @@ -69,6 +84,7 @@ bool HTTPTask_TaskPost_Image(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求设置图像数据失败,因为附加参数不正确,参数个数:%d"), lpszClientAddr, nListCount); return false; } + // 解析并缓存图片后缀名,供后续压缩/变换接口选择编码器使用。 XCHAR tszFileExt[XPATH_MAX]; memset(tszFileExt, '\0', sizeof(tszFileExt));