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

📄 stafserviceservice.cpp

📁 Software Testing Automation Framework (STAF)的开发代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/*****************************************************************************//* Software Testing Automation Framework (STAF)                              *//* (C) Copyright IBM Corp. 2001, 2005                                        *//*                                                                           *//* This software is licensed under the Common Public License (CPL) V1.0.     *//*****************************************************************************/#include "STAFOSTypes.h"#include "STAFProc.h"#include "STAFProcUtil.h"#include "STAFError.h"#include "STAFServiceService.h"#include "STAFCommandParser.h"#include "STAFServiceManager.h"#include "STAFRequestManager.h"#include "STAFExternalService.h"// XXX: This file needs some cleanup.//      1) Some parse results are named after the command instead of just//         a generic name//      2) resolveXXXIfExists isn't leveraged, so there are extra checks//      3) Lot's of redundant empty STAFString declarationstypedef STAFRefPtr<STAFCommandParser> STAFCommandParserPtr;STAFCommandParserPtr fListParser;STAFCommandParserPtr fFreeParser;STAFCommandParserPtr fQueryParser;STAFCommandParserPtr fAddParser;STAFCommandParserPtr fReplaceParser;STAFCommandParserPtr fRenameParser;STAFCommandParserPtr fRemoveParser;STAFCommandParserPtr fHelpParser;static STAFString sList("list");static STAFString sQuery("query");static STAFString sFree("free");static STAFString sAdd("add");static STAFString sReplace("replace");static STAFString sRename("rename");static STAFString sRemove("remove");static STAFString sForce("force");static STAFString sHelp("help");static STAFString sServices("services");static STAFString sServiceLoaders("serviceloaders");static STAFString sAuthenticators("authenticators");static STAFString sRequests("requests");static STAFString sPending("Pending");static STAFString sComplete("Complete");static STAFString sStatus("status");static STAFString sResult("result");static STAFString sRequest("request");static const STAFString sServiceInfoClassName =    "STAF/Service/Service/ServiceInfo";static const STAFString sRequestInfoClassName =    "STAF/Service/Service/RequestInfo";static const STAFString sPendingRequestClassName =    "STAF/Service/Service/RequestInfo";static const STAFString sCompleteRequestClassName =    "STAF/Service/Service/RequestInfo";static const STAFString sRequestInfoLongClassName =    "STAF/Service/Service/RequestInfo";static const STAFString sQueryRequestClassName =    "STAF/Service/Service/QueryRequest";static const STAFString sQueryServiceClassName =    "STAF/Service/Service/QueryService";static const STAFString sFreeRequestInfoClassName =    "STAF/Service/Service/FreeRequestInfo";STAFMapClassDefinitionPtr fServiceInfoClass;STAFMapClassDefinitionPtr fRequestInfoClass;STAFMapClassDefinitionPtr fPendingRequestClass;STAFMapClassDefinitionPtr fCompleteRequestClass;STAFMapClassDefinitionPtr fRequestInfoLongClass;STAFMapClassDefinitionPtr fQueryRequestClass;STAFMapClassDefinitionPtr fQueryServiceClass;STAFMapClassDefinitionPtr fFreeRequestInfoClass;STAFServiceService::STAFServiceService() : STAFService("SERVICE"){    //LIST Options    fListParser = STAFCommandParserPtr(new STAFCommandParser,                                       STAFCommandParserPtr::INIT);    fListParser->addOption("LIST", 1,                           STAFCommandParser::kValueNotAllowed);    fListParser->addOption("SERVICES", 1,                           STAFCommandParser::kValueNotAllowed);    fListParser->addOption("SERVICELOADERS", 1,                           STAFCommandParser::kValueNotAllowed);    fListParser->addOption("AUTHENTICATORS", 1,                           STAFCommandParser::kValueNotAllowed);    fListParser->addOption("REQUESTS", 1,                           STAFCommandParser::kValueNotAllowed);    fListParser->addOptionGroup("SERVICES SERVICELOADERS AUTHENTICATORS REQUESTS", 0, 1);    fListParser->addOption("PENDING", 1,                           STAFCommandParser::kValueNotAllowed);    fListParser->addOption("COMPLETE", 1,                           STAFCommandParser::kValueNotAllowed);    fListParser->addOption("LONG", 1,                           STAFCommandParser::kValueNotAllowed);    fListParser->addOptionNeed("PENDING COMPLETE LONG", "REQUESTS");    //FREE Options    fFreeParser = STAFCommandParserPtr(new STAFCommandParser,                                       STAFCommandParserPtr::INIT);    fFreeParser->addOption("FREE", 1,                           STAFCommandParser::kValueNotAllowed);    fFreeParser->addOption("REQUEST", 1,                           STAFCommandParser::kValueRequired);    fFreeParser->addOption("FORCE", 1,                           STAFCommandParser::kValueNotAllowed);    fFreeParser->addOptionNeed("FREE", "REQUEST");    //QUERY Options    fQueryParser = STAFCommandParserPtr(new STAFCommandParser,                                        STAFCommandParserPtr::INIT);    fQueryParser->addOption("QUERY", 1,                           STAFCommandParser::kValueNotAllowed);    fQueryParser->addOption("REQUEST", 1,                           STAFCommandParser::kValueRequired);    fQueryParser->addOption("STATUS", 1,                           STAFCommandParser::kValueNotAllowed);    fQueryParser->addOption("RESULT", 1,                           STAFCommandParser::kValueNotAllowed);    fQueryParser->addOption("SERVICE", 1,                           STAFCommandParser::kValueRequired);    fQueryParser->addOption("AUTHENTICATOR", 1,                           STAFCommandParser::kValueRequired);    fQueryParser->addOption("SERVICELOADER", 1,                           STAFCommandParser::kValueRequired);    fQueryParser->addOptionNeed("QUERY", "SERVICE SERVICELOADER AUTHENTICATOR REQUEST");    fQueryParser->addOptionGroup("SERVICE SERVICELOADER AUTHENTICATOR REQUEST", 0, 1);    fQueryParser->addOptionNeed("STATUS RESULT", "REQUEST");    fQueryParser->addOptionGroup("STATUS RESULT", 0, 1);    // ADD Options    fAddParser = STAFCommandParserPtr(new STAFCommandParser,                                      STAFCommandParserPtr::INIT);    fAddParser->addOption("ADD", 1, STAFCommandParser::kValueNotAllowed);    fAddParser->addOption("SERVICE", 1, STAFCommandParser::kValueRequired);    fAddParser->addOption("LIBRARY", 1, STAFCommandParser::kValueRequired);    fAddParser->addOption("EXECUTE", 1, STAFCommandParser::kValueRequired);    fAddParser->addOption("OPTION", 0, STAFCommandParser::kValueRequired);    fAddParser->addOption("PARMS", 1, STAFCommandParser::kValueRequired);    fAddParser->addOptionNeed("ADD", "SERVICE");    fAddParser->addOptionNeed("ADD", "LIBRARY");    // REPLACE Options    fReplaceParser = STAFCommandParserPtr(new STAFCommandParser,                                          STAFCommandParserPtr::INIT);    fReplaceParser->addOption("REPLACE", 1,                              STAFCommandParser::kValueNotAllowed);    fReplaceParser->addOption("SERVICE", 1, STAFCommandParser::kValueRequired);    fReplaceParser->addOption("LIBRARY", 1, STAFCommandParser::kValueRequired);    fReplaceParser->addOption("EXECUTE", 1, STAFCommandParser::kValueRequired);    fReplaceParser->addOption("OPTION", 0, STAFCommandParser::kValueRequired);    fReplaceParser->addOption("PARMS", 1, STAFCommandParser::kValueRequired);    fReplaceParser->addOption("RENAME", 1, STAFCommandParser::kValueRequired);    fReplaceParser->addOptionNeed("REPLACE", "SERVICE");    fReplaceParser->addOptionNeed("REPLACE", "LIBRARY");    // RENAME Options    fRenameParser = STAFCommandParserPtr(new STAFCommandParser,                                      STAFCommandParserPtr::INIT);    fRenameParser->addOption("RENAME", 1, STAFCommandParser::kValueNotAllowed);    fRenameParser->addOption("SERVICE", 1, STAFCommandParser::kValueRequired);    fRenameParser->addOption("TO", 1, STAFCommandParser::kValueRequired);    // REMOVE Options    fRemoveParser = STAFCommandParserPtr(new STAFCommandParser,                                         STAFCommandParserPtr::INIT);    fRemoveParser->addOption("REMOVE", 1, STAFCommandParser::kValueNotAllowed);    fRemoveParser->addOption("SERVICE", 1, STAFCommandParser::kValueRequired);    fRemoveParser->addOptionNeed("REMOVE", "SERVICE");    // HELP Options    fHelpParser = STAFCommandParserPtr(new STAFCommandParser,                                       STAFCommandParserPtr::INIT);    fHelpParser->addOption("HELP", 1, STAFCommandParser::kValueNotAllowed);    // Construct map class for list services/authenticators/serviceloaders    fServiceInfoClass = STAFMapClassDefinition::create(sServiceInfoClassName);    fServiceInfoClass->addKey("name", "Name");    fServiceInfoClass->addKey("library", "Library");    fServiceInfoClass->addKey("executable", "Executable");    // Construct map class for list requests    fRequestInfoClass = STAFMapClassDefinition::create(sRequestInfoClassName);    fRequestInfoClass->addKey("requestNumber", "Request#");    fRequestInfoClass->setKeyProperty("requestNumber",                                      "display-short-name", "Req#");    fRequestInfoClass->addKey("startTimestamp", "Start Date-Time");    fRequestInfoClass->setKeyProperty("startTimestamp",                                      "display-short-name", "Date-Time");    fRequestInfoClass->addKey("service", "Service");    fRequestInfoClass->addKey("request", "Request");    // Construct map class for listing pending requests in detailed form (LONG)    fPendingRequestClass = STAFMapClassDefinition::create(        sPendingRequestClassName);    fPendingRequestClass->addKey("requestNumber", "Request#");    fPendingRequestClass->setKeyProperty("requestNumber",                                          "display-short-name", "Req#");    fPendingRequestClass->addKey("sourceMachine", "Source Machine");    fPendingRequestClass->setKeyProperty("sourceMachine",                                         "display-short-name", "Source");    fPendingRequestClass->addKey("sourceHandleName", "Handle Name");    fPendingRequestClass->setKeyProperty("sourceHandleName",                                          "display-short-name", "HName");    fPendingRequestClass->addKey("sourceHandle", "Handle#");    fPendingRequestClass->setKeyProperty("sourceHandle",                                          "display-short-name", "H#");    fPendingRequestClass->addKey("startTimestamp", "Start Date-Time");    fPendingRequestClass->setKeyProperty("startTimestamp",                                          "display-short-name", "Date-Time");    fPendingRequestClass->addKey("targetMachine", "Target Machine");    fPendingRequestClass->setKeyProperty("targetMachine",                                          "display-short-name", "Target");    fPendingRequestClass->addKey("service", "Service");    fPendingRequestClass->addKey("request", "Request");    // Construct map class for listing complete requests in detailed form (LONG)    fCompleteRequestClass = STAFMapClassDefinition::create(        sCompleteRequestClassName);    fCompleteRequestClass->addKey("requestNumber", "Request#");    fCompleteRequestClass->setKeyProperty("requestNumber",                                          "display-short-name", "Req#");    fCompleteRequestClass->addKey("sourceMachine", "Source Machine");    fCompleteRequestClass->setKeyProperty("sourceMachine",                                          "display-short-name", "Source");    fCompleteRequestClass->addKey("sourceHandleName", "Handle Name");    fCompleteRequestClass->setKeyProperty("sourceHandleName",                                          "display-short-name", "HName");    fCompleteRequestClass->addKey("sourceHandle", "Handle#");    fCompleteRequestClass->setKeyProperty("sourceHandle",                                          "display-short-name", "H#");    fCompleteRequestClass->addKey("startTimestamp", "Start Date-Time");    fCompleteRequestClass->setKeyProperty("startTimestamp",                                          "display-short-name", "Date-Time");    fCompleteRequestClass->addKey("targetMachine", "Target Machine");    fCompleteRequestClass->setKeyProperty("targetMachine",                                          "display-short-name", "Target");    fCompleteRequestClass->addKey("service", "Service");    fCompleteRequestClass->addKey("request", "Request");    fCompleteRequestClass->addKey("rc", "Return Code");    fCompleteRequestClass->setKeyProperty("rc", "display-short-name", "RC");    fCompleteRequestClass->addKey("result", "Result");    // Construct map class for listing pending and complete requests in    // detailed form (LONG)    fRequestInfoLongClass = STAFMapClassDefinition::create(        sRequestInfoLongClassName);    fRequestInfoLongClass->addKey("requestNumber", "Request#");    fRequestInfoLongClass->setKeyProperty("requestNumber",                                          "display-short-name", "Req#");    fRequestInfoLongClass->addKey("state", "Status");    fRequestInfoLongClass->addKey("sourceMachine", "Source Machine");    fRequestInfoLongClass->setKeyProperty("sourceMachine",                                          "display-short-name", "Source");    fRequestInfoLongClass->addKey("sourceHandleName", "Handle Name");    fRequestInfoLongClass->setKeyProperty("sourceHandleName",                                          "display-short-name", "HName");    fRequestInfoLongClass->addKey("sourceHandle", "Handle#");    fRequestInfoLongClass->setKeyProperty("sourceHandle",                                          "display-short-name", "H#");    fRequestInfoLongClass->addKey("startTimestamp", "Start Date-Time");    fRequestInfoLongClass->setKeyProperty("startTimestamp",                                          "display-short-name", "Date-Time");    fRequestInfoLongClass->addKey("targetMachine", "Target Machine");    fRequestInfoLongClass->setKeyProperty("targetMachine",                                          "display-short-name", "Target");    fRequestInfoLongClass->addKey("service", "Service");    fRequestInfoLongClass->addKey("request", "Request");    fRequestInfoLongClass->addKey("rc", "Return Code");    fRequestInfoLongClass->setKeyProperty("rc", "display-short-name", "RC");    fRequestInfoLongClass->addKey("result", "Result");    // Construct map class for query request    fQueryRequestClass = STAFMapClassDefinition::create(sQueryRequestClassName);    fQueryRequestClass->addKey("requestNumber", "Request Number");    fQueryRequestClass->addKey("state", "Request Status");    fQueryRequestClass->addKey("sourceMachine", "Source Machine");    fQueryRequestClass->addKey("sourceHandleName", "Source Handle Name");    fQueryRequestClass->addKey("sourceHandle", "Source Handle#");    fQueryRequestClass->addKey("startTimestamp", "Start Date-Time");    fQueryRequestClass->addKey("targetMachine", "Target Machine");    fQueryRequestClass->addKey("service", "Service");    fQueryRequestClass->addKey("request", "Request");    fQueryRequestClass->addKey("rc", "Return Code");    fQueryRequestClass->addKey("result", "Result");        // Construct map class for QUERY SERVICE request    fQueryServiceClass = STAFMapClassDefinition::create(sQueryServiceClassName);    fQueryServiceClass->addKey("name", "Name");    fQueryServiceClass->addKey("library", "Library");    fQueryServiceClass->addKey("executable", "Executable");    fQueryServiceClass->addKey("options", "Options");    fQueryServiceClass->addKey("parameters", "Parameters");    // Construct map class for free request    fFreeRequestInfoClass = STAFMapClassDefinition::create(        sFreeRequestInfoClassName);    fFreeRequestInfoClass->addKey("rc", "Return Code");    fFreeRequestInfoClass->addKey("result", "Result");}STAFServiceService::~STAFServiceService(){    /* Do Nothing */}STAFString STAFServiceService::info(unsigned int) const{    return name() + ": Internal";}STAFServiceResult STAFServiceService::acceptRequest(    const STAFServiceRequest &requestInfo){    STAFString action = requestInfo.fRequest.subWord(0, 1).toLowerCase();    if      (action == sList)    return handleList(requestInfo);    else if (action == sHelp)    return handleHelp(requestInfo);    else if (action == sQuery)   return handleQuery(requestInfo);    else if (action == sFree)    return handleFree(requestInfo);    else if (action == sAdd)     return handleAdd(requestInfo);    // XXX: Commented out Replace and Rename options    // else if (action == sReplace) return handleReplace(requestInfo);    // else if (action == sRename)  return handleRename(requestInfo);    else if (action == sRemove)  return handleRemove(requestInfo);    else return STAFServiceResult(kSTAFInvalidRequestString);}STAFServiceResult STAFServiceService::handleList(    const STAFServiceRequest &requestInfo){    // Verify that the requesting machine/user has at least trust level 2    IVALIDATE_TRUST(2, "LIST");    // Parse the request    STAFCommandParseResultPtr parsedListResult = fListParser->parse(        requestInfo.fRequest);    if (parsedListResult->rc != kSTAFOk)    {        return STAFServiceResult(kSTAFInvalidRequestString,                                 parsedListResult->errorBuffer, 0);    }    STAFRC_t rc = kSTAFOk;    STAFObjectPtr mc = STAFObject::createMarshallingContext();    STAFObjectPtr outputList = STAFObject::createList();    if (parsedListResult->optionTimes(sServiceLoaders) > 0)    {        // LIST SERVICELOADERSS        STAFServiceManager::ServiceList serviceLoaderList =            gServiceManagerPtr->getSLSListCopy();        // Create a marshalled list of maps for service loaders                mc->setMapClassDefinition(fServiceInfoClass->reference());                STAFServiceManager::ServiceList::iterator iter;        for(iter = serviceLoaderList.begin();            iter != serviceLoaderList.end(); iter++)        {            STAFObjectPtr serviceLoaderMap =                 fServiceInfoClass->createInstance();            serviceLoaderMap->put("name", (*iter)->name());            serviceLoaderMap->put(                "library", STAFString((*iter)->getLibName()));            STAFString exec = STAFString((*iter)->getExecutable());            if (exec != STAFString(""))                serviceLoaderMap->put("executable", exec);                        outputList->append(serviceLoaderMap);

⌨️ 快捷键说明

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