(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.22 and 1.50

version 1.22, 2004/03/04 10:11:14 version 1.50, 2005/03/03 19:27:56
Line 1 
Line 1 
 //%2003////////////////////////////////////////////////////////////////////////  //%2005////////////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002  BMC Software, Hewlett-Packard Development  // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
 // Company, L. P., IBM Corp., The Open Group, Tivoli Systems.  // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L. P.; // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L. P.;
 // IBM Corp.; EMC Corporation, The Open Group. // IBM Corp.; EMC Corporation, The Open Group.
   // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
   // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
   // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
   // EMC Corporation; VERITAS Software Corporation; The Open Group.
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to // of this software and associated documentation files (the "Software"), to
Line 30 
Line 34 
 //              Mike Day, IBM (mdday@us.ibm.com) //              Mike Day, IBM (mdday@us.ibm.com)
 //              Karl Schopmeyer(k.schopmeyer@opengroup.org) - Fix associators. //              Karl Schopmeyer(k.schopmeyer@opengroup.org) - Fix associators.
 //                      Yi Zhou, Hewlett-Packard Company (yi_zhou@hp.com) //                      Yi Zhou, Hewlett-Packard Company (yi_zhou@hp.com)
   //              Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
   //              Seema Gupta (gseema@in.ibm.com) for PEP135
   //              Willis White (whiwill@us.ibm.com)
   //              Josephine Eskaline Joyce (jojustin@in.ibm.com) for PEP#101
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 37 
Line 45 
  
 #include <Pegasus/Common/CIMMessage.h> #include <Pegasus/Common/CIMMessage.h>
 #include <Pegasus/Common/OperationContext.h> #include <Pegasus/Common/OperationContext.h>
 #include <Pegasus/Common/Destroyer.h>  
 #include <Pegasus/Common/Tracer.h> #include <Pegasus/Common/Tracer.h>
 #include <Pegasus/Common/StatisticalData.h> #include <Pegasus/Common/StatisticalData.h>
 #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/Constants.h>
  
 #include <Pegasus/Common/QueryExpression.h>  #include <Pegasus/Query/QueryExpression/QueryExpression.h>
 #include <Pegasus/ProviderManager2/QueryExpressionFactory.h> #include <Pegasus/ProviderManager2/QueryExpressionFactory.h>
  
 #include <Pegasus/Config/ConfigManager.h>  
   
 #include <Pegasus/ProviderManager2/Default/Provider.h> #include <Pegasus/ProviderManager2/Default/Provider.h>
 #include <Pegasus/ProviderManager2/OperationResponseHandler.h> #include <Pegasus/ProviderManager2/OperationResponseHandler.h>
  
 #include <Pegasus/Server/ProviderRegistrationManager/ProviderRegistrationManager.h>  
 #include <Pegasus/ProviderManager2/ProviderManagerService.h> #include <Pegasus/ProviderManager2/ProviderManagerService.h>
   #include <Pegasus/ProviderManager2/ProviderType.h>
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
Line 77 
Line 83 
 }; };
  
 // //
 // Provider module status  // Default Provider Manager
 // //
 static const Uint16 _MODULE_OK       = 2;  
 static const Uint16 _MODULE_STOPPING = 9;  
 static const Uint16 _MODULE_STOPPED  = 10;  
   
 // provider manager  
 static LocalProviderManager providerManager;  
   
 DefaultProviderManager::DefaultProviderManager(void) DefaultProviderManager::DefaultProviderManager(void)
 { {
       _subscriptionInitComplete = false;
 } }
  
 DefaultProviderManager::~DefaultProviderManager(void) DefaultProviderManager::~DefaultProviderManager(void)
Line 172 
Line 172 
         response = handleDeleteSubscriptionRequest(request);         response = handleDeleteSubscriptionRequest(request);
  
         break;         break;
     case CIM_ENABLE_INDICATIONS_REQUEST_MESSAGE:  
         response = handleEnableIndicationsRequest(request);  
   
         break;  
     case CIM_DISABLE_INDICATIONS_REQUEST_MESSAGE:  
         response = handleDisableIndicationsRequest(request);  
   
         break;  
     case CIM_CONSUME_INDICATION_REQUEST_MESSAGE:  
         response = handleConsumeIndicationRequest(request);  
         break;  
   
     case CIM_EXPORT_INDICATION_REQUEST_MESSAGE:     case CIM_EXPORT_INDICATION_REQUEST_MESSAGE:
         response = handleExportIndicationRequest(request);         response = handleExportIndicationRequest(request);
         break;         break;
Line 200 
Line 188 
         response = handleStopAllProvidersRequest(request);         response = handleStopAllProvidersRequest(request);
  
         break;         break;
       case CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE:
           response = handleInitializeProviderRequest(request);
   
           break;
       case CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE:
           response = handleSubscriptionInitCompleteRequest (request);
   
           break;
     default:     default:
         response = handleUnsupportedRequest(request);         response = handleUnsupportedRequest(request);
  
Line 221 
Line 217 
     return(0);     return(0);
 } }
  
   Message * DefaultProviderManager::handleInitializeProviderRequest(
       const Message * message)
   {
       PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,
           "DefaultProviderManager::handleInitializeProviderRequest");
   
       CIMInitializeProviderRequestMessage * request =
           dynamic_cast<CIMInitializeProviderRequestMessage *>
               (const_cast<Message *>(message));
   
       PEGASUS_ASSERT(request != 0);
   
       CIMInitializeProviderResponseMessage * response =
           new CIMInitializeProviderResponseMessage(
           request->messageId,
           CIMException(),
           request->queueIds.copyAndPop());
   
       // preserve message key
       response->setKey(request->getKey());
   
       //  Set HTTP method in response from request
       response->setHttpMethod(request->getHttpMethod());
   
       OperationResponseHandler handler(request, response);
   
       try
       {
           // resolve provider name
           ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
   
           // get cached or load new provider module
           OpProviderHolder ph = providerManager.getProvider(
               name.getPhysicalName(), name.getLogicalName());
       }
       catch(CIMException & e)
       {
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL3,
               "CIMException: " + e.getMessage());
   
           handler.setStatus(e.getCode(), e.getContentLanguages(), e.getMessage());
       }
       catch(Exception & e)
       {
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL3,
               "Exception: " + e.getMessage());
   
           handler.setStatus(CIM_ERR_FAILED, e.getContentLanguages(), e.getMessage());
       }
       catch(...)
       {
           PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL3,
               "Exception: Unknown");
   
           handler.setStatus(CIM_ERR_FAILED, "Unknown error.");
       }
   
       PEG_METHOD_EXIT();
   
       return(response);
   }
   
 Message * DefaultProviderManager::handleGetInstanceRequest(const Message * message) Message * DefaultProviderManager::handleGetInstanceRequest(const Message * message)
 { {
     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "DefaultProviderManager::handleGetInstanceRequest");     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "DefaultProviderManager::handleGetInstanceRequest");
Line 263 
Line 322 
             request->instanceName.getClassName(),             request->instanceName.getClassName(),
             request->instanceName.getKeyBindings());             request->instanceName.getKeyBindings());
  
         ProviderName name(  
             objectPath,  
             ProviderType::INSTANCE);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         CIMPropertyList propertyList(request->propertyList);         CIMPropertyList propertyList(request->propertyList);
  
Line 370 
Line 426 
             request->nameSpace,             request->nameSpace,
             request->className);             request->className);
  
         ProviderName name(  
             objectPath,  
             ProviderType::INSTANCE);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph = providerManager.getProvider(name.getPhysicalName(),          OpProviderHolder ph = providerManager.getProvider(
                 name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         CIMPropertyList propertyList(request->propertyList);         CIMPropertyList propertyList(request->propertyList);
  
Line 478 
Line 531 
             request->nameSpace,             request->nameSpace,
             request->className);             request->className);
  
         // build an internal provider name from the request arguments  
         ProviderName name(  
             objectPath,  
             ProviderType::INSTANCE);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName());              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         // forward request         // forward request
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
Line 583 
Line 632 
             request->newInstance.getPath().getClassName(),             request->newInstance.getPath().getClassName(),
             request->newInstance.getPath().getKeyBindings());             request->newInstance.getPath().getKeyBindings());
  
         ProviderName name(  
             objectPath,  
             ProviderType::INSTANCE);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         // forward request         // forward request
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
Line 687 
Line 733 
             request->modifiedInstance.getPath ().getClassName(),             request->modifiedInstance.getPath ().getClassName(),
             request->modifiedInstance.getPath ().getKeyBindings());             request->modifiedInstance.getPath ().getKeyBindings());
  
         ProviderName name(  
             objectPath,  
             ProviderType::INSTANCE);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         CIMPropertyList propertyList(request->propertyList);         CIMPropertyList propertyList(request->propertyList);
  
Line 795 
Line 838 
             request->instanceName.getClassName(),             request->instanceName.getClassName(),
             request->instanceName.getKeyBindings());             request->instanceName.getKeyBindings());
  
         ProviderName name(  
             objectPath,  
             ProviderType::INSTANCE);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         // forward request         // forward request
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
Line 897 
Line 937 
             request->nameSpace,             request->nameSpace,
             request->className);             request->className);
  
         ProviderName name(  
             objectPath,  
             ProviderType::QUERY);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(),              name.getPhysicalName(), name.getLogicalName());
                                         name.getLogicalName(), String::EMPTY);  
  
         if (dynamic_cast<CIMInstanceQueryProvider*>(ph.GetCIMProvider()) == 0) {         if (dynamic_cast<CIMInstanceQueryProvider*>(ph.GetCIMProvider()) == 0) {
            String errorString = " instance provider is registered supporting execQuery "            String errorString = " instance provider is registered supporting execQuery "
Line 919 
Line 955 
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         QueryExpression qx(QueryExpressionFactory::routeBuildQueryExpressionRep          QueryExpression qx(request->queryLanguage,request->query);
            (request->queryLanguage,request->query));  
  
         // forward request         // forward request
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
Line 952 
Line 987 
     }     }
     catch(Exception & e)     catch(Exception & e)
     {     {
            cout<<"--- exception not a CIMInstanceQueryProvider"<<endl;  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
             "Exception: " + e.getMessage());             "Exception: " + e.getMessage());
  
Line 1017 
Line 1051 
             request->nameSpace,             request->nameSpace,
             request->assocClass.getString());             request->assocClass.getString());
  
         ProviderName name(  
             assocPath,  
             ProviderType::ASSOCIATION);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         // ATTN KS STAT_GETSTARTTIME;          STAT_GETSTARTTIME;
         pm_service_op_lock op_lock(&ph.GetProvider());         pm_service_op_lock op_lock(&ph.GetProvider());
  
         ph.GetProvider().associators(         ph.GetProvider().associators(
Line 1047 
Line 1078 
             request->resultRole,             request->resultRole,
             request->includeQualifiers,             request->includeQualifiers,
             request->includeClassOrigin,             request->includeClassOrigin,
             request->propertyList.getPropertyNameArray(),              request->propertyList,
             handler);             handler);
  
         STAT_PMS_PROVIDEREND;         STAT_PMS_PROVIDEREND;
Line 1128 
Line 1159 
             request->nameSpace,             request->nameSpace,
             request->assocClass.getString());             request->assocClass.getString());
  
         ProviderName name(  
             assocPath,  
             ProviderType::ASSOCIATION);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
                   STAT_GETSTARTTIME;
         pm_service_op_lock op_lock(&ph.GetProvider());         pm_service_op_lock op_lock(&ph.GetProvider());
  
         ph.GetProvider().associatorNames(         ph.GetProvider().associatorNames(
Line 1235 
Line 1264 
             request->nameSpace,             request->nameSpace,
             request->resultClass.getString());             request->resultClass.getString());
  
         ProviderName name(  
             resultPath,  
             ProviderType::ASSOCIATION);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         STAT_GETSTARTTIME;         STAT_GETSTARTTIME;
  
Line 1268 
Line 1294 
             request->role,             request->role,
             request->includeQualifiers,             request->includeQualifiers,
             request->includeClassOrigin,             request->includeClassOrigin,
             request->propertyList.getPropertyNameArray(),              request->propertyList,
             handler);             handler);
  
         STAT_PMS_PROVIDEREND;         STAT_PMS_PROVIDEREND;
Line 1347 
Line 1373 
             request->nameSpace,             request->nameSpace,
             request->resultClass.getString());             request->resultClass.getString());
  
         ProviderName name(  
             resultPath,  
             ProviderType::ASSOCIATION);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         STAT_GETSTARTTIME;         STAT_GETSTARTTIME;
  
Line 1451 
Line 1474 
             request->instanceName.getClassName(),             request->instanceName.getClassName(),
             request->instanceName.getKeyBindings());             request->instanceName.getKeyBindings());
  
         ProviderName name(  
             objectPath,  
             0);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         CIMName propertyName = request->propertyName;         CIMName propertyName = request->propertyName;
  
Line 1559 
Line 1579 
             request->instanceName.getClassName(),             request->instanceName.getClassName(),
             request->instanceName.getKeyBindings());             request->instanceName.getKeyBindings());
  
         ProviderName name(  
             objectPath,  
             0);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         CIMName propertyName = request->propertyName;         CIMName propertyName = request->propertyName;
         CIMValue propertyValue = request->newValue;         CIMValue propertyValue = request->newValue;
Line 1670 
Line 1687 
             request->instanceName.getClassName(),             request->instanceName.getClassName(),
             request->instanceName.getKeyBindings());             request->instanceName.getKeyBindings());
  
         ProviderName name(  
             objectPath,  
             ProviderType::METHOD,  
             request->methodName);  
   
         // resolve provider name         // resolve provider name
         name = _resolveProviderName(name);          ProviderName name = _resolveProviderName(
               request->operationContext.get(ProviderIdContainer::NAME));
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(ContentLanguageListContainer(request->contentLanguages));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         CIMObjectPath instanceReference(request->instanceName);         CIMObjectPath instanceReference(request->instanceName);
  
Line 1784 
Line 1797 
             request->nameSpace.getString(),             request->nameSpace.getString(),
             temp);             temp);
  
         String physicalName=_resolvePhysicalName(                  CIMInstance req_provider, req_providerModule;
            request->providerModule.getProperty(                  ProviderIdContainer pidc = (ProviderIdContainer)request->operationContext.get(ProviderIdContainer::NAME);
            request->providerModule.findProperty("Location")).getValue().toString());                  req_provider = pidc.getProvider();
                   req_providerModule = pidc.getModule();
  
         ProviderName name(          String physicalName=_resolvePhysicalName( req_providerModule.getProperty(
            request->provider.getProperty(request->provider.findProperty                                                    req_providerModule.findProperty("Location")).getValue().toString());
               ("Name")).getValue ().toString (),  
           ProviderName name(req_provider.getProperty(req_provider.findProperty("Name")).getValue ().toString (),
            physicalName,            physicalName,
            request->providerModule.getProperty(request->providerModule.findProperty                                    req_providerModule.getProperty(req_providerModule.findProperty
               ("InterfaceType")).getValue().toString(),               ("InterfaceType")).getValue().toString(),
            0);            0);
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
   
           //
           //  Save the provider instance from the request
           //
           ph.GetProvider ().setProviderInstance (req_provider);
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(SubscriptionInstanceContainer                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
             (request->subscriptionInstance));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
         context.insert(SubscriptionFilterConditionContainer              context.insert(request->operationContext.get(SubscriptionInstanceContainer::NAME));
             (request->condition, request->queryLanguage));              context.insert(request->operationContext.get(SubscriptionLanguageListContainer::NAME));
         context.insert(SubscriptionLanguageListContainer              context.insert(request->operationContext.get(SubscriptionFilterConditionContainer::NAME));
             (request->acceptLanguages));                   context.insert(request->operationContext.get(SubscriptionFilterQueryContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));  
         context.insert(ContentLanguageListContainer(request->contentLanguages));  
  
         CIMObjectPath subscriptionName = request->subscriptionInstance.getPath();         CIMObjectPath subscriptionName = request->subscriptionInstance.getPath();
  
Line 1843 
Line 1861 
             classNames,             classNames,
             propertyList,             propertyList,
             repeatNotificationPolicy);             repeatNotificationPolicy);
   
           //
           //  Increment count of current subscriptions for this provider
           //
           if (ph.GetProvider ().testIfZeroAndIncrementSubscriptions ())
           {
               //
               //  If there were no current subscriptions before the increment,
               //  the first subscription has been created
               //  Call the provider's enableIndications method
               //
               if (_subscriptionInitComplete)
               {
                   _callEnableIndications (req_provider,
                       _indicationCallback, ph);
               }
           }
     }     }
     catch(CIMException & e)     catch(CIMException & e)
     {     {
Line 1916 
Line 1951 
             request->nameSpace.getString(),             request->nameSpace.getString(),
             temp);             temp);
  
         String physicalName=_resolvePhysicalName(                  CIMInstance req_provider, req_providerModule;
            request->providerModule.getProperty(                  ProviderIdContainer pidc = (ProviderIdContainer)request->operationContext.get(ProviderIdContainer::NAME);
            request->providerModule.findProperty("Location")).getValue().toString());                  req_provider = pidc.getProvider();
                   req_providerModule = pidc.getModule();
  
         ProviderName name(          String physicalName=_resolvePhysicalName( req_providerModule.getProperty(
            request->provider.getProperty(request->provider.findProperty                                                    req_providerModule.findProperty("Location")).getValue().toString());
               ("Name")).getValue ().toString (),  
           ProviderName name(req_provider.getProperty(req_provider.findProperty("Name")).getValue ().toString (),
            physicalName,            physicalName,
            request->providerModule.getProperty(request->providerModule.findProperty                                    req_providerModule.getProperty(req_providerModule.findProperty
               ("InterfaceType")).getValue().toString(),               ("InterfaceType")).getValue().toString(),
            0);            0);
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
                   context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
         context.insert(SubscriptionInstanceContainer              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
             (request->subscriptionInstance));              context.insert(request->operationContext.get(SubscriptionInstanceContainer::NAME));
         context.insert(SubscriptionFilterConditionContainer              context.insert(request->operationContext.get(SubscriptionLanguageListContainer::NAME));
             (request->condition, request->queryLanguage));              context.insert(request->operationContext.get(SubscriptionFilterConditionContainer::NAME));
         context.insert(SubscriptionLanguageListContainer                   context.insert(request->operationContext.get(SubscriptionFilterQueryContainer::NAME));
             (request->acceptLanguages));  
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));  
         context.insert(ContentLanguageListContainer(request->contentLanguages));  
  
         CIMObjectPath subscriptionName = request->subscriptionInstance.getPath();         CIMObjectPath subscriptionName = request->subscriptionInstance.getPath();
  
Line 2048 
Line 2082 
             request->nameSpace.getString(),             request->nameSpace.getString(),
             temp);             temp);
  
         String physicalName=_resolvePhysicalName(                  CIMInstance req_provider, req_providerModule;
            request->providerModule.getProperty(                  ProviderIdContainer pidc = (ProviderIdContainer)request->operationContext.get(ProviderIdContainer::NAME);
            request->providerModule.findProperty("Location")).getValue().toString());  
                   req_provider = pidc.getProvider();
                   req_providerModule = pidc.getModule();
  
         ProviderName name(                String physicalName=_resolvePhysicalName( req_providerModule.getProperty(
            request->provider.getProperty(request->provider.findProperty                                                    req_providerModule.findProperty("Location")).getValue().toString());
               ("Name")).getValue ().toString (),  
                 ProviderName name(req_provider.getProperty(req_provider.findProperty("Name")).getValue ().toString (),
            physicalName,            physicalName,
            request->providerModule.getProperty(request->providerModule.findProperty                                    req_providerModule.getProperty(req_providerModule.findProperty
               ("InterfaceType")).getValue().toString(),               ("InterfaceType")).getValue().toString(),
            0);            0);
  
         // get cached or load new provider module         // get cached or load new provider module
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
  
         // convert arguments         // convert arguments
         OperationContext context;         OperationContext context;
  
         context.insert(IdentityContainer(request->userName));                  context.insert(request->operationContext.get(IdentityContainer::NAME));
         context.insert(SubscriptionInstanceContainer                  context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
             (request->subscriptionInstance));              context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
         context.insert(SubscriptionLanguageListContainer              context.insert(request->operationContext.get(SubscriptionInstanceContainer::NAME));
             (request->acceptLanguages));              context.insert(request->operationContext.get(SubscriptionLanguageListContainer::NAME));
         context.insert(AcceptLanguageListContainer(request->acceptLanguages));  
         context.insert(ContentLanguageListContainer(request->contentLanguages));  
  
         CIMObjectPath subscriptionName = request->subscriptionInstance.getPath();         CIMObjectPath subscriptionName = request->subscriptionInstance.getPath();
  
Line 2099 
Line 2134 
             context,             context,
             subscriptionName,             subscriptionName,
             classNames);             classNames);
   
           //
           //  Decrement count of current subscriptions for this provider
           //
           if (ph.GetProvider ().decrementSubscriptionsAndTestIfZero ())
           {
               //
               //  If there are no current subscriptions after the decrement,
               //  the last subscription has been deleted
               //  Call the provider's disableIndications method
               //
               if (_subscriptionInitComplete)
               {
                   PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                       "Calling provider.disableIndications: " +
                       ph.GetProvider ().getName ());
   
                   ph.GetProvider ().disableIndications ();
   
                   ph.GetProvider ().unprotect ();
   
                   //
                   //
                   //
                   PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                       "Removing and Destroying indication handler for " +
                       ph.GetProvider ().getName ());
   
                   delete _removeEntry (_generateKey (ph.GetProvider ()));
               }
           }
     }     }
     catch(CIMException & e)     catch(CIMException & e)
     {     {
Line 2127 
Line 2193 
     return(response);     return(response);
 } }
  
 Message * DefaultProviderManager::handleEnableIndicationsRequest(const Message * message)  Message *DefaultProviderManager::handleExportIndicationRequest(const Message *message)
 { {
     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "DefaultProviderManager:: handleEnableIndicationsRequest");     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "DefaultProviderManagerService::handlExportIndicationRequest");
  
     CIMEnableIndicationsRequestMessage * request =      CIMExportIndicationRequestMessage * request =
         dynamic_cast<CIMEnableIndicationsRequestMessage *>(const_cast<Message *>(message));          dynamic_cast<CIMExportIndicationRequestMessage *>(const_cast<Message *>(message));
  
     PEGASUS_ASSERT(request != 0);     PEGASUS_ASSERT(request != 0);
  
     CIMEnableIndicationsResponseMessage * response =      CIMExportIndicationResponseMessage * response =
         new CIMEnableIndicationsResponseMessage(          new CIMExportIndicationResponseMessage(
         request->messageId,  
         CIMException(),  
         request->queueIds.copyAndPop());  
   
     CIMEnableIndicationsResponseMessage * responseforhandler =  
         new CIMEnableIndicationsResponseMessage(  
         request->messageId,         request->messageId,
         CIMException(),         CIMException(),
         request->queueIds.copyAndPop());         request->queueIds.copyAndPop());
Line 2156 
Line 2216 
     //  Set HTTP method in response from request     //  Set HTTP method in response from request
     response->setHttpMethod(request->getHttpMethod());     response->setHttpMethod(request->getHttpMethod());
  
     response->dest = request->queueIds.top();      OperationResponseHandler handler(request, response);
   
     // ATTN: need pointer to Provider Manager Server!  
     EnableIndicationsResponseHandler *handler =  
         new EnableIndicationsResponseHandler(request, response,  
               request->provider, ProviderManagerService::providerManagerService);  
  
     try     try
     {     {
        String physicalName=_resolvePhysicalName(          // resolve provider name
           request->providerModule.getProperty(          ProviderName name = _resolveProviderName(
               request->providerModule.findProperty("Location")).getValue().toString());              request->operationContext.get(ProviderIdContainer::NAME));
   
        ProviderName name(  
                request->provider.getProperty(request->provider.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
         OpProviderHolder ph =          OpProviderHolder ph = providerManager.getProvider(
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);              name.getPhysicalName(), name.getLogicalName());
   
                   STAT_GETSTARTTIME
  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
             "Calling provider.enableIndications: " +                         "Calling provider.: " +
             ph.GetProvider().getName());             ph.GetProvider().getName());
  
         pm_service_op_lock op_lock(&ph.GetProvider());          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
  
         ph.GetProvider().enableIndications(*handler);        context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
  
         CIMInstance indication_copy = request->indicationInstance;
         pm_service_op_lock op_lock(&ph.GetProvider());
  
         // if no exception, store the handler so it is persistent for as        ph.GetProvider().consumeIndication(context,
         // long as the provider has indications enabled.                                  request->destinationPath,
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,                                  indication_copy);
             "Storing indication handler for " + ph.GetProvider().getName());  
             STAT_PMS_PROVIDEREND
  
         _insertEntry(ph.GetProvider(), handler);  
     }     }
   
     catch(CIMException & e)     catch(CIMException & e)
     {     {
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
             "Exception: " + e.getMessage());             "Exception: " + e.getMessage());
  
         response->cimException = CIMException(e);          handler.setStatus(e.getCode(), e.getContentLanguages(), e.getMessage()); // l10n
     }     }
     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());
         response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms(  
             "ProviderManager.DefaultProviderManager.INTERNAL_ERROR",          handler.setStatus(CIM_ERR_FAILED, e.getContentLanguages(), e.getMessage()); // l10n
             "Internal Error"));  
     }     }
     catch(...)     catch(...)
     {     {
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,
             "Exception: Unknown");             "Exception: Unknown");
         response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms(  
             "ProviderManager.DefaultProviderManager.UNKNOWN_ERROR",          handler.setStatus(CIM_ERR_FAILED, "Unknown Error");
             "Unknown Error"));  
     }     }
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
Line 2226 
Line 2284 
     return(response);     return(response);
 } }
  
 Message * DefaultProviderManager::handleDisableIndicationsRequest(const Message * message)  
 {  
     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "DefaultProviderManager::handleDisableIndicationsRequest");  
  
     CIMDisableIndicationsRequestMessage * request =  
         dynamic_cast<CIMDisableIndicationsRequestMessage *>(const_cast<Message *>(message));  
  
     PEGASUS_ASSERT(request != 0);  
  
     CIMDisableIndicationsResponseMessage * response =  //
         new CIMDisableIndicationsResponseMessage(  // This function disables a provider module if disableProviderOnly is not true,
         request->messageId,  // otherwise, disables a provider. Disable provider module means that
         CIMException(),  // block all the providers which contain in the module and unload the
         request->queueIds.copyAndPop());  // providers.
   // Disable provider means unload the provider and the provider is not blocked.
   //
   // ATTN-YZ-P2-20030519: Provider needs to be blocked when disable a provider.
   //
   Message * DefaultProviderManager::handleDisableModuleRequest(const Message * message)
   {
       PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "DefaultProviderManager::handleDisableModuleRequest");
  
     // preserve message key      CIMDisableModuleRequestMessage * request =
     response->setKey(request->getKey());          dynamic_cast<CIMDisableModuleRequestMessage *>(const_cast<Message *>(message));
  
     //  Set HTTP method in response from request      PEGASUS_ASSERT(request != 0);
     response->setHttpMethod (request->getHttpMethod ());  
  
     OperationResponseHandler handler(request, response);      Array<Uint16> operationalStatus;
       CIMException cimException;
  
     try     try
     {     {
        String physicalName=_resolvePhysicalName(          // get provider module name
               request->providerModule.getProperty(          String moduleName;
                  request->providerModule.findProperty("Location")).getValue().toString());          CIMInstance mInstance = request->providerModule;
           Uint32 pos = mInstance.findProperty(CIMName ("Name"));
        ProviderName name(          PEGASUS_ASSERT(pos != PEG_NOT_FOUND);
                request->provider.getProperty(request->provider.findProperty          mInstance.getProperty(pos).getValue().get(moduleName);
                    ("Name")).getValue ().toString (),  
                physicalName,  
                request->providerModule.getProperty(request->providerModule.findProperty  
                     ("InterfaceType")).getValue().toString(),  
             0);  
   
         // get cached or load new provider module  
         OpProviderHolder ph =  
             providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);  
  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,          Boolean disableProviderOnly = request->disableProviderOnly;
             "Calling provider.disableIndications: " +  
             ph.GetProvider().getName());  
  
         ph.GetProvider().disableIndications();          //
           // Unload providers
           //
           Array<CIMInstance> _pInstances = request->providers;
           Array<Boolean> _indicationProviders = request->indicationProviders;
  
         ph.GetProvider().unprotect();          String physicalName=_resolvePhysicalName(
              mInstance.getProperty(
                 mInstance.findProperty("Location")).getValue().toString());
  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,          for(Uint32 i = 0, n = _pInstances.size(); i < n; i++)
             "Removing and Destroying indication handler for " +          {
             ph.GetProvider().getName());              String pName(_pInstances[i].getProperty(
                  _pInstances[i].findProperty("Name")).getValue().toString());
  
         delete _removeEntry(_generateKey(ph.GetProvider()));              Sint16 ret_value = providerManager.disableProvider(physicalName,pName);
     }  
  
     catch(CIMException & e)              if (ret_value == 0)
     {     {
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,                  // disable failed since there are pending requests,
             "Exception: " + e.getMessage());                  // stop trying to disable other providers in this module.
                   operationalStatus.append(CIM_MSE_OPSTATUS_VALUE_OK);
         response->cimException = CIMException(e);                  break;
     }     }
     catch(Exception & e)              else if (ret_value == 1)  // Success
     {     {
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,                  if (_indicationProviders[i])
             "Exception: " + e.getMessage());  
             response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms(  
             "ProviderManager.DefaultProviderManager.INTERNAL_ERROR",  
             "Internal Error"));  
     }  
     catch(...)  
     {     {
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,  
             "Exception: Unknown");  
             response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms(  
             "ProviderManager.DefaultProviderManager.UNKNOWN_ERROR",  
             "Unknown Error"));  
     }  
   
     PEG_METHOD_EXIT();  
   
     return(response);  
 }  
   
 Message * DefaultProviderManager::handleConsumeIndicationRequest(const Message *message)  
 {  
     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "DefaultProviderManager::handlConsumeIndicationRequest");  
   
     CIMConsumeIndicationRequestMessage *request =  
         dynamic_cast<CIMConsumeIndicationRequestMessage *>(const_cast<Message *>(message));  
   
     PEGASUS_ASSERT(request != 0);  
   
     CIMResponseMessage * response =  
         new CIMResponseMessage(  
         CIM_CONSUME_INDICATION_RESPONSE_MESSAGE,  
         request->messageId,  
         CIMException(),  
         request->queueIds.copyAndPop());  
   
     PEGASUS_ASSERT(response != 0);  
   
     response->setKey(request->getKey());  
   
     //  Set HTTP method in response from request  
     response->setHttpMethod (request->getHttpMethod ());  
   
     Uint32 type = 3;  
   
     try  
     {  
         ProviderName name(  
             String::EMPTY,  
             String::EMPTY,  
             String::EMPTY,  
             0);  
   
         /*  
         ProviderName name(  
             String::EMPTY,  
             String::EMPTY,  
             objectPath.toString());  
   
         // resolve provider name  
         name = _resolveProviderName(name);  
         */  
   
         // 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  
         // 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;  
   
         SimpleIndicationResponseHandler handler;  
   
         ph.GetProvider().consumeIndication(context,  
             "",  
             indication_copy);  
     }  
     catch(CIMException & e)  
     {  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,  
             "Exception: " + e.getMessage());  
   
         response->cimException = CIMException(e);  
     }  
     catch(Exception & e)  
     {  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,  
             "Exception: " + e.getMessage());  
         //l10n  
         //response->cimException = CIMException(CIM_ERR_FAILED, "Internal Error");  
         response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms(  
             "ProviderManager.DefaultProviderManager.INTERNAL_ERROR",  
             "Internal Error"));  
     }  
     catch(...)  
     {  
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,  
             "Exception: Unknown");  
         //l10n  
         //response->cimException = CIMException(CIM_ERR_FAILED, "Unknown Error");  
         response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms(  
             "ProviderManager.DefaultProviderManager.UNKNOWN_ERROR",  
             "Unknown Error"));  
     }  
   
     PEG_METHOD_EXIT();  
   
     return(response);  
 }  
   
   
 Message *DefaultProviderManager::handleExportIndicationRequest(const Message *message)  
 {  
    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,  
             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,                      //  Reset the indication provider's count of current
 // otherwise, disables a provider. Disable provider module means that                      //  subscriptions since it has been disabled
 // block all the providers which contain in the module and unload the  
 // providers.  
 // Disable provider means unload the provider and the provider is not blocked.  
 //  
 // ATTN-YZ-P2-20030519: Provider needs to be blocked when disable a provider.  
 // //
 Message * DefaultProviderManager::handleDisableModuleRequest(const Message * message)                      if (physicalName.size () > 0)
 {  
     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "DefaultProviderManager::handleDisableModuleRequest");  
   
     CIMDisableModuleRequestMessage * request =  
         dynamic_cast<CIMDisableModuleRequestMessage *>(const_cast<Message *>(message));  
   
     PEGASUS_ASSERT(request != 0);  
   
     Array<Uint16> operationalStatus;  
     Boolean disableProviderOnly = request->disableProviderOnly;  
     CIMException cimException;  
   
     ProviderRegistrationManager * _providerRegistrationManager = GetProviderRegistrationManager();  
   
     try  
     {     {
         // get provider module name                          OpProviderHolder ph = providerManager.getProvider(
         String moduleName;                              physicalName, pName);
         CIMInstance mInstance = request->providerModule;  
         Uint32 pos = mInstance.findProperty(CIMName ("Name"));  
  
         if(pos != PEG_NOT_FOUND)                          ph.GetProvider ().resetSubscriptions ();
         {  
                 mInstance.getProperty(pos).getValue().get(moduleName);  
         }  
   
         Boolean disableProviderOnly = request->disableProviderOnly;  
   
         //  
         // get operational status  
         //  
         if (!disableProviderOnly)  
         {  
             Uint32 pos2 = mInstance.findProperty(CIMName ("OperationalStatus"));  
             if (pos2 != PEG_NOT_FOUND)  
             {  
                 //  
                 //  ATTN-CAKG-P2-20020821: Check for null status?  
                 //  
                 mInstance.getProperty(pos2).getValue().get(operationalStatus);  
             }             }
  
             //             //
             // update module status from OK to Stopping                      //  If it is an indication provider
             //  
             for (Uint32 i=0, n = operationalStatus.size(); i < n; i++)  
             {  
                 if (operationalStatus[i] == _MODULE_OK)  
                 {  
                     operationalStatus.remove(i);  
                 }  
             }  
   
             operationalStatus.append(_MODULE_STOPPING);  
   
             if(_providerRegistrationManager->setProviderModuleStatus  
                 (moduleName, operationalStatus) == false)  
             {  
                 //l10n  
                 //throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "set module status failed.");  
                 throw PEGASUS_CIM_EXCEPTION_L(  
                     CIM_ERR_FAILED,  
                     MessageLoaderParms(  
                         "ProviderManager.ProviderManagerService."  
                             "SET_MODULE_STATUS_FAILED",  
                         "set module status failed."));  
             }  
         }  
   
         // Unload providers  
         Array<CIMInstance> _pInstances = request->providers;  
         Array<Boolean> _indicationProviders = request->indicationProviders;  
   
         String physicalName=_resolvePhysicalName(  
            mInstance.getProperty(  
               mInstance.findProperty("Location")).getValue().toString());  
   
         for(Uint32 i = 0, n = _pInstances.size(); i < n; i++)  
         {  
             String pName(_pInstances[i].getProperty(  
                _pInstances[i].findProperty("Name")).getValue().toString());  
   
             Sint16 ret_value = providerManager.disableProvider(physicalName,pName);  
   
             if (ret_value == 0)  
             {  
                 // disable failed since there are pending requests,  
                 // update module status from Stopping to OK if  
                 // disableProviderOnly is not true  
                 if (!disableProviderOnly)  
                 {  
                     for(Uint32 j=0, m = operationalStatus.size(); j < m; j++)  
                     {  
                         if (operationalStatus[j] == _MODULE_STOPPING)  
                         {  
                             operationalStatus.remove(j);  
                         }  
                     }  
   
                     operationalStatus.append(_MODULE_OK);  
   
                     if(_providerRegistrationManager->setProviderModuleStatus  
                         (moduleName, operationalStatus) == false)  
                     {  
                         throw PEGASUS_CIM_EXCEPTION_L(  
                             CIM_ERR_FAILED,  
                             MessageLoaderParms(  
                                 "ProviderManager.ProviderManagerService."  
                                     "SET_MODULE_STATUS_FAILED",  
                                 "set module status failed."));  
                     }  
                 }  
             }  
             else if (ret_value == 1)  
             {  
                 // if It is an indication provider  
                 // remove the entry from the table since the                 // remove the entry from the table since the
                 // provider has been disabled                 // provider has been disabled
                 if (_indicationProviders[i])                      //
                 {                      delete _removeEntry(_generateKey(pName,physicalName));
                     _removeEntry(_generateKey(pName,physicalName));  
                 }                 }
             }             }
             else             else
             {             {
                 // disable failed for other reason, throw exception                 // disable failed for other reason, throw exception
                 // update module status from Stopping to OK if  
                 // disableProviderOnly is not true  
                 if (!disableProviderOnly)  
                 {  
                     for(Uint32 j=0, m = operationalStatus.size(); j < m; j++)  
                     {  
                         if (operationalStatus[j] == _MODULE_STOPPING)  
                         {  
                             operationalStatus.remove(j);  
                         }  
                     }  
   
                     operationalStatus.append(_MODULE_OK);  
   
                     if(_providerRegistrationManager->setProviderModuleStatus  
                         (moduleName, operationalStatus) == false)  
                     {  
                         throw PEGASUS_CIM_EXCEPTION_L(  
                             CIM_ERR_FAILED,  
                             MessageLoaderParms(  
                                 "ProviderManager.ProviderManagerService."  
                                     "SET_MODULE_STATUS_FAILED",  
                                 "set module status failed."));  
                     }  
                 }  
   
                 throw PEGASUS_CIM_EXCEPTION_L(                 throw PEGASUS_CIM_EXCEPTION_L(
                     CIM_ERR_FAILED,                     CIM_ERR_FAILED,
                     MessageLoaderParms(                     MessageLoaderParms(
Line 2678 
Line 2378 
                         "Failed to disable the provider."));                         "Failed to disable the provider."));
             }             }
         }         }
         // disable succeed  
         // update module status from Stopping to Stopped if  
         // disableProviderOnly is not true  
         if (!disableProviderOnly)  
         {  
             // update module status from Stopping to Stopped  
             for(Uint32 j=0, m = operationalStatus.size(); j < m; j++)  
             {  
                 if (operationalStatus[j] == _MODULE_STOPPING)  
                 {  
                     operationalStatus.remove(j);  
                     operationalStatus.append(_MODULE_STOPPED);  
                 }  
             }  
   
             if(_providerRegistrationManager->setProviderModuleStatus  
                (moduleName, operationalStatus) == false)  
             {  
                 //l10n  
                 //throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED,  
                 //"set module status failed.");  
                 throw PEGASUS_CIM_EXCEPTION_L(  
                       CIM_ERR_FAILED,  
                       MessageLoaderParms(  
                       "ProviderManager.ProviderManagerService."  
                        "SET_MODULE_STATUS_FAILED",  
                        "set module status failed."));  
             }  
        }  
     }     }
     catch(CIMException & e)     catch(CIMException & e)
     {     {
Line 2733 
Line 2404 
                 "Unknown Error"));                 "Unknown Error"));
     }     }
  
       if (cimException.getCode() == CIM_ERR_SUCCESS)
       {
           // Status is set to OK if a provider was busy
           if (operationalStatus.size() == 0)
           {
               operationalStatus.append(CIM_MSE_OPSTATUS_VALUE_STOPPED);
           }
       }
       else
       {
           // If exception occurs, module is not stopped
           operationalStatus.append(CIM_MSE_OPSTATUS_VALUE_OK);
       }
   
     CIMDisableModuleResponseMessage * response =     CIMDisableModuleResponseMessage * response =
         new CIMDisableModuleResponseMessage(         new CIMDisableModuleResponseMessage(
         request->messageId,         request->messageId,
Line 2753 
Line 2438 
  
 Message * DefaultProviderManager::handleEnableModuleRequest(const Message * message) Message * DefaultProviderManager::handleEnableModuleRequest(const Message * message)
 { {
     // HACK  
     ProviderRegistrationManager * _providerRegistrationManager = GetProviderRegistrationManager();  
   
     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "DefaultProviderManager::handleEnableModuleRequest");     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "DefaultProviderManager::handleEnableModuleRequest");
  
     CIMEnableModuleRequestMessage * request =     CIMEnableModuleRequestMessage * request =
Line 2763 
Line 2445 
  
     PEGASUS_ASSERT(request != 0);     PEGASUS_ASSERT(request != 0);
  
     //  
     // get module status  
     //  
     CIMInstance mInstance = request->providerModule;  
     Array<Uint16> operationalStatus;     Array<Uint16> operationalStatus;
     Uint32 pos = mInstance.findProperty(CIMName ("OperationalStatus"));      operationalStatus.append(CIM_MSE_OPSTATUS_VALUE_OK);
   
     if(pos != PEG_NOT_FOUND)  
     {  
         //  
         //  ATTN-CAKG-P2-20020821: Check for null status?  
         //  
         mInstance.getProperty(pos).getValue().get(operationalStatus);  
     }  
   
     // update module status from Stopped to OK  
     for(Uint32 i=0, n = operationalStatus.size(); i < n; i++)  
     {  
         if(operationalStatus[i] == _MODULE_STOPPED)  
         {  
             operationalStatus.remove(i);  
         }  
     }  
   
     operationalStatus.append(_MODULE_OK);  
   
     //  
     // get module name  
     //  
     String moduleName;  
   
     Uint32 pos2 = mInstance.findProperty(CIMName ("Name"));  
   
     if(pos2 != PEG_NOT_FOUND)  
     {  
         mInstance.getProperty(pos2).getValue().get(moduleName);  
     }  
   
     if(_providerRegistrationManager->setProviderModuleStatus  
         (moduleName, operationalStatus) == false)  
     {  
         //l10n  
         //throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "set module status failed.");  
         throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, MessageLoaderParms(  
             "ProviderManager.DefaultProviderManager.SET_MODULE_STATUS_FAILED",  
             "set module status failed."));  
     }  
  
     CIMEnableModuleResponseMessage * response =     CIMEnableModuleResponseMessage * response =
         new CIMEnableModuleResponseMessage(         new CIMEnableModuleResponseMessage(
Line 2818 
Line 2455 
         request->queueIds.copyAndPop(),         request->queueIds.copyAndPop(),
         operationalStatus);         operationalStatus);
  
     PEGASUS_ASSERT(response != 0);  
   
     // preserve message key     // preserve message key
     response->setKey(request->getKey());     response->setKey(request->getKey());
  
Line 2827 
Line 2462 
     response->setHttpMethod (request->getHttpMethod ());     response->setHttpMethod (request->getHttpMethod ());
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
   
     return(response);     return(response);
 } }
  
Line 2862 
Line 2496 
     return(response);     return(response);
 } }
  
   Message *
   DefaultProviderManager::handleSubscriptionInitCompleteRequest
       (const Message * message)
   {
       PEG_METHOD_ENTER (TRC_PROVIDERMANAGER,
        "DefaultProviderManager::handleSubscriptionInitCompleteRequest");
   
       CIMSubscriptionInitCompleteRequestMessage * request =
           dynamic_cast <CIMSubscriptionInitCompleteRequestMessage *>
               (const_cast <Message *> (message));
   
       PEGASUS_ASSERT (request != 0);
   
       CIMSubscriptionInitCompleteResponseMessage * response =
           dynamic_cast <CIMSubscriptionInitCompleteResponseMessage *>
               (request->buildResponse ());
   
       PEGASUS_ASSERT (response != 0);
   
       //
       //  Set indicator
       //
       _subscriptionInitComplete = true;
   
       //
       //  For each provider that has at least one subscription, call
       //  provider's enableIndications method
       //
       Array <Provider *> enableProviders;
       enableProviders = providerManager.getIndicationProvidersToEnable ();
   
       Uint32 numProviders = enableProviders.size ();
       for (Uint32 i = 0; i < numProviders; i++)
       {
           try
           {
               CIMInstance provider;
               provider = enableProviders [i]->getProviderInstance ();
   
               //
               //  Get cached or load new provider module
               //
               OpProviderHolder ph = providerManager.getProvider(
                   enableProviders[i]->getModule()->getFileName(),
                   enableProviders[i]->getName());
   
               _callEnableIndications (provider, _indicationCallback, ph);
           }
           catch (CIMException & e)
           {
               PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                   "CIMException: " + e.getMessage ());
           }
           catch (Exception & e)
           {
               PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                   "Exception: " + e.getMessage ());
           }
           catch(...)
           {
               PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                   "Unknown error in handleSubscriptionInitCompleteRequest");
           }
       }
   
       PEG_METHOD_EXIT ();
       return (response);
   }
   
 void DefaultProviderManager::_insertEntry ( void DefaultProviderManager::_insertEntry (
     const Provider & provider,     const Provider & provider,
     const EnableIndicationsResponseHandler *handler)     const EnableIndicationsResponseHandler *handler)
 { {
     PEG_METHOD_ENTER (TRC_INDICATION_SERVICE,      PEG_METHOD_ENTER (TRC_PROVIDERMANAGER,
         "DefaultProviderManager::_insertEntry");         "DefaultProviderManager::_insertEntry");
  
     String tableKey = _generateKey     String tableKey = _generateKey
Line 2880 
Line 2583 
 EnableIndicationsResponseHandler * DefaultProviderManager::_removeEntry( EnableIndicationsResponseHandler * DefaultProviderManager::_removeEntry(
     const String & key)     const String & key)
 { {
     PEG_METHOD_ENTER (TRC_INDICATION_SERVICE,      PEG_METHOD_ENTER (TRC_PROVIDERMANAGER,
         "DefaultProviderManager::_removeEntry");         "DefaultProviderManager::_removeEntry");
     EnableIndicationsResponseHandler *ret = 0;     EnableIndicationsResponseHandler *ret = 0;
  
Line 2897 
Line 2600 
 { {
     String tableKey;     String tableKey;
  
     PEG_METHOD_ENTER (TRC_INDICATION_SERVICE,      PEG_METHOD_ENTER (TRC_PROVIDERMANAGER,
         "DefaultProviderManager::_generateKey");         "DefaultProviderManager::_generateKey");
  
     //     //
Line 2919 
Line 2622 
 { {
     String tableKey;     String tableKey;
  
     PEG_METHOD_ENTER (TRC_INDICATION_SERVICE,      PEG_METHOD_ENTER (TRC_PROVIDERMANAGER,
                       "DefaultProviderManagerService::_generateKey");                       "DefaultProviderManagerService::_generateKey");
  
     //     //
Line 2932 
Line 2635 
     return tableKey;     return tableKey;
 } }
  
 ProviderName DefaultProviderManager::_resolveProviderName(const ProviderName & providerName)  ProviderName DefaultProviderManager::_resolveProviderName(
       const ProviderIdContainer & providerId)
   {
       String providerName;
       String fileName;
       String interfaceName;
       CIMValue genericValue;
   
       genericValue = providerId.getProvider().getProperty(
           providerId.getProvider().findProperty("Name")).getValue();
       genericValue.get(providerName);
   
       genericValue = providerId.getModule().getProperty(
           providerId.getModule().findProperty("Location")).getValue();
       genericValue.get(fileName);
       fileName = _resolvePhysicalName(fileName);
   
       // ATTN: This attribute is probably not required
       genericValue = providerId.getModule().getProperty(
           providerId.getModule().findProperty("InterfaceType")).getValue();
       genericValue.get(interfaceName);
   
       return ProviderName(providerName, fileName, interfaceName, 0);
   }
   
   Boolean DefaultProviderManager::hasActiveProviders()
   {
       return providerManager.hasActiveProviders();
   }
   
   void DefaultProviderManager::unloadIdleProviders()
   {
       providerManager.unloadIdleProviders();
   }
   
   void DefaultProviderManager::_callEnableIndications
       (CIMInstance & req_provider,
        PEGASUS_INDICATION_CALLBACK _indicationCallback,
        OpProviderHolder & ph)
   {
       PEG_METHOD_ENTER (TRC_PROVIDERMANAGER,
           "DefaultProviderManager::_callEnableIndications");
   
       try
 { {
     ProviderName temp = findProvider(providerName);          CIMRequestMessage * request = 0;
     String physicalName = _resolvePhysicalName(temp.getPhysicalName());          CIMResponseMessage * response = 0;
     temp.setPhysicalName(physicalName);          EnableIndicationsResponseHandler * enableHandler =
               new EnableIndicationsResponseHandler
                   (request, response, req_provider, _indicationCallback);
   
           PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               "Calling provider.enableIndications: " +
               ph.GetProvider ().getName ());
  
     return(temp);          pm_service_op_lock op_lock (& ph.GetProvider ());
           ph.GetProvider ().protect ();
           ph.GetProvider ().enableIndications (* enableHandler);
   
           //
           //  Store the handler so it is persistent for as
           //  long as the provider has indications enabled
           //
           PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL4,
               "Storing indication handler for " +
               ph.GetProvider ().getName ());
   
           _insertEntry (ph.GetProvider (), enableHandler);
 } }
       catch (CIMException & e)
       {
           PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
               "CIMException: " + e.getMessage ());
  
 ProviderName DefaultProviderManager::_resolveProviderName(String & destinationPath)          Logger::put_l (Logger::ERROR_LOG, System::CIMSERVER, Logger::WARNING,
               "ProviderManager.Default.DefaultProviderManager."
                   "ENABLE_INDICATIONS_FAILED",
               "Failed to enable indications for provider $0: $1.",
               ph.GetProvider ().getName (), e.getMessage ());
       }
       catch (Exception & e)
 { {
     ProviderName temp = findProvider(destinationPath);          PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
               "Exception: " + e.getMessage ());
  
     String physicalName = _resolvePhysicalName(temp.getPhysicalName());          Logger::put_l (Logger::ERROR_LOG, System::CIMSERVER, Logger::WARNING,
               "ProviderManager.Default.DefaultProviderManager."
                   "ENABLE_INDICATIONS_FAILED",
               "Failed to enable indications for provider $0: $1.",
               ph.GetProvider ().getName (), e.getMessage ());
       }
       catch(...)
       {
           PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
               "Unexpected error in _callEnableIndications");
  
     temp.setPhysicalName(physicalName);          Logger::put_l (Logger::ERROR_LOG, System::CIMSERVER, Logger::WARNING,
               "ProviderManager.Default.DefaultProviderManager."
                   "ENABLE_INDICATIONS_FAILED_UNKNOWN",
               "Failed to enable indications for provider $0.",
               ph.GetProvider ().getName ());
       }
  
     return(temp);      PEG_METHOD_EXIT ();
 } }
  
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END


Legend:
Removed from v.1.22  
changed lines
  Added in v.1.50

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2