(file) Return to ProviderRegistrationProvider.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ControlProviders / ProviderRegistrationProvider

Diff for /pegasus/src/Pegasus/ControlProviders/ProviderRegistrationProvider/ProviderRegistrationProvider.cpp between version 1.112 and 1.117

version 1.112, 2008/12/01 17:50:34 version 1.117, 2010/10/29 05:29:51
Line 60 
Line 60 
 */ */
 static const CIMName _START_PROVIDER = CIMNameCast("Start"); static const CIMName _START_PROVIDER = CIMNameCast("Start");
  
   /**
      setting provider module group method
   */
   static const CIMName _SET_MODULEGROUPNAME = CIMNameCast("SetModuleGroupName");
   
   /**
      input param for setModuleGroupName name method
   */
   static const CIMName _PARAM_MODULEGROUPNAME = CIMNameCast("ModuleGroupName");
   
   
 ProviderRegistrationProvider::ProviderRegistrationProvider( ProviderRegistrationProvider::ProviderRegistrationProvider(
     ProviderRegistrationManager * providerRegistrationManager)     ProviderRegistrationManager * providerRegistrationManager)
 { {
Line 376 
Line 387 
                         " PG_ProviderModule class."));                         " PG_ProviderModule class."));
         }         }
  
           Uint32 bitnessIndx = instanceObject.findProperty(
                PEGASUS_PROPERTYNAME_MODULE_BITNESS);
   
           if (bitnessIndx != PEG_NOT_FOUND)
           {
               CIMValue value = instanceObject.getProperty(bitnessIndx).getValue();
               if (!value.isNull())
               {
                   if (value.getType() != CIMTYPE_UINT16)
                   {
                       throw PEGASUS_CIM_EXCEPTION(CIM_ERR_TYPE_MISMATCH,
                           PEGASUS_PROPERTYNAME_MODULE_BITNESS.getString());
                   }
                   Uint16 bitness;
                   value.get(bitness);
                   if(bitness != PG_PROVMODULE_BITNESS_DEFAULT
   #ifdef PEGASUS_PLATFORM_FOR_32BIT_PROVIDER_SUPPORT
                       && bitness != PG_PROVMODULE_BITNESS_32
                       && bitness != PG_PROVMODULE_BITNESS_64
   #endif
                       )
                   {
                       throw PEGASUS_CIM_EXCEPTION(CIM_ERR_NOT_SUPPORTED,
                           PEGASUS_PROPERTYNAME_MODULE_BITNESS.getString());
                   }
               }
           }
   
         if (instanceObject.findProperty(_PROPERTY_VERSION) == PEG_NOT_FOUND)         if (instanceObject.findProperty(_PROPERTY_VERSION) == PEG_NOT_FOUND)
         {         {
             throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER,             throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER,
Line 1067 
Line 1106 
         }         }
     }     }
  
   
     // if _PROPERTY_PROVIDERMODULE_NAME key not found     // if _PROPERTY_PROVIDERMODULE_NAME key not found
     if( !moduleFound)     if( !moduleFound)
     {     {
Line 1091 
Line 1131 
         // enable module         // enable module
         ret_value = _enableModule(objectReference, moduleName, al);         ret_value = _enableModule(objectReference, moduleName, al);
     }     }
       else if (methodName.equal(_SET_MODULEGROUPNAME))
       {
           String paramName;
           if (!inParameters.size() ||
               ((paramName = inParameters[0].getParameterName())
                   != _PARAM_MODULEGROUPNAME))
           {
               throw PEGASUS_CIM_EXCEPTION(CIM_ERR_INVALID_PARAMETER, paramName);
           }
           // set group
           String moduleGroupName;
           inParameters[0].getValue().get(moduleGroupName);
           ret_value = _setModuleGroupName(
               objectReference, moduleName, moduleGroupName, al);
       }
     else     else
     {     {
         throw PEGASUS_CIM_EXCEPTION(CIM_ERR_METHOD_NOT_AVAILABLE,         throw PEGASUS_CIM_EXCEPTION(CIM_ERR_METHOD_NOT_AVAILABLE,
Line 1105 
Line 1160 
     handler.complete();     handler.complete();
 } }
  
   Sint16 ProviderRegistrationProvider::_setModuleGroupName(
       const CIMObjectPath & moduleRef,
       const String & moduleName,
       const String & moduleGroupName,
       const AcceptLanguageList & al)
   {
       Sint32 disableRC = _disableModule (moduleRef, moduleName, false, al);
   
       if (disableRC == -1)
       {
           throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,
               MessageLoaderParms(
                   "ControlProviders.ProviderRegistrationProvider."
                       "ProviderRegistrationProvider."
                       "DISABLE_PROVIDER_FAILED",
                   "disable the provider failed."));
       }
   
       if (disableRC == -2)
       {
           throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,
               MessageLoaderParms(
                   "ControlProviders.ProviderRegistrationProvider."
                       "ProviderRegistrationProvider."
                       "DISABLE_PROVIDER_FAILED_PROVIDER_BUSY",
                   "disable the provider failed: Provider is busy."));
       }
   
       String errorMsg;
   
       if (!_providerRegistrationManager->setProviderModuleGroupName(
           moduleName, moduleGroupName, errorMsg))
       {
           throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,
               MessageLoaderParms(
                   "ControlProviders.ProviderRegistrationProvider."
                       "ProviderRegistrationProvider."
                       "SET_PROVIDERMODULEGROUPNAME_FAILED",
                   "Failed to set the ModuleGroupName: $0.",
                   errorMsg));
       }
   
       // Enable the module only if it was previously enabled.
       if (disableRC == 0)
       {
           try
           {
               _enableModule(moduleRef, moduleName, al);
           }
           catch(const Exception &e)
           {
               PEG_TRACE((TRC_CONTROLPROVIDER,Tracer::LEVEL1,
                   "Exception caught while enabling the provider module %s : %s",
                   (const char*)moduleName.getCString(),
                   (const char*)e.getMessage().getCString()));
           }
           catch(...)
           {
               PEG_TRACE((
                   TRC_CONTROLPROVIDER,
                   Tracer::LEVEL1,
                   "Unknown error occurred while"
                       " enabling the provider modules %s.",
                   (const char*)moduleName.getCString()));
           }
       }
   
       return 0;
   }
   
   
 // get provider manager service // get provider manager service
 MessageQueueService * ProviderRegistrationProvider::_getProviderManagerService() MessageQueueService * ProviderRegistrationProvider::_getProviderManagerService()
 { {
Line 1824 
Line 1950 
     CIMObjectPath reference(referenceStr);     CIMObjectPath reference(referenceStr);
  
     Array<CIMParamValue> inParams;     Array<CIMParamValue> inParams;
     Array<CIMParamValue> outParams;  
  
     try     try
     {     {
         AutoMutex mtx(_updateMtx);          CIMInvokeMethodRequestMessage* request =
         _cimomHandle.invokeMethod(              new CIMInvokeMethodRequestMessage(
             context,                  XmlWriter::getNextMessageId(),
             PEGASUS_NAMESPACENAME_INTEROP,             PEGASUS_NAMESPACENAME_INTEROP,
             reference,                  referenceStr,
             CIMNameCast("updateCache"),                  "updateCache",
             inParams,             inParams,
             outParams);                  QueueIdStack(_controller->getQueueId()));
   
           request->operationContext = context;
   
           AsyncModuleOperationStart* moduleControllerRequest =
               new AsyncModuleOperationStart(
                   0,
                   _controller->getQueueId(),
                   PEGASUS_MODULENAME_INTEROPPROVIDER,
                   request);
   
           _controller->SendForget(moduleControllerRequest);
     }     }
     catch(const Exception &e)     catch(const Exception &e)
     {     {


Legend:
Removed from v.1.112  
changed lines
  Added in v.1.117

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2