inline StringBuffer &endpointXML(IConstRoxieControlEndpointInfo &ep, StringBuffer &xml) { appendXMLOpenTag(xml, "EndPoint", NULL, false); appendXMLAttr(xml, "address", ep.getAddress()); if (!ep.getAttached_isNull()) appendXMLAttr(xml, "attached", ep.getAttached() ? "true" : "false"); appendXMLAttr(xml, "hash", ep.getStateHash()); xml.append("/>"); return xml; }
unsigned CLoggingManager::serializeLogRequestContent(IEspUpdateLogRequestWrap* request, const char* GUID, StringBuffer& logData) { appendXMLTag(logData, LOGREQUEST_GUID, GUID); const char* option = request->getOption(); if (!isEmptyString(option)) appendXMLTag(logData, LOGREQUEST_OPTION, option); appendXMLOpenTag(logData, LOGREQUEST); const char* logRequest = request->getUpdateLogRequest(); MemoryBuffer memBuf; LZWCompress(logRequest, strlen(logRequest), memBuf, 0x100); JBASE64_Encode(memBuf.toByteArray(), memBuf.length(), logData); appendXMLCloseTag(logData, LOGREQUEST); return logData.length(); }
bool CLoggingManager::updateLog(IEspContext* espContext, IEspUpdateLogRequestWrap& req, IEspUpdateLogResponse& resp) { if (!initialized) throw MakeStringException(-1,"LoggingManager not initialized"); try { if (espContext) espContext->addTraceSummaryTimeStamp(LogMin, "LMgr:startQLog"); if (oneTankFile) { Owned<CLogRequestInFile> reqInFile = new CLogRequestInFile(); if (!saveToTankFile(req, reqInFile)) throw MakeStringException(-1, "LoggingManager: failed in saveToTankFile()."); //Build new log request for logging agents StringBuffer logContent, v; appendXMLOpenTag(logContent, LOGCONTENTINFILE); appendXMLTag(logContent, LOGCONTENTINFILE_FILENAME, reqInFile->getFileName()); appendXMLTag(logContent, LOGCONTENTINFILE_FILEPOS, v.append(reqInFile->getPos())); appendXMLTag(logContent, LOGCONTENTINFILE_FILESIZE, v.clear().append(reqInFile->getSize())); appendXMLTag(logContent, LOGREQUEST_GUID, reqInFile->getGUID()); appendXMLCloseTag(logContent, LOGCONTENTINFILE); Owned<IEspUpdateLogRequest> logRequest = new CUpdateLogRequest("", ""); logRequest->setOption(reqInFile->getOption()); logRequest->setLogContent(logContent); for (unsigned int x = 0; x < loggingAgentThreads.size(); x++) { IUpdateLogThread* loggingThread = loggingAgentThreads[x]; if (loggingThread->hasService(LGSTUpdateLOG)) { loggingThread->queueLog(logRequest); } } } else { for (unsigned int x = 0; x < loggingAgentThreads.size(); x++) { IUpdateLogThread* loggingThread = loggingAgentThreads[x]; if (loggingThread->hasService(LGSTUpdateLOG)) { loggingThread->queueLog(&req); } } } if (espContext) espContext->addTraceSummaryTimeStamp(LogMin, "LMgr:endQLog"); } catch (IException* e) { StringBuffer errorStr; e->errorMessage(errorStr); ERRLOG("Failed to update log: %s",errorStr.str()); resp.setStatusCode(-1); resp.setStatusMessage(errorStr.str()); e->Release(); } return true; }