(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.12

version 1.10.2.1, 2004/02/17 01:35:03 version 1.12, 2004/01/27 13:48:11
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>
 #include <Pegasus/ProviderManager2/Default/OperationResponseHandler.h> #include <Pegasus/ProviderManager2/Default/OperationResponseHandler.h>
  
 #include <Pegasus/Server/ProviderRegistrationManager/ProviderRegistrationManager.h> #include <Pegasus/Server/ProviderRegistrationManager/ProviderRegistrationManager.h>
 #include <Pegasus/ProviderManager2/ProviderManagerService.h>  
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
Line 126 
Line 128 
  
         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 261 
Line 263 
             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 373 
             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 485 
             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 592 
             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 699 
             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 810 
             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 869 
     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 893 
     //  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 1033 
             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 1142 
             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 1247 
             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 1357 
             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 2120 
Line 2204 
  
     response->dest = request->queueIds.top();     response->dest = request->queueIds.top();
  
      EnableIndicationsResponseHandler *handler =      /*
         new EnableIndicationsResponseHandler(request, response,      // ATTN: need pointer to Provider Manager Server!
               request->provider, ProviderManagerService::providerManagerService);      //EnableIndicationsResponseHandler *handler =
       //    new EnableIndicationsResponseHandler(request, response, this);
  
     try     try
     {     {
        String physicalName=_resolvePhysicalName(          // get the provider file name and logical name
           request->providerModule.getProperty(          Triad<String, String, String> triad =
               request->providerModule.findProperty("Location")).getValue().toString());              _getProviderRegPair(request->provider, request->providerModule);
   
        ProviderName name(String::EMPTY,  
                request->provider.getProperty(request->providerModule.findProperty  
                    ("Name")).getValue ().toString (),  
                physicalName,  
                request->providerModule.getProperty(request->providerModule.findProperty  
                     ("InterfaceType")).getValue().toString(),  
                0);  
  
         // get cached or load new provider module         // get cached or load new provider module
           //Provider provider =
         OpProviderHolder ph =         OpProviderHolder ph =
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              providerManager.getProvider(triad.first, triad.second, triad.third);
  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
             "Calling provider.enableIndications: " +             "Calling provider.enableIndications: " +
             ph.GetProvider().getName());             ph.GetProvider().getName());
           ph.GetProvider().protect();
         pm_service_op_lock op_lock(&ph.GetProvider());  
   
         ph.GetProvider().enableIndications(*handler);         ph.GetProvider().enableIndications(*handler);
  
  
Line 2162 
Line 2238 
     {     {
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
             "Exception: " + e.getMessage());             "Exception: " + e.getMessage());
   
         response->cimException = CIMException(e);         response->cimException = CIMException(e);
     }     }
     catch(Exception & e)     catch(Exception & e)
     {     {
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
             "Exception: " + e.getMessage());             "Exception: " + e.getMessage());
           //l10n
           //response->cimException = CIMException(CIM_ERR_FAILED, "Internal Error");
         response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms(         response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms(
             "ProviderManager.DefaultProviderManager.INTERNAL_ERROR",             "ProviderManager.DefaultProviderManager.INTERNAL_ERROR",
             "Internal Error"));             "Internal Error"));
Line 2177 
Line 2254 
     {     {
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
             "Exception: Unknown");             "Exception: Unknown");
           //l10n
           //response->cimException = CIMException(CIM_ERR_FAILED, "Unknown Error");
         response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms(         response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms(
             "ProviderManager.DefaultProviderManager.UNKNOWN_ERROR",             "ProviderManager.DefaultProviderManager.UNKNOWN_ERROR",
             "Unknown Error"));             "Unknown Error"));
     }     }
       */
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
  
Line 2214 
Line 2294 
  
     try     try
     {     {
        String physicalName=_resolvePhysicalName(          ProviderName name(
               request->providerModule.getProperty(              String::EMPTY,
                  request->providerModule.findProperty("Location")).getValue().toString());              String::EMPTY,
               String::EMPTY,
        ProviderName name(String::EMPTY,              String::EMPTY,
                request->provider.getProperty(request->providerModule.findProperty  
                    ("Name")).getValue ().toString (),  
                physicalName,  
                request->providerModule.getProperty(request->providerModule.findProperty  
                     ("InterfaceType")).getValue().toString(),  
             0);             0);
           /*
           ProviderName name(
               String::EMPTY,
               String::EMPTY,
               objectPath.toString());
   
           // resolve provider 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(), name.getLogicalName(), String::EMPTY);             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
  
           /*
           // get the provider file name and logical name
           Triad<String, String, String> triad =
               getProviderRegistrar()->_getProviderRegPair(request->provider, request->providerModule);
   
           // get cached or load new provider module
           //Provider provider =
           OpProviderHolder ph =
               providerManager.getProvider(triad.first, triad.second, triad.third);
           */
   
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
             "Calling provider.disableIndications: " +             "Calling provider.disableIndications: " +
             ph.GetProvider().getName());             ph.GetProvider().getName());
Line 2452 
Line 2547 
  
     // Unload providers     // Unload providers
     Array<CIMInstance> _pInstances = request->providers;     Array<CIMInstance> _pInstances = request->providers;
     String physicalName=_resolvePhysicalName(request->providerModule.getProperty(  
               request->providerModule.findProperty("Location")).getValue().toString());  
  
     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(          /* temp disabled by Chip
                                           request->providerModule.findProperty          // get the provider file name and logical name
                                           ("Name")).getValue ().toString (),          Triad<String, String, String> triad =
                                        physicalName);              getProviderRegistrar()->_getProviderRegPair(_pInstances[i], mInstance);
   
           providerManager.unloadProvider(triad.first, triad.second);
           */
     }     }
  
     if(!disableProviderOnly)     if(!disableProviderOnly)
Line 2671 
Line 2767 
     return(tableKey);     return(tableKey);
 } }
  
 String DefaultProviderManager::_resolvePhysicalName(const String  & name)  ProviderName DefaultProviderManager::_resolveProviderName(const ProviderName & providerName)
 { {
     String physicalName;      ProviderName temp = findProvider(providerName);
   
       String physicalName = temp.getPhysicalName();
  
       // fully qualify physical provider name (module), if not already done so.
     #if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC)     #if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC)
     physicalName = name + String(".dll");      physicalName = physicalName + String(".dll");
     #elif defined(PEGASUS_PLATFORM_LINUX_IX86_GNU) || defined(PEGASUS_PLATFORM_LINUX_IA86_GNU)     #elif defined(PEGASUS_PLATFORM_LINUX_IX86_GNU) || defined(PEGASUS_PLATFORM_LINUX_IA86_GNU)
     String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));     String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));
     physicalName = root + String("/lib") + name + String(".so");      physicalName = root + String("/lib") + physicalName + String(".so");
     #elif defined(PEGASUS_OS_HPUX)     #elif defined(PEGASUS_OS_HPUX)
     String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));     String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));
     physicalName = root + String("/lib") + name + String(".sl");      physicalName = root + String("/lib") + moduleLocation + String(".sl");
     #elif defined(PEGASUS_OS_OS400)     #elif defined(PEGASUS_OS_OS400)
     physicalName = name;      // do nothing
     #else     #else
     String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));     String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));
     physicalName = root + String("/lib") + name + String(".so");      physicalName = root + String("/lib") + physicalName + String(".so");
     #endif  
   
     return physicalName;  
 }  
   
 ProviderName DefaultProviderManager::_resolveProviderName(const ProviderName & providerName)  
 {  
     ProviderName temp = findProvider(providerName);  
  
     String physicalName = _resolvePhysicalName(temp.getPhysicalName());      #endif
  
     temp.setPhysicalName(physicalName);     temp.setPhysicalName(physicalName);
  


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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2