(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.16 and 1.26.8.3

version 1.16, 2005/02/06 21:23:07 version 1.26.8.3, 2006/03/10 14:30:39
Line 1 
Line 1 
 //%2005////////////////////////////////////////////////////////////////////////  //%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.
Line 8 
Line 8 
 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 // EMC Corporation; VERITAS Software Corporation; The Open Group. // 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 32 
Line 34 
 // //
 // 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) //              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 41 
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/Common/FileSystem.h>
 #include <Pegasus/Config/ConfigManager.h> #include <Pegasus/Config/ConfigManager.h>
 #include <Pegasus/ProviderManager2/OperationResponseHandler.h> #include <Pegasus/ProviderManager2/OperationResponseHandler.h>
Line 49 
Line 56 
  
 // 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 79 
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_T indicationCallback,
           PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback,
           Boolean subscriptionInitComplete)
     : _manager(0)     : _manager(0)
     {     {
 #if defined (PEGASUS_OS_VMS) #if defined (PEGASUS_OS_VMS)
         _physicalName = FileSystem::buildLibraryFileName(physicalName);          _physicalName = ConfigManager::getInstance()->getCurrentValue("providerDir") +
               String("/") + FileSystem::buildLibraryFileName(physicalName) + String(".exe");
   #elif defined (PEGASUS_OS_OS400)
           _physicalName = physicalName;
 #else #else
         _physicalName = ConfigManager::getHomedPath(PEGASUS_DEST_LIB_DIR) +         _physicalName = ConfigManager::getHomedPath(PEGASUS_DEST_LIB_DIR) +
             String("/") + FileSystem::buildLibraryFileName(physicalName);             String("/") + FileSystem::buildLibraryFileName(physicalName);
Line 93 
Line 105 
         _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->setResponseChunkCallback(responseChunkCallback);
   
           _manager->setSubscriptionInitComplete (subscriptionInitComplete);
     }     }
  
     ~ProviderManagerContainer()     ~ProviderManagerContainer()
     {     {
           delete _manager;
         _module.unload();         _module.unload();
     }     }
  
Line 155 
Line 199 
 // END TEMP SECTION // END TEMP SECTION
  
  
 PEGASUS_INDICATION_CALLBACK BasicProviderManagerRouter::_indicationCallback = 0;  PEGASUS_INDICATION_CALLBACK_T
       BasicProviderManagerRouter::_indicationCallback = 0;
  
 // Private, unimplemented constructor  PEGASUS_RESPONSE_CHUNK_CALLBACK_T
 BasicProviderManagerRouter::BasicProviderManagerRouter()      BasicProviderManagerRouter::_responseChunkCallback = 0;
 {  
 }  
  
 BasicProviderManagerRouter::BasicProviderManagerRouter( BasicProviderManagerRouter::BasicProviderManagerRouter(
     PEGASUS_INDICATION_CALLBACK indicationCallback)      PEGASUS_INDICATION_CALLBACK_T indicationCallback,
       PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 { {
     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,
         "BasicProviderManagerRouter::BasicProviderManagerRouter");         "BasicProviderManagerRouter::BasicProviderManagerRouter");
  
     _indicationCallback = indicationCallback;     _indicationCallback = indicationCallback;
       _responseChunkCallback = responseChunkCallback;
       _subscriptionInitComplete = false;
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
 } }
Line 177 
Line 223 
 { {
     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 230 
Line 282 
         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 248 
Line 302 
     // 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 278 
Line 337 
             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 339 
Line 417 
         if (interfaceType == "C++Default")         if (interfaceType == "C++Default")
         {         {
             ProviderManagerContainer* pmc = new ProviderManagerContainer(             ProviderManagerContainer* pmc = new ProviderManagerContainer(
                 LIBRARY_NAME_DEFAULTPM, "DEFAULT", "C++Default",                  LIBRARY_NAME_DEFAULTPM,
                 _indicationCallback);                  "DEFAULT",
                   "C++Default",
                   _indicationCallback,
                   _responseChunkCallback,
                   _subscriptionInitComplete);
             _providerManagerTable.append(pmc);             _providerManagerTable.append(pmc);
             return pmc->getProviderManager();             return pmc->getProviderManager();
         }         }
Line 350 
Line 432 
         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,
                   _responseChunkCallback,
                   _subscriptionInitComplete);
             _providerManagerTable.append(pmc);             _providerManagerTable.append(pmc);
             return pmc->getProviderManager();             return pmc->getProviderManager();
         }         }
 #endif #endif
  
 #if defined(PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER) #if defined(PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER)
         if (interfaceType == "JMPI")          if (  interfaceType == "JMPI"
              || interfaceType == "JMPIExperimental"
              )
         {         {
             ProviderManagerContainer* pmc = new ProviderManagerContainer(             ProviderManagerContainer* pmc = new ProviderManagerContainer(
                 LIBRARY_NAME_JMPIPM, "JMPI", "JMPI", _indicationCallback);                  LIBRARY_NAME_JMPIPM,
                   interfaceType,
                   interfaceType,
                   _indicationCallback,
                   _responseChunkCallback,
                   _subscriptionInitComplete);
             _providerManagerTable.append(pmc);             _providerManagerTable.append(pmc);
             return pmc->getProviderManager();             return pmc->getProviderManager();
         }         }


Legend:
Removed from v.1.16  
changed lines
  Added in v.1.26.8.3

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2