⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stafmonitorservice.cpp

📁 Software Testing Automation Framework (STAF)的开发代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
                        if ((machineIterator = pData->fMap.find(listMachine.toUpperCase()))                != pData->fMap.end())            {                NameMap::iterator nameIterator;                for(nameIterator = machineIterator->second.nameMap.begin();                    nameIterator != machineIterator->second.nameMap.end();                    ++nameIterator)                {                    STAFObjectPtr nameInfoMap =                        pData->fNameInfoClass->createInstance();                    nameInfoMap->put("name",                        nameIterator->second.originalCaseName);                    nameInfoMap->put("timestamp",                        nameIterator->second.message.subString(0,17));                    nameInfoMap->put("size",                        STAFString(nameIterator->second.message.length()));                    nameList->append(nameInfoMap);                }            }            mc->setRootObject(nameList);        }        else        {            // Set the map class definitions for the marshalling context            mc->setMapClassDefinition(pData->fHandleInfoClass->reference());            // Create a empty list object for the marshalled list of handles            // for the specified machine            STAFObjectPtr handleList = STAFObject::createList();                        if ((machineIterator = pData->fMap.find(listMachine.toUpperCase()))                != pData->fMap.end())            {                HandleMap::iterator handleIterator;                for(handleIterator = machineIterator->second.handleMap.begin();                    handleIterator != machineIterator->second.handleMap.end();                    ++handleIterator)                {                    STAFObjectPtr handleInfoMap =                        pData->fHandleInfoClass->createInstance();                    handleInfoMap->put("handle", handleIterator->first);                    handleInfoMap->put("timestamp",                                       handleIterator->second.subString(0,17));                    handleInfoMap->put("size",                                   STAFString(handleIterator->second.length()));                    handleList->append(handleInfoMap);                }            }            mc->setRootObject(handleList);        }    }    return STAFResultPtr(new STAFResult(kSTAFOk, mc->marshall()),                          STAFResultPtr::INIT);}STAFResultPtr handleDelete(STAFServiceRequestLevel30 *pInfo,                            MonitorServiceData *pData){    STAFString result;    STAFRC_t rc = kSTAFOk;    // Verify the requesting machine/user has at least trust level 4    VALIDATE_TRUST(4, pData->fShortName, "DELETE", pData->fLocalMachineName);    // Parse the request    STAFCommandParseResultPtr parsedResult = pData->fDeleteParser->parse(        pInfo->request);    if (parsedResult->rc != kSTAFOk)    {        return STAFResultPtr(new STAFResult(kSTAFInvalidRequestString,                             parsedResult->errorBuffer), STAFResultPtr::INIT);    }    if (pData->fMap.begin() == pData->fMap.end())    {        result = "There are no entries in the Monitor Log." + lineSep;        return STAFResultPtr(new STAFResult(kSTAFOk, result),                             STAFResultPtr::INIT);    }     else if (parsedResult->optionTimes(sBefore) != 0)    {                MachineMap::iterator machineIterator;        HandleMap::iterator handleIterator;                STAFMutexSemLock lock(*pData->fMapSem);        STAFString beforeDateString = parsedResult->optionValue(sBefore);                                                try        {            if (beforeDateString.isEqualTo(sToday, kSTAFStringCaseInsensitive))            {                   beforeDateString =                     (STAFTimestamp::now().asString()).subString(0,8);            }                       STAFTimestamp beforeTimeStamp = STAFTimestamp(beforeDateString);                                   for(machineIterator = pData->fMap.begin();                machineIterator != pData->fMap.end(); ++machineIterator)            {                for(handleIterator = machineIterator->second.handleMap.begin();                    handleIterator != machineIterator->second.handleMap.end();                    )                                {                                          if (STAFTimestamp(handleIterator->second.subString(0,8)) <                            beforeTimeStamp)                     machineIterator->second.handleMap.erase(handleIterator++);                    else                                         handleIterator++;                                }            }        }        catch(STAFTimestampInvalidDateException &e)        {            result = "Invalid Date format.  YYYYMMDD, MM/DD/YY, or ";            result += "MM/DD/YYYY" + lineSep;            result += getExceptionString(e) + lineSep;            return STAFResultPtr(new STAFResult(kSTAFInvalidValue,                                 result), STAFResultPtr::INIT);        }                catch (STAFException &e)        {             result = getExceptionString(e,                    "STAFMonitorSerice.cpp: Delete ").adoptImpl();            return STAFResultPtr(new STAFResult(kSTAFInvalidRequestString,                                 result), STAFResultPtr::INIT);                        }        catch (...)        {            result = "Unknown exception caught in STAFMonitorService ";                        return STAFResultPtr(new STAFResult(kSTAFUnknownError,                                 result), STAFResultPtr::INIT);        }        }      else    {        pData->fMap.clear();    }      return STAFResultPtr(new STAFResult(kSTAFOk, STAFString()),                         STAFResultPtr::INIT);}STAFResultPtr handleSet(STAFServiceRequestLevel30 *pInfo,                         MonitorServiceData *pData){    // Verify the requesting machine/user has at least trust level 5    VALIDATE_TRUST(5, pData->fShortName, "SET", pData->fLocalMachineName);    // Parse the request    STAFCommandParseResultPtr parsedResult =         pData->fSetParser->parse(pInfo->request);    if (parsedResult->rc != kSTAFOk)    {        return STAFResultPtr(new STAFResult(kSTAFInvalidRequestString,                             parsedResult->errorBuffer), STAFResultPtr::INIT);    }    if (parsedResult->optionTimes(sMaxRecordSize) != 0)    {                  STAFResultPtr maxResult = resolveOp(pInfo, pData, parsedResult,                                            sMaxRecordSize);        if (maxResult->rc != kSTAFOk) return maxResult;        if (!maxResult->result.isDigits())        {            maxResult->rc = kSTAFInvalidValue;            return maxResult;        }        pData->fMaxRecordSize = maxResult->result.asUInt();    }        if (parsedResult->optionTimes(sResolveMessage) != 0)    {        pData->fResolveMessage = 1;    }    else if (parsedResult->optionTimes(sNoResolveMessage) != 0)    {        pData->fResolveMessage = 0;    }    if (parsedResult->optionTimes(sEnableResolveMessageVar) != 0)    {        pData->fEnableResolveMessageVar = 1;    }    else if (parsedResult->optionTimes(sDisableResolveMessageVar) != 0)    {        pData->fEnableResolveMessageVar = 0;    }            return STAFResultPtr(new STAFResult(kSTAFOk, ""), STAFResultPtr::INIT);}STAFResultPtr handleHelp(STAFServiceRequestLevel30 *pInfo,                          MonitorServiceData *pData){    // Verify the requesting machine/user has at least trust level 1    VALIDATE_TRUST(1, pData->fShortName, "HELP", pData->fLocalMachineName);    // Return the help text    STAFString help("MONITOR Service Help" + lineSep + lineSep);            help += "LOG     MESSAGE <Message> [NAME <Name>] [RESOLVEMESSAGE | NORESOLVEMESSAGE]" ;    help += lineSep;    help += "QUERY   MACHINE <Machine> < HANDLE <Handle> | NAME <Name> >";    help += lineSep;    help += "LIST    <MACHINES | MACHINE <Machine> [NAMES] | SETTINGS>";    help += lineSep;    help += "DELETE  [BEFORE <Timestamp>] CONFIRM";    help += lineSep;    help += "SET     [RESOLVEMESSAGE | NORESOLVEMESSAGE]";    help += lineSep;    help += "        [MAXRECORDSIZE <Size>]";    help += lineSep;    help += "        [ENABLERESOLVEMESSAGEVAR | DISABLERESOLVEMESSAGEVAR] ";    help += lineSep;    help += "VERSION" + lineSep;    help += "HELP" + lineSep;    return STAFResultPtr(new STAFResult(kSTAFOk, help), STAFResultPtr::INIT);}STAFResultPtr handleVersion(STAFServiceRequestLevel30 *pInfo,                             MonitorServiceData *pData){    // Verify the requesting machine/user has at least trust level 1    VALIDATE_TRUST(1, pData->fShortName, "VERSION", pData->fLocalMachineName);    return STAFResultPtr(new STAFResult(kSTAFOk, monitorVersion),                          STAFResultPtr::INIT);}STAFResultPtr resolveStr(STAFServiceRequestLevel30 *pInfo,                         MonitorServiceData *pData,                          const STAFString &theString){    return pData->fHandlePtr->submit(sLocal, sVar, sResStrResolve +                                     STAFString(pInfo->requestNumber) +                                     sString +                                     pData->fHandlePtr->wrapData(theString));}STAFResultPtr resolveOp(STAFServiceRequestLevel30 *pInfo,                         MonitorServiceData *pData,                        STAFCommandParseResultPtr &parsedResult,                        const STAFString &fOption, unsigned int optionIndex){    // ???: Would const STAFString & work here?    STAFString optionValue = parsedResult->optionValue(fOption, optionIndex);    if (optionValue.find(sLeftCurlyBrace) == STAFString::kNPos)    {        return STAFResultPtr(new STAFResult(kSTAFOk, optionValue),                             STAFResultPtr::INIT);    }    return resolveStr(pInfo, pData, optionValue);}STAFResultPtr resolveOpLocal(MonitorServiceData *pData,                             STAFCommandParseResultPtr &parsedResult,                             const STAFString &fOption,                             unsigned int optionIndex){    // ???: Would const STAFString & work here?    STAFString optionValue = parsedResult->optionValue(fOption, optionIndex);    if (optionValue.find(sLeftCurly) == STAFString::kNPos)    {        return STAFResultPtr(new STAFResult(kSTAFOk, optionValue),                             STAFResultPtr::INIT);    }    return pData->fHandlePtr->submit(sLocal, sVar, sResStrResolve +                                      sString +                                      pData->fHandlePtr->wrapData(optionValue));}void registerHelpData(MonitorServiceData *pData, unsigned int errorNumber,                      const STAFString &shortInfo, const STAFString &longInfo){    static STAFString regString("REGISTER SERVICE %C ERROR %d INFO %C "                                "DESCRIPTION %C");    pData->fHandlePtr->submit(sLocal, sHelp, STAFHandle::formatString(        regString.getImpl(), pData->fShortName.getImpl(), errorNumber,        shortInfo.getImpl(), longInfo.getImpl()));}void unregisterHelpData(MonitorServiceData *pData, unsigned int errorNumber){    static STAFString regString("UNREGISTER SERVICE %C ERROR %d");    pData->fHandlePtr->submit(sLocal, sHelp, STAFHandle::formatString(        regString.getImpl(), pData->fShortName.getImpl(), errorNumber));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -