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

Diff for /pegasus/src/Pegasus/ProviderManager2/Attic/BasicProviderManagerRouter.cpp between version 1.10 and 1.28

version 1.10, 2004/07/28 11:41:05 version 1.28, 2006/02/10 19:13:47
Line 1 
Line 1 
 //%2003////////////////////////////////////////////////////////////////////////  //%2006////////////////////////////////////////////////////////////////////////
 // //
 // 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.
   // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
   // EMC Corporation; Symantec 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 27 
Line 33 
 //         Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com) //         Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
 // //
 // Modified By: Seema Gupta(gseema@in.ibm.com) for PEP135 // Modified By: Seema Gupta(gseema@in.ibm.com) for PEP135
   //              Sean Keenan, Hewlett-Packard Company (sean.keenan@hp.com)
   //              Carol Ann Krug Graves, Hewlett-Packard Company
   //                  (carolann_graves@hp.com)
   //              Josephine Eskaline Joyce, IBM (jojustin@in.ibm.com) for Bug#2619, #2685,#3354
   //              John Alex, IBM (johnalex@us.ibm.com) - Bug#2290
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 36 
Line 47 
 #include <Pegasus/Common/OperationContextInternal.h> #include <Pegasus/Common/OperationContextInternal.h>
 #include <Pegasus/Common/CIMMessage.h> #include <Pegasus/Common/CIMMessage.h>
 #include <Pegasus/Common/Tracer.h> #include <Pegasus/Common/Tracer.h>
   #include <Pegasus/Common/Logger.h>
   #include <Pegasus/Common/FileSystem.h>
   #include <Pegasus/Config/ConfigManager.h>
 #include <Pegasus/ProviderManager2/OperationResponseHandler.h> #include <Pegasus/ProviderManager2/OperationResponseHandler.h>
 #include <Pegasus/ProviderManager2/ProviderManagerModule.h> #include <Pegasus/ProviderManager2/ProviderManagerModule.h>
 #include <Pegasus/ProviderManager2/ProviderManager.h> #include <Pegasus/ProviderManager2/ProviderManager.h>
  
 // ProviderManager library names.  Should these be defined elsewhere? // ProviderManager library names.  Should these be defined elsewhere?
 #if defined(PEGASUS_OS_OS400) #if defined(PEGASUS_OS_OS400)
 # define LIBRARY_NAME_DEFAULTPM "QSYS/QYCMDFTPVM"  # define LIBRARY_NAME_DEFAULTPM "QSYS/QYCMPMDE00"
 # define LIBRARY_NAME_CMPIPM    "QSYS/QYCMCMPIPM" # define LIBRARY_NAME_CMPIPM    "QSYS/QYCMCMPIPM"
 # define LIBRARY_NAME_JMPIPM    "QSYS/QYCMJMPIPM" # define LIBRARY_NAME_JMPIPM    "QSYS/QYCMJMPIPM"
 #else #else
Line 72 
Line 86 
         const String& physicalName,         const String& physicalName,
         const String& logicalName,         const String& logicalName,
         const String& interfaceName,         const String& interfaceName,
         PEGASUS_INDICATION_CALLBACK indicationCallback)          PEGASUS_INDICATION_CALLBACK indicationCallback,
           Boolean subscriptionInitComplete)
     : _manager(0)     : _manager(0)
     {     {
         _physicalName = ProviderManager::_resolvePhysicalName(physicalName);  #if defined (PEGASUS_OS_VMS)
           _physicalName = ConfigManager::getInstance()->getCurrentValue("providerDir") +
               String("/") + FileSystem::buildLibraryFileName(physicalName) + String(".exe");
   #elif defined (PEGASUS_OS_OS400)
           _physicalName = physicalName;
   #else
           _physicalName = ConfigManager::getHomedPath(PEGASUS_DEST_LIB_DIR) +
               String("/") + FileSystem::buildLibraryFileName(physicalName);
   #endif
  
         _logicalName = logicalName;         _logicalName = logicalName;
         _interfaceName = interfaceName;         _interfaceName = interfaceName;
  
         _module = ProviderManagerModule(_physicalName);         _module = ProviderManagerModule(_physicalName);
         _module.load();          Boolean moduleLoaded = _module.load();
  
           if (moduleLoaded)
           {
         _manager = _module.getProviderManager(_logicalName);         _manager = _module.getProviderManager(_logicalName);
         PEGASUS_ASSERT(_manager != 0);          }
           else
           {
               PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                   "ProviderManagerModule load failed.");
           }
   
           if (_manager == 0)
           {
               PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                   "Failed to load ProviderManager \"" + _physicalName + "\".");
   
               Logger::put_l(
                   Logger::ERROR_LOG, System::CIMSERVER, Logger::SEVERE,
                   "ProviderManager.BasicProviderManagerRouter."
                       "PROVIDERMANAGER_LOAD_FAILED",
                   "Failed to load the Provider Manager for interface type \"$0\""
                       " from library \"$1\".",
                   _interfaceName, _physicalName);
   
               throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, MessageLoaderParms(
                   "ProviderManager.BasicProviderManagerRouter."
                       "PROVIDERMANAGER_LOAD_FAILED",
                   "Failed to load the Provider Manager for interface type \"$0\""
                       " from library \"$1\".",
                   _interfaceName, _physicalName));
           }
  
         _manager->setIndicationCallback(indicationCallback);         _manager->setIndicationCallback(indicationCallback);
   
           _manager->setSubscriptionInitComplete (subscriptionInitComplete);
     }     }
  
     ~ProviderManagerContainer()     ~ProviderManagerContainer()
     {     {
           delete _manager;
         _module.unload();         _module.unload();
     }     }
  
Line 145 
Line 199 
  
 PEGASUS_INDICATION_CALLBACK BasicProviderManagerRouter::_indicationCallback = 0; PEGASUS_INDICATION_CALLBACK BasicProviderManagerRouter::_indicationCallback = 0;
  
 // Private, unimplemented constructor  
 BasicProviderManagerRouter::BasicProviderManagerRouter()  
 {  
 }  
   
 BasicProviderManagerRouter::BasicProviderManagerRouter( BasicProviderManagerRouter::BasicProviderManagerRouter(
     PEGASUS_INDICATION_CALLBACK indicationCallback)     PEGASUS_INDICATION_CALLBACK indicationCallback)
 { {
Line 157 
Line 206 
         "BasicProviderManagerRouter::BasicProviderManagerRouter");         "BasicProviderManagerRouter::BasicProviderManagerRouter");
  
     _indicationCallback = indicationCallback;     _indicationCallback = indicationCallback;
       _subscriptionInitComplete = false;
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
 } }
Line 165 
Line 215 
 { {
     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,
         "BasicProviderManagerRouter::~BasicProviderManagerRouter");         "BasicProviderManagerRouter::~BasicProviderManagerRouter");
       /* Clean up the provider managers */
       for (Uint32 i = 0, n = _providerManagerTable.size(); i < n; i++)
       {
            ProviderManagerContainer* pmc=_providerManagerTable[i];
            delete pmc;
       }
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
 } }
  
Line 218 
Line 274 
         providerModule = dmReq->providerModule;         providerModule = dmReq->providerModule;
     }     }
     else if ((request->getType() == CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE) ||     else if ((request->getType() == CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE) ||
                (request->getType() ==
                 CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE) ||
              (request->getType() == CIM_NOTIFY_CONFIG_CHANGE_REQUEST_MESSAGE))              (request->getType() == CIM_NOTIFY_CONFIG_CHANGE_REQUEST_MESSAGE))
     {     {
         // This operation is not provider-specific         // This operation is not provider-specific
Line 236 
Line 294 
     // Forward the request to the appropriate ProviderManager(s)     // Forward the request to the appropriate ProviderManager(s)
     //     //
  
     if (request->getType() == CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE)      if ((request->getType() == CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE) ||
           (request->getType() ==
            CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE))
     {     {
         // Send CIMStopAllProvidersRequestMessage to all ProviderManagers          _subscriptionInitComplete = true;
   
           // Send CIMStopAllProvidersRequestMessage or
           // CIMSubscriptionInitCompleteRequestMessage to all ProviderManagers
         ReadLock tableLock(_providerManagerTableLock);         ReadLock tableLock(_providerManagerTableLock);
         for (Uint32 i = 0, n = _providerManagerTable.size(); i < n; i++)         for (Uint32 i = 0, n = _providerManagerTable.size(); i < n; i++)
         {         {
Line 266 
Line 329 
             providerModule.findProperty("InterfaceType")).getValue();             providerModule.findProperty("InterfaceType")).getValue();
         itValue.get(interfaceType);         itValue.get(interfaceType);
  
           ProviderManager* pm = 0;
           Boolean gotError = false;
           try
           {
         // Look up the appropriate ProviderManager by InterfaceType         // Look up the appropriate ProviderManager by InterfaceType
         ProviderManager* pm = _lookupProviderManager(interfaceType);              pm = _lookupProviderManager(interfaceType);
         if (remoteNameSpaceRequest && !pm->supportsRemoteNameSpaces()) {          }
           catch (const CIMException& e)
           {
               CIMResponseMessage* cimResponse = request->buildResponse();
               cimResponse->cimException = e;
               response = cimResponse;
               gotError = true;
           }
   
           if (remoteNameSpaceRequest && !pm->supportsRemoteNameSpaces())
           {
            CIMResponseMessage* resp = request->buildResponse();            CIMResponseMessage* resp = request->buildResponse();
            resp->cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED,            resp->cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED,
                "Remote Namespace operations not supported for interface type "+interfaceType);                  "Remote Namespace operations not supported for interface type "
                       + interfaceType);
            response = resp;            response = resp;
               gotError = true;
           }
   
           if (!gotError)
           {
               response = pm->processMessage(request);
         }         }
         else response = pm->processMessage(request);  
     }     }
  
     // preserve message key     // preserve message key
     response->setKey(request->getKey());  
   
     // set HTTP method in response from request     // set HTTP method in response from request
     response->setHttpMethod(request->getHttpMethod());      // set closeConnect
      ((CIMResponseMessage *)response)->syncAttributes(request);
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
     return response;     return response;
Line 328 
Line 410 
         {         {
             ProviderManagerContainer* pmc = new ProviderManagerContainer(             ProviderManagerContainer* pmc = new ProviderManagerContainer(
                 LIBRARY_NAME_DEFAULTPM, "DEFAULT", "C++Default",                 LIBRARY_NAME_DEFAULTPM, "DEFAULT", "C++Default",
                 _indicationCallback);                  _indicationCallback, _subscriptionInitComplete);
             _providerManagerTable.append(pmc);             _providerManagerTable.append(pmc);
             return pmc->getProviderManager();             return pmc->getProviderManager();
         }         }
 #endif #endif
  
 #if defined(ENABLE_CMPI_PROVIDER_MANAGER)  #if defined(PEGASUS_ENABLE_CMPI_PROVIDER_MANAGER)
         if (interfaceType == "CMPI")         if (interfaceType == "CMPI")
         {         {
             ProviderManagerContainer* pmc = new ProviderManagerContainer(             ProviderManagerContainer* pmc = new ProviderManagerContainer(
                 LIBRARY_NAME_CMPIPM, "CMPI", "CMPI", _indicationCallback);                  LIBRARY_NAME_CMPIPM, "CMPI", "CMPI", _indicationCallback,
                   _subscriptionInitComplete);
             _providerManagerTable.append(pmc);             _providerManagerTable.append(pmc);
             return pmc->getProviderManager();             return pmc->getProviderManager();
         }         }
 #endif #endif
  
 #if defined(ENABLE_JMPI_PROVIDER_MANAGER)  #if defined(PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER)
         if (interfaceType == "JMPI")         if (interfaceType == "JMPI")
         {         {
             ProviderManagerContainer* pmc = new ProviderManagerContainer(             ProviderManagerContainer* pmc = new ProviderManagerContainer(
                 LIBRARY_NAME_JMPIPM, "JMPI", "JMPI", _indicationCallback);                  LIBRARY_NAME_JMPIPM, "JMPI", "JMPI", _indicationCallback,
                   _subscriptionInitComplete);
             _providerManagerTable.append(pmc);             _providerManagerTable.append(pmc);
             return pmc->getProviderManager();             return pmc->getProviderManager();
         }         }


Legend:
Removed from v.1.10  
changed lines
  Added in v.1.28

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2