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

Diff for /pegasus/src/Pegasus/ProviderManager2/Attic/ProviderRegistrar.cpp between version 1.7 and 1.7.6.2

version 1.7, 2003/11/12 13:19:19 version 1.7.6.2, 2004/03/02 19:43:41
Line 25 
Line 25 
 // //
 // Author: Chip Vincent (cvincent@us.ibm.com) // Author: Chip Vincent (cvincent@us.ibm.com)
 // //
 // Modified By:  // Modified By: Adrian Schuur (schuur@de-ibm.com)
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 34 
Line 34 
 #include <Pegasus/Common/Constants.h> #include <Pegasus/Common/Constants.h>
 #include <Pegasus/Common/Tracer.h> #include <Pegasus/Common/Tracer.h>
 #include <Pegasus/Common/Pair.h> #include <Pegasus/Common/Pair.h>
   #include <Pegasus/Common/Tracer.h>
   #include <Pegasus/Common/Logger.h>
   #include <Pegasus/Common/MessageLoader.h> //l10n
  
 #include <Pegasus/Server/ProviderRegistrationManager/ProviderRegistrationManager.h> #include <Pegasus/Server/ProviderRegistrationManager/ProviderRegistrationManager.h>
 #include <Pegasus/ProviderManager2/ProviderType.h> #include <Pegasus/ProviderManager2/ProviderType.h>
Line 176 
Line 179 
     const char * p2 = s2;     const char * p2 = s2;
  
     ProviderName temp(     ProviderName temp(
         cimObjectPath.toString(),  
         providerName,         providerName,
         moduleLocation,         moduleLocation,
         interfaceType,         interfaceType,
Line 193 
Line 195 
 { {
 } }
  
   ProviderName ProviderRegistrar::findConsumerProvider(const String & destinationPath)
   {
      CIMInstance provider;
      CIMInstance providerModule;
      ProviderName temp;
   
      if (_prm->lookupIndicationConsumer(destinationPath,provider,providerModule))
         return ProviderName(
                  provider.getProperty(providerModule.findProperty
                      ("Name")).getValue ().toString (),
                  providerModule.getProperty(providerModule.findProperty
                       ("Location")).getValue().toString(),
                  providerModule.getProperty(providerModule.findProperty
                       ("InterfaceType")).getValue().toString(),
                  0);
   
      return temp;
   }
   
   static const Uint16 _MODULE_STOPPING = 9;
   static const Uint16 _MODULE_STOPPED  = 10;
   
   static void checkBlocked(CIMInstance &pm)
   {
       PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "checkBlocked");
   
       Array<Uint16> operationalStatus;
   
       Uint32 pos = pm.findProperty(CIMName ("OperationalStatus"));
       if(pos == PEG_NOT_FOUND) {
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               "OperationalStatus not found.");
           PEG_METHOD_EXIT();
           //l10n
           //throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "provider lookup failed.");
           throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, MessageLoaderParms(
                                                   "ProviderManager.ProviderManagerService.PROVIDER_LOOKUP_FAILED",
                                                   "provider lookup failed."));
       }
   
       pm.getProperty(pos).getValue().get(operationalStatus);
       for(Uint32 i = 0; i < operationalStatus.size(); i++) {
           if(operationalStatus[i] == _MODULE_STOPPED ||
              operationalStatus[i] == _MODULE_STOPPING) {
               PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                   "Provider blocked.");
               PEG_METHOD_EXIT();
                           //l10n
               //throw PEGASUS_CIM_EXCEPTION(CIM_ERR_ACCESS_DENIED, "provider blocked.");
               throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_ACCESS_DENIED, MessageLoaderParms(
                                   "ProviderManager.ProviderManagerService.PROVIDER_BLOCKED",
                                   "provider blocked."));
           }
       }
   }
   
 // need at least the object and the one capability. // need at least the object and the one capability.
 // for example, // for example,
 //  "//localhost/root/cimv2:CIM_ComputerSystem", INSTANCE //  "//localhost/root/cimv2:CIM_ComputerSystem", INSTANCE
Line 202 
Line 260 
  
 // the method will return the logical and physical provider names associated with the object and capability. // the method will return the logical and physical provider names associated with the object and capability.
  
 ProviderName ProviderRegistrar::findProvider(const ProviderName & providerName)  ProviderName ProviderRegistrar::findProvider(const ProviderName & providerName, Boolean test)
 { {
     CIMObjectPath objectName = providerName.getObjectName();   //   CIMObjectPath objectName = providerName.getObjectName();
     Uint32 flags = providerName.getCapabilitiesMask();     Uint32 flags = providerName.getCapabilitiesMask();
  
     // validate arguments     // validate arguments
     if(objectName.getNameSpace().isNull() || objectName.getClassName().isNull())  /*    if(objectName.getNameSpace().isNull() || objectName.getClassName().isNull())
     {     {
         throw Exception("Invalid argument.");         throw Exception("Invalid argument.");
     }     }
   */
     CIMInstance provider;     CIMInstance provider;
     CIMInstance providerModule;     CIMInstance providerModule;
     ProviderName temp;     ProviderName temp;
       Boolean hasNoQuery;
  
    switch (flags) {    switch (flags) {
        case 2: //ProviderType::INSTANCE         case ProviderType_INSTANCE:
           if (_prm->lookupInstanceProvider(objectName.getNameSpace(),objectName.getClassName(),            if (_prm->lookupInstanceProvider(providerName.getNameSpace(),providerName.getClassName(),
                 provider,providerModule,0)) {                 provider,providerModule,0)) {
               return ProviderName(providerName.getObjectName(),                if (test) checkBlocked(providerModule);
                     provider.getProperty(providerModule.findProperty                    return ProviderName(
                       provider.getProperty(provider.findProperty
                        ("Name")).getValue ().toString (),                        ("Name")).getValue ().toString (),
                     providerModule.getProperty(providerModule.findProperty                     providerModule.getProperty(providerModule.findProperty
                        ("Location")).getValue().toString(),                        ("Location")).getValue().toString(),
Line 231 
Line 291 
                     ProviderType::INSTANCE);                     ProviderType::INSTANCE);
           }           }
           break;           break;
        case 5: //ProviderType::ASSOCIATION         case ProviderType_ASSOCIATION:
           if (_prm->lookupInstanceProvider(objectName.getNameSpace(),objectName.getClassName(),            if (_prm->lookupInstanceProvider(providerName.getNameSpace(),providerName.getClassName(),
                 provider,providerModule,1)) {                 provider,providerModule,1)) {
               return ProviderName(providerName.getObjectName(),                if (test) checkBlocked(providerModule);
                     provider.getProperty(providerModule.findProperty                    return ProviderName(
                       provider.getProperty(provider.findProperty
                        ("Name")).getValue ().toString (),                        ("Name")).getValue ().toString (),
                     providerModule.getProperty(providerModule.findProperty                     providerModule.getProperty(providerModule.findProperty
                        ("Location")).getValue().toString(),                        ("Location")).getValue().toString(),
Line 244 
Line 305 
                     ProviderType::ASSOCIATION);                     ProviderType::ASSOCIATION);
           }           }
           break;           break;
     /*     case ProviderType_QUERY:
             if (_prm->lookupInstanceProvider(providerName.getNameSpace(),providerName.getClassName(),
                   provider,providerModule,0,&hasNoQuery)) {
                if (test) checkBlocked(providerModule);
                     return ProviderName(
                        provider.getProperty(provider.findProperty
                          ("Name")).getValue ().toString (),
                             providerModule.getProperty(providerModule.findProperty
                          ("Location")).getValue().toString(),
                        providerModule.getProperty(providerModule.findProperty
                          ("InterfaceType")).getValue().toString(),
                             ProviderType::INSTANCE);
             }
             break;
      */     case ProviderType_METHOD:
             if (_prm->lookupMethodProvider(providerName.getNameSpace(),providerName.getClassName(),
                   providerName.getMethodName(),provider,providerModule)) {
                if (test) checkBlocked(providerModule);
                     return ProviderName(
                        provider.getProperty(provider.findProperty
                          ("Name")).getValue ().toString (),
                             providerModule.getProperty(providerModule.findProperty
                          ("Location")).getValue().toString(),
                        providerModule.getProperty(providerModule.findProperty
                          ("InterfaceType")).getValue().toString(),
                             ProviderType::METHOD);
             }
             break;
        default:        default:
             CIMObjectPath objectName(String::EMPTY,
                 providerName.getNameSpace(),providerName.getClassName());
           temp = _lookupProvider(objectName);           temp = _lookupProvider(objectName);
     }     }
  


Legend:
Removed from v.1.7  
changed lines
  Added in v.1.7.6.2

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2