(file) Return to DefaultProviderManager.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ProviderManager2 / Default

Diff for /pegasus/src/Pegasus/ProviderManager2/Default/DefaultProviderManager.cpp between version 1.10.2.1 and 1.17

version 1.10.2.1, 2004/02/17 01:35:03 version 1.17, 2004/02/26 14:35:07
Line 43 
Line 43 
 #include <Pegasus/Common/Logger.h> #include <Pegasus/Common/Logger.h>
 #include <Pegasus/Common/MessageLoader.h> //l10n #include <Pegasus/Common/MessageLoader.h> //l10n
  
   #include <Pegasus/Common/QueryExpression.h>
   #include <Pegasus/ProviderManager2/QueryExpressionFactory.h>
   
 #include <Pegasus/Config/ConfigManager.h> #include <Pegasus/Config/ConfigManager.h>
  
 #include <Pegasus/ProviderManager2/Default/Provider.h> #include <Pegasus/ProviderManager2/Default/Provider.h>
Line 126 
Line 129 
  
         break;         break;
     case CIM_EXEC_QUERY_REQUEST_MESSAGE:     case CIM_EXEC_QUERY_REQUEST_MESSAGE:
         response = handleExecuteQueryRequest(request);          response = handleExecQueryRequest(request);
  
         break;         break;
     case CIM_ASSOCIATORS_REQUEST_MESSAGE:     case CIM_ASSOCIATORS_REQUEST_MESSAGE:
Line 181 
Line 184 
         response = handleConsumeIndicationRequest(request);         response = handleConsumeIndicationRequest(request);
         break;         break;
  
       case CIM_EXPORT_INDICATION_REQUEST_MESSAGE:
           response = handleExportIndicationRequest(request);
           break;
   
     case CIM_DISABLE_MODULE_REQUEST_MESSAGE:     case CIM_DISABLE_MODULE_REQUEST_MESSAGE:
         response = handleDisableModuleRequest(request);         response = handleDisableModuleRequest(request);
  
Line 261 
Line 268 
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             0);              ProviderType::INSTANCE);
  
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);         name = _resolveProviderName(name);
Line 371 
Line 378 
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             0);              ProviderType::INSTANCE);
  
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);         name = _resolveProviderName(name);
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(name.getPhysicalName(),
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);                  name.getLogicalName(), String::EMPTY);
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
Line 483 
Line 490 
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             0);              ProviderType::INSTANCE);
  
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);         name = _resolveProviderName(name);
Line 590 
Line 597 
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             0);              ProviderType::INSTANCE);
  
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);         name = _resolveProviderName(name);
Line 697 
Line 704 
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             0);              ProviderType::INSTANCE);
  
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);         name = _resolveProviderName(name);
Line 808 
Line 815 
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             0);              ProviderType::INSTANCE);
  
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);         name = _resolveProviderName(name);
Line 867 
Line 874 
     return(response);     return(response);
 } }
  
 Message * DefaultProviderManager::handleExecuteQueryRequest(const Message * message) throw()  Message * DefaultProviderManager::handleExecQueryRequest(const Message * message) throw()
 { {
     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "DefaultProviderManager::handleExecuteQueryRequest");      PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "DefaultProviderManager::handleExecQueryRequest");
  
     CIMExecQueryRequestMessage * request =     CIMExecQueryRequestMessage * request =
         dynamic_cast<CIMExecQueryRequestMessage *>(const_cast<Message *>(message));         dynamic_cast<CIMExecQueryRequestMessage *>(const_cast<Message *>(message));
  
     PEGASUS_ASSERT(request != 0);     PEGASUS_ASSERT(request != 0);
  
     //l10n  
     CIMExecQueryResponseMessage * response =     CIMExecQueryResponseMessage * response =
         new CIMExecQueryResponseMessage(         new CIMExecQueryResponseMessage(
         request->messageId,         request->messageId,
         PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, MessageLoaderParms(          CIMException(),
         "ProviderManager.DefaultProviderManager.NOT_IMPLEMENTED",  
         "not implemented")),  
         request->queueIds.copyAndPop(),         request->queueIds.copyAndPop(),
         Array<CIMObject>());         Array<CIMObject>());
  
Line 894 
Line 898 
     //  Set HTTP method in response from request     //  Set HTTP method in response from request
     response->setHttpMethod(request->getHttpMethod());     response->setHttpMethod(request->getHttpMethod());
  
     // l10n      // create a handler for this request
     // ATTN: when this is implemented, need to add the language containers to the      ExecQueryResponseHandler handler(request, response);
     // OperationContext.  See how the other requests do it.  
       try
       {
           Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
               "DefaultProviderManager::handleExecQueryRequest - Host name: $0  Name space: $1  Class name: $2",
               System::getHostName(),
               request->nameSpace.getString(),
               request->className.getString());
   
           // make target object path
           CIMObjectPath objectPath(
               System::getHostName(),
               request->nameSpace,
               request->className);
   
           ProviderName name(
               objectPath.toString(),
               String::EMPTY,
               String::EMPTY,
               String::EMPTY,
               ProviderType::QUERY);
   
           // resolve provider name
           name = _resolveProviderName(name);
   
           // get cached or load new provider module
           OpProviderHolder ph =
               providerManager.getProvider(name.getPhysicalName(),
                                           name.getLogicalName(), String::EMPTY);
   
           if (dynamic_cast<CIMInstanceQueryProvider*>(ph.GetCIMProvider()) == 0) {
              String errorString = " instance provider is registered supporting execQuery "
                                   "but is not a CIMQueryInstanceProvider subclass.";
              throw CIMException(CIM_ERR_FAILED,"ProviderLoadFailure (" + name.getPhysicalName() + ":" +
                               name.getLogicalName() + "):" + errorString);
           }
   
           // convert arguments
           OperationContext context;
   
           context.insert(IdentityContainer(request->userName));
           context.insert(AcceptLanguageListContainer(request->acceptLanguages));
           context.insert(ContentLanguageListContainer(request->contentLanguages));
   
           QueryExpression qx(QueryExpressionFactory::routeBuildQueryExpressionRep
               (request->queryLanguage,request->query));
   
           // forward request
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               "Calling provider.executeQueryRequest: " +
               ph.GetProvider().getName());
   
           pm_service_op_lock op_lock(&ph.GetProvider());
   
           STAT_GETSTARTTIME;
   
           ph.GetProvider().execQuery(
               context,
               objectPath,
               qx,
               handler);
   
           STAT_PMS_PROVIDEREND;
       }
       catch(CIMException & e)
       {
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               "Exception: " + e.getMessage());
   
           handler.setStatus(e.getCode(), e.getContentLanguages(), e.getMessage()); // l10n
       }
       catch(Exception & e)
       {
              cout<<"--- exception not a CIMInstanceQueryProvider"<<endl;
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               "Exception: " + e.getMessage());
   
           handler.setStatus(CIM_ERR_FAILED, e.getContentLanguages(), e.getMessage()); // l10n
       }
       catch(...)
       {
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               "Exception: Unknown");
   
           handler.setStatus(CIM_ERR_FAILED, "Unknown error.");
       }
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
  
Line 949 
Line 1038 
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             0);              ProviderType::ASSOCIATION);
  
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);         name = _resolveProviderName(name);
Line 1058 
Line 1147 
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             0);              ProviderType::ASSOCIATION);
  
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);         name = _resolveProviderName(name);
Line 1163 
Line 1252 
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             0);              ProviderType::ASSOCIATION);
  
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);         name = _resolveProviderName(name);
Line 1273 
Line 1362 
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             0);              ProviderType::ASSOCIATION);
  
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);         name = _resolveProviderName(name);
Line 1605 
Line 1694 
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             String::EMPTY,             String::EMPTY,
             0);              ProviderType::METHOD,
               request->methodName);
  
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);         name = _resolveProviderName(name);
Line 1984 
Line 2074 
     {     {
         String temp;         String temp;
  
           if (request->classNames.size()==0) {
              cout<<"--- Internal error: empty classlist found in CIMDeleteSubscriptionRequestMessage"<<
                 endl;
              throw CIMException(CIM_ERR_FAILED,
                 "Internal error: empty classlist found in CIMDeleteSubscriptionRequestMessage");
           }
   
         for(Uint32 i = 0, n = request->classNames.size(); i < n; i++)         for(Uint32 i = 0, n = request->classNames.size(); i < n; i++)
         {         {
             temp.append(request->classNames[i].getString());             temp.append(request->classNames[i].getString());
Line 2120 
Line 2217 
  
     response->dest = request->queueIds.top();     response->dest = request->queueIds.top();
  
       // ATTN: need pointer to Provider Manager Server!
      EnableIndicationsResponseHandler *handler =      EnableIndicationsResponseHandler *handler =
         new EnableIndicationsResponseHandler(request, response,         new EnableIndicationsResponseHandler(request, response,
               request->provider, ProviderManagerService::providerManagerService);               request->provider, ProviderManagerService::providerManagerService);
Line 2131 
Line 2229 
               request->providerModule.findProperty("Location")).getValue().toString());               request->providerModule.findProperty("Location")).getValue().toString());
  
        ProviderName name(String::EMPTY,        ProviderName name(String::EMPTY,
                request->provider.getProperty(request->providerModule.findProperty                 request->provider.getProperty(request->provider.findProperty
                    ("Name")).getValue ().toString (),                    ("Name")).getValue ().toString (),
                physicalName,                physicalName,
                request->providerModule.getProperty(request->providerModule.findProperty                request->providerModule.getProperty(request->providerModule.findProperty
Line 2219 
Line 2317 
                  request->providerModule.findProperty("Location")).getValue().toString());                  request->providerModule.findProperty("Location")).getValue().toString());
  
        ProviderName name(String::EMPTY,        ProviderName name(String::EMPTY,
                request->provider.getProperty(request->providerModule.findProperty                 request->provider.getProperty(request->provider.findProperty
                    ("Name")).getValue ().toString (),                    ("Name")).getValue ().toString (),
                physicalName,                physicalName,
                request->providerModule.getProperty(request->providerModule.findProperty                request->providerModule.getProperty(request->providerModule.findProperty
Line 2377 
Line 2475 
     return(response);     return(response);
 } }
  
   
   Message *DefaultProviderManager::handleExportIndicationRequest(const Message *message) throw()
   {
      PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "DefaultProviderManagerService::handlExportIndicationRequest");
   
       CIMExportIndicationRequestMessage * request =
           dynamic_cast<CIMExportIndicationRequestMessage *>(const_cast<Message *>(message));
   
       PEGASUS_ASSERT(request != 0);
   
       CIMExportIndicationResponseMessage * response =
           new CIMExportIndicationResponseMessage(
           request->messageId,
           CIMException(),
           request->queueIds.copyAndPop());
   
       PEGASUS_ASSERT(response != 0);
   
       // preserve message key
       response->setKey(request->getKey());
   
       //  Set HTTP method in response from request
       response->setHttpMethod (request->getHttpMethod ());
   
       OperationResponseHandler handler(request, response);
   
       try
       {
          ProviderName name(
               String::EMPTY,
               String::EMPTY,
               String::EMPTY,
               String::EMPTY,
               0);
   
          // resolve provider name
          name = _resolveProviderName(request->destinationPath);
   
          // get cached or load new provider module
           OpProviderHolder ph =
               providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
   
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                          "Calling provider.: " +
                          ph.GetProvider().getName());
   
           OperationContext context;
   
   //L10N_TODO
   //l10n
   // ATTN-CEC 06/04/03 NOTE: I can't find where the consume msg is sent.  This
   // does not appear to be hooked-up.  When it is added, need to
   // make sure that Content-Language is set in the consume msg.
   // NOTE: A-L is not needed to be set in the consume msg.
         // add the langs to the context
         context.insert(ContentLanguageListContainer(request->contentLanguages));
   
         CIMInstance indication_copy = request->indicationInstance;
         pm_service_op_lock op_lock(&ph.GetProvider());
   
         ph.GetProvider().consumeIndication(context,
                                   request->destinationPath,
                                   indication_copy);
   
       }
   
       catch(CIMException & e)
       {
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               "Exception: " + e.getMessage());
   
           handler.setStatus(e.getCode(), e.getContentLanguages(), e.getMessage()); // l10n
       }
       catch(Exception & e)
       {
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               "Exception: " + e.getMessage());
   
           handler.setStatus(CIM_ERR_FAILED, e.getContentLanguages(), e.getMessage()); // l10n
       }
       catch(...)
       {
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               "Exception: Unknown");
   
           handler.setStatus(CIM_ERR_FAILED, "Unknown Error");
       }
   
       PEG_METHOD_EXIT();
   
       return(response);
   }
   
   
   
   
 // //
 // This function disables a provider module if disableProviderOnly is not true, // This function disables a provider module if disableProviderOnly is not true,
 // otherwise, disables a provider. Disable provider module means that // otherwise, disables a provider. Disable provider module means that
Line 2457 
Line 2651 
  
     for(Uint32 i = 0, n = _pInstances.size(); i < n; i++)     for(Uint32 i = 0, n = _pInstances.size(); i < n; i++)
     {     {
         providerManager.unloadProvider(_pInstances[i].getProperty(          providerManager.unloadProvider(physicalName,_pInstances[i].getProperty(
                                           request->providerModule.findProperty                                            _pInstances[i].findProperty
                                           ("Name")).getValue ().toString (),                                            ("Name")).getValue().toString());
                                        physicalName);  
     }     }
  
     if(!disableProviderOnly)     if(!disableProviderOnly)
Line 2644 
Line 2837 
     EnableIndicationsResponseHandler *ret = 0;     EnableIndicationsResponseHandler *ret = 0;
  
     _responseTable.lookup(key, ret);     _responseTable.lookup(key, ret);
       _responseTable.remove(key);         // why is this needed ? - we get killed when removed...
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
  
Line 2671 
Line 2865 
     return(tableKey);     return(tableKey);
 } }
  
 String DefaultProviderManager::_resolvePhysicalName(const String  & name)  ProviderName DefaultProviderManager::_resolveProviderName(const ProviderName & providerName)
 { {
     String physicalName;      ProviderName temp = findProvider(providerName);
  
     #if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC)      String physicalName = _resolvePhysicalName(temp.getPhysicalName());
     physicalName = name + String(".dll");  
     #elif defined(PEGASUS_PLATFORM_LINUX_IX86_GNU) || defined(PEGASUS_PLATFORM_LINUX_IA86_GNU)      temp.setPhysicalName(physicalName);
     String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));  
     physicalName = root + String("/lib") + name + String(".so");  
     #elif defined(PEGASUS_OS_HPUX)  
     String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));  
     physicalName = root + String("/lib") + name + String(".sl");  
     #elif defined(PEGASUS_OS_OS400)  
     physicalName = name;  
     #else  
     String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));  
     physicalName = root + String("/lib") + name + String(".so");  
     #endif  
  
     return physicalName;      return(temp);
 } }
  
 ProviderName DefaultProviderManager::_resolveProviderName(const ProviderName & providerName)  ProviderName DefaultProviderManager::_resolveProviderName(String & destinationPath)
 { {
     ProviderName temp = findProvider(providerName);      ProviderName temp = findProvider(destinationPath);
  
     String physicalName = _resolvePhysicalName(temp.getPhysicalName());     String physicalName = _resolvePhysicalName(temp.getPhysicalName());
  


Legend:
Removed from v.1.10.2.1  
changed lines
  Added in v.1.17

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2