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

📄 stafrequestmanager.cpp

📁 Software Testing Automation Framework (STAF)的开发代码
💻 CPP
字号:
/*****************************************************************************//* Software Testing Automation Framework (STAF)                              *//* (C) Copyright IBM Corp. 2001                                              *//*                                                                           *//* This software is licensed under the Common Public License (CPL) V1.0.     *//*****************************************************************************/#include "STAFOSTypes.h"#include "STAFProc.h"#include "STAFRequestManager.h"#include "STAFService.h"#include "STAFString.h"#include "STAFError.h"static STAFRequestManager *pRequestManager = 0;STAFRequestManager::STAFRequestManager() : fNextRequest(0){    pRequestManager = this;}STAFServiceRequestPtr STAFRequestManager::getNewServiceRequest(){    STAFMutexSemLock requestLock(fRequestMapSem);    STAFServiceRequest *serviceRequest = new STAFServiceRequest();    serviceRequest->fRequestNumber   = ++fNextRequest;    serviceRequest->fProcessingState = kSTAFServiceRequestPending;    return STAFServiceRequestPtr(serviceRequest, STAFServiceRequestPtr::INIT);}STAFRC_t STAFRequestManager::add(STAFServiceRequestPtr &serviceRequest){    STAFMutexSemLock requestLock(fRequestMapSem);    fRequestMap[serviceRequest->fRequestNumber] = serviceRequest;    return kSTAFOk;}STAFRC_t STAFRequestManager::requestCompleted(STAFRequestNumber_t request,                                               const STAFServiceResult &result) {    STAFMutexSemLock requestLock(fRequestMapSem);    RequestMap::iterator theIterator = fRequestMap.find(request);    if (theIterator == fRequestMap.end())        return kSTAFRequestNumberNotFound;    STAFServiceRequestPtr theRequest = (*theIterator).second;    theRequest->fResult = result;    theRequest->fProcessingState = kSTAFServiceRequestComplete;    return kSTAFOk;}STAFRC_t STAFRequestManager::getResult(STAFRequestNumber_t request,                                        STAFServiceResult *result){    STAFMutexSemLock requestLock(fRequestMapSem);    return doGetResult(request, result);}STAFRC_t STAFRequestManager::freeRequest(STAFRequestNumber_t request,                                          STAFServiceResult *result){    STAFMutexSemLock requestLock(fRequestMapSem);    RequestMap::iterator theIterator = fRequestMap.find(request);    if (theIterator == fRequestMap.end())        return kSTAFRequestNumberNotFound;    STAFRC_t rc = doGetResult(request, result);        if (rc == kSTAFOk)         fRequestMap.erase(request);    return rc;}STAFRC_t STAFRequestManager::deleteRequest(STAFRequestNumber_t request)                     {    // This method will remove the request whether or not it is complete    STAFMutexSemLock requestLock(fRequestMapSem);    RequestMap::iterator theIterator = fRequestMap.find(request);    if (theIterator == fRequestMap.end())        return kSTAFRequestNumberNotFound;    fRequestMap.erase(request);    return kSTAFOk;}STAFRC_t STAFRequestManager::getRequestData(STAFRequestNumber_t request,                                             STAFServiceRequestPtr &reqData){    STAFMutexSemLock requestLock(fRequestMapSem);    RequestMap::iterator theIterator = fRequestMap.find(request);    if (theIterator == fRequestMap.end())        return kSTAFRequestNumberNotFound;    reqData = (*theIterator).second;    return kSTAFOk;}STAFRC_t STAFRequestManager::getStatus(STAFRequestNumber_t request,                                        STAFServiceRequestState_t  *status){    STAFMutexSemLock requestLock(fRequestMapSem);    return doGetStatus(request, status);}bool STAFRequestManager::requestExists(STAFRequestNumber_t request){    STAFMutexSemLock requestLock(fRequestMapSem);    RequestMap::iterator theIterator = fRequestMap.find(request);    if (theIterator == fRequestMap.end())        return false;    return true;}STAFRequestManager::RequestMap STAFRequestManager::getRequestMapCopy(){    STAFMutexSemLock requestLock(fRequestMapSem);    return fRequestMap;}STAFRC_t STAFRequestManager::doGetStatus(STAFRequestNumber_t request,                                          STAFServiceRequestState_t  *status){    RequestMap::iterator theIterator = fRequestMap.find(request);    if (theIterator == fRequestMap.end())        return kSTAFRequestNumberNotFound;    *status = (*theIterator).second->fProcessingState;    return kSTAFOk;}STAFRC_t STAFRequestManager::doGetResult(STAFRequestNumber_t request,                                          STAFServiceResult *result){    RequestMap::iterator theIterator = fRequestMap.find(request);    if (theIterator == fRequestMap.end())        return kSTAFRequestNumberNotFound;    STAFServiceRequestState_t reqStatus;    STAFRC_t rc = doGetStatus(request, &reqStatus);    if (rc != kSTAFOk) return rc;    if (reqStatus != kSTAFServiceRequestComplete)        return kSTAFRequestNotComplete;    STAFServiceRequestPtr theRequest = (*theIterator).second;    *result = theRequest->fResult;    return kSTAFOk;}

⌨️ 快捷键说明

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