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

Diff for /pegasus/src/Pegasus/ProviderManager2/Attic/ProviderManagerService.cpp between version 1.13 and 1.21

version 1.13, 2003/10/17 04:02:11 version 1.21, 2003/11/04 05:20:22
Line 1 
Line 1 
 //%/////////////////////////////////////////////////////////////////////////////  //%2003////////////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000 - 2003 BMC Software, Hewlett-Packard Company, IBM,  // Copyright (c) 2000, 2001, 2002  BMC Software, Hewlett-Packard Development
 // 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.;
   // IBM Corp.; EMC 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 28 
Line 30 
 //              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)
   //              Adrian Schuur, IBM (schuur@de.ibm.com)
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 42 
Line 45 
  
 #include <Pegasus/Config/ConfigManager.h> #include <Pegasus/Config/ConfigManager.h>
  
   #include <Pegasus/ProviderManager2/ProviderManagerModule.h>
   #include <Pegasus/ProviderManager2/ProviderManager.h>
   
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
 // BEGIN TEMP SECTION // BEGIN TEMP SECTION
 class ProviderManagerContainer class ProviderManagerContainer
 { {
 public: public:
     ProviderManagerContainer(const String & physicalName, const String & logicalName, const String & interfaceName)      ProviderManagerContainer(void) : _manager(0)
       {
       }
   
       ProviderManagerContainer(const ProviderManagerContainer & container) : _manager(0)
       {
           *this = container;
       }
   
       ProviderManagerContainer(const String & physicalName, const String & logicalName, const String & interfaceName) : _manager(0)
     {     {
         #if defined(PEGASUS_OS_TYPE_WINDOWS)         #if defined(PEGASUS_OS_TYPE_WINDOWS)
         _physicalName = physicalName + String(".dll");         _physicalName = physicalName + String(".dll");
         #elif defined(PEGASUS_OS_HPUX) && defined(PEGASUS_PLATFORM_HPUX_PARISC_ACC)         #elif defined(PEGASUS_OS_HPUX) && defined(PEGASUS_PLATFORM_HPUX_PARISC_ACC)
         _physicalName = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));         _physicalName = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));
         _physicalName.append(String("/lib") + physical + String(".sl"));          _physicalName.append(String("/lib") + physicalName + String(".sl"));
         #elif defined(PEGASUS_OS_HPUX) && !defined(PEGASUS_PLATFORM_HPUX_PARISC_ACC)         #elif defined(PEGASUS_OS_HPUX) && !defined(PEGASUS_PLATFORM_HPUX_PARISC_ACC)
         _physicalName = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));         _physicalName = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));
         _physicalName.append(String("/lib") + physical + String(".so"));          _physicalName.append(String("/lib") + physicalName + String(".so"));
         #elif defined(PEGASUS_OS_OS400)         #elif defined(PEGASUS_OS_OS400)
         _physicalName = physicalName;         _physicalName = physicalName;
         #else         #else
         _physicalName = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));         _physicalName = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));
         _physicalName.append(String("/lib") + physical + String(".so"));          _physicalName.append(String("/lib") + physicalName + String(".so"));
         #endif         #endif
  
         _logicalName = logicalName;         _logicalName = logicalName;
Line 74 
Line 89 
         _module.load();         _module.load();
  
         _manager = _module.getProviderManager(_logicalName);         _manager = _module.getProviderManager(_logicalName);
   
           PEGASUS_ASSERT(_manager != 0);
     }     }
  
     ~ProviderManagerContainer(void)     ~ProviderManagerContainer(void)
Line 81 
Line 98 
         _module.unload();         _module.unload();
     }     }
  
     ProviderManager & getProviderManager(void)      ProviderManagerContainer & operator=(const ProviderManagerContainer & container)
     {     {
         return(*_manager);          if(this == &container)
           {
               return(*this);
           }
   
           _logicalName = container._logicalName;
           _physicalName = container._physicalName;
           _interfaceName = container._interfaceName;
   
           _module = container._module;
           _manager = container._manager;
   
           return(*this);
     }     }
  
     String & getPhysicalName(void)      ProviderManager *getProviderManager(void)
       {
           return _manager;
       }
   
       const String & getPhysicalName(void) const
     {     {
         return(_physicalName);         return(_physicalName);
     }     }
  
     String & getLogicalName(void)      const String & getLogicalName(void) const
     {     {
         return(_logicalName);         return(_logicalName);
     }     }
  
     String & getInterfaceName(void)      const String & getInterfaceName(void) const
     {     {
         return(_interfaceName);         return(_interfaceName);
     }     }
Line 111 
Line 145 
  
 }; };
  
 static Array<ProviderManagerContainer> _providerManagers;  static Array<ProviderManagerContainer*> _providerManagers;
 // END TEMP SECTION // END TEMP SECTION
  
 inline Boolean _isSupportedRequestType(const Message * message) inline Boolean _isSupportedRequestType(const Message * message)
Line 132 
Line 166 
     return(false);     return(false);
 } }
  
   ProviderManagerService* ProviderManagerService::providerManagerService=NULL;
   
 ProviderManagerService::ProviderManagerService(void) ProviderManagerService::ProviderManagerService(void)
     : MessageQueueService(PEGASUS_QUEUENAME_PROVIDERMANAGER_CPP)     : MessageQueueService(PEGASUS_QUEUENAME_PROVIDERMANAGER_CPP)
 { {
       providerManagerService=this;
 } }
  
 ProviderManagerService::ProviderManagerService(ProviderRegistrationManager * providerRegistrationManager) ProviderManagerService::ProviderManagerService(ProviderRegistrationManager * providerRegistrationManager)
     : MessageQueueService(PEGASUS_QUEUENAME_PROVIDERMANAGER_CPP)     : MessageQueueService(PEGASUS_QUEUENAME_PROVIDERMANAGER_CPP)
 { {
       providerManagerService=this;
     SetProviderRegistrationManager(providerRegistrationManager);     SetProviderRegistrationManager(providerRegistrationManager);
  
     // ATTN: this section is a temporary solution to populate the list of enabled     // ATTN: this section is a temporary solution to populate the list of enabled
Line 154 
Line 192 
     //_providerManager.append(ProviderManagerContainer("InternalProviderManager", "DEFAULT", "INTERNAL"));     //_providerManager.append(ProviderManagerContainer("InternalProviderManager", "DEFAULT", "INTERNAL"));
     //#endif     //#endif
  
     /*  
     #if defined(ENABLE_DEFAULT_PROVIDER_MANAGER)     #if defined(ENABLE_DEFAULT_PROVIDER_MANAGER)
     #if defined(PEGASUS_OS_OS400)     #if defined(PEGASUS_OS_OS400)
     _providerManagers.append(ProviderManagerContainer("QSYS/QYCMDFTPVM", "DEFAULT", "C++Default"));      _providerManagers.append(
          new ProviderManagerContainer("QSYS/QYCMDFTPVM", "DEFAULT", "C++Default"));
     #else     #else
     _providerManagers.append(ProviderManagerContainer("DefaultProviderManager", "DEFAULT", "C++Default"));      _providerManagers.append(
          new ProviderManagerContainer("DefaultProviderManager", "DEFAULT", "C++Default"));
     #endif     #endif
     #endif     #endif
  
     #if defined(ENABLE_CMPI_PROVIDER_MANAGER)     #if defined(ENABLE_CMPI_PROVIDER_MANAGER)
     #if defined(PEGASUS_OS_OS400)     #if defined(PEGASUS_OS_OS400)
     _providerManagers.append(ProviderManagerContainer("QSYS/QYCMCMPIPM", "CMPI", "CMPI"));      _providerManagers.append(
          new ProviderManagerContainer("QSYS/QYCMCMPIPM", "CMPI", "CMPI"));
     #else     #else
     _providerManagers.append(ProviderManagerContainer("CMPIProviderManager", "CMPI", "CMPI"));      _providerManagers.append(
          new ProviderManagerContainer("CMPIProviderManager", "CMPI", "CMPI"));
     #endif     #endif
     #endif     #endif
     */  
     // END TEMP SECTION     // END TEMP SECTION
 } }
  
 ProviderManagerService::~ProviderManagerService(void) ProviderManagerService::~ProviderManagerService(void)
 { {
       providerManagerService=NULL;
 } }
  
 Boolean ProviderManagerService::messageOK(const Message * message) Boolean ProviderManagerService::messageOK(const Message * message)
Line 390 
Line 431 
  
     Message * response = 0;     Message * response = 0;
  
     // get namespace and class name from message      // get the responsible provider Manager
     String nameSpace;      ProviderManager * pm = locateProviderManager(message);
     String className;  
  
     switch(message->getType())      if(pm)
     {     {
     case CIM_GET_CLASS_REQUEST_MESSAGE:          response = pm->processMessage(request);
         {  
             const CIMGetClassRequestMessage * p = dynamic_cast<const CIMGetClassRequestMessage *>(message);  
   
             PEGASUS_ASSERT(p != 0);  
   
             nameSpace = p->nameSpace.getString();  
             className = p->className.getString();  
         }         }
       else
         break;  
     case CIM_ENUMERATE_CLASSES_REQUEST_MESSAGE:  
         {         {
             const CIMEnumerateClassesRequestMessage * p = dynamic_cast<const CIMEnumerateClassesRequestMessage *>(message);         // no provider manager found ...
   
             PEGASUS_ASSERT(p != 0);  
   
             nameSpace = p->nameSpace.getString();  
             className = p->className.getString();  
         }         }
  
         break;      // preserve message key
     case CIM_ENUMERATE_CLASS_NAMES_REQUEST_MESSAGE:      response->setKey(request->getKey());
         {  
             const CIMEnumerateClassNamesRequestMessage * p = dynamic_cast<const CIMEnumerateClassNamesRequestMessage *>(message);  
   
             PEGASUS_ASSERT(p != 0);  
  
             nameSpace = p->nameSpace.getString();      // set HTTP method in response from request
             className = p->className.getString();      response->setHttpMethod(request->getHttpMethod());
         }  
  
         break;      AsyncLegacyOperationResult * async_result =
     case CIM_CREATE_CLASS_REQUEST_MESSAGE:          new AsyncLegacyOperationResult(
         {          async->getKey(),
             const CIMCreateClassRequestMessage * p = dynamic_cast<const CIMCreateClassRequestMessage *>(message);          async->getRouting(),
           op,
           response);
  
             PEGASUS_ASSERT(p != 0);      _complete_op_node(op, ASYNC_OPSTATE_COMPLETE, 0, 0);
  
             nameSpace = p->nameSpace.getString();      PEG_METHOD_EXIT();
             //className = p->className.getString();  
         }         }
  
         break;  ProviderManager* ProviderManagerService::locateProviderManager(const Message *message)
     case CIM_MODIFY_CLASS_REQUEST_MESSAGE:  
         {         {
             const CIMModifyClassRequestMessage * p = dynamic_cast<const CIMModifyClassRequestMessage *>(message);      String nameSpace;
       String className;
             PEGASUS_ASSERT(p != 0);      Uint32 type = ProviderType::INSTANCE;
   
             nameSpace = p->nameSpace.getString();  
             //className = p->className.getString();  
         }  
  
         break;      switch(message->getType())
     case CIM_DELETE_CLASS_REQUEST_MESSAGE:  
         {         {
             const CIMDeleteClassRequestMessage * p = dynamic_cast<const CIMDeleteClassRequestMessage *>(message);  
   
             PEGASUS_ASSERT(p != 0);  
   
             nameSpace = p->nameSpace.getString();  
             className = p->className.getString();  
         }  
   
         break;  
     case CIM_GET_INSTANCE_REQUEST_MESSAGE:     case CIM_GET_INSTANCE_REQUEST_MESSAGE:
         {         {
             const CIMGetInstanceRequestMessage * p = dynamic_cast<const CIMGetInstanceRequestMessage *>(message);             const CIMGetInstanceRequestMessage * p = dynamic_cast<const CIMGetInstanceRequestMessage *>(message);
Line 469 
Line 476 
             PEGASUS_ASSERT(p != 0);             PEGASUS_ASSERT(p != 0);
  
             nameSpace = p->nameSpace.getString();             nameSpace = p->nameSpace.getString();
             //className = p->className.getString();              className = p->instanceName.getClassName().getString();
         }         }
  
         break;         break;
Line 502 
Line 509 
             PEGASUS_ASSERT(p != 0);             PEGASUS_ASSERT(p != 0);
  
             nameSpace = p->nameSpace.getString();             nameSpace = p->nameSpace.getString();
             //className = p->className.getString();              className = p->newInstance.getClassName().getString();
         }         }
  
         break;         break;
Line 513 
Line 520 
             PEGASUS_ASSERT(p != 0);             PEGASUS_ASSERT(p != 0);
  
             nameSpace = p->nameSpace.getString();             nameSpace = p->nameSpace.getString();
             //className = p->className.getString();              className = p->modifiedInstance.getClassName().getString();
         }         }
  
         break;         break;
Line 524 
Line 531 
             PEGASUS_ASSERT(p != 0);             PEGASUS_ASSERT(p != 0);
  
             nameSpace = p->nameSpace.getString();             nameSpace = p->nameSpace.getString();
             //className = p->className.getString();              className = p->instanceName.getClassName().getString();
         }         }
  
         break;         break;
Line 537 
Line 544 
             PEGASUS_ASSERT(p != 0);             PEGASUS_ASSERT(p != 0);
  
             nameSpace = p->nameSpace.getString();             nameSpace = p->nameSpace.getString();
             //className = p->className.getString();              className = p->assocClass.getString();
   
               type = ProviderType::ASSOCIATION;
         }         }
  
         break;         break;
Line 548 
Line 557 
             PEGASUS_ASSERT(p != 0);             PEGASUS_ASSERT(p != 0);
  
             nameSpace = p->nameSpace.getString();             nameSpace = p->nameSpace.getString();
             //className = p->className.getString();              className = p->assocClass.getString();
   
               std::cout<<"--- className: "<<className<<std::endl;
   
               type = ProviderType::ASSOCIATION;
         }         }
  
         break;         break;
Line 559 
Line 572 
             PEGASUS_ASSERT(p != 0);             PEGASUS_ASSERT(p != 0);
  
             nameSpace = p->nameSpace.getString();             nameSpace = p->nameSpace.getString();
             //className = p->className.getString();              className = p->resultClass.getString();
   
               type = ProviderType::ASSOCIATION;
         }         }
  
         break;         break;
Line 570 
Line 585 
             PEGASUS_ASSERT(p != 0);             PEGASUS_ASSERT(p != 0);
  
             nameSpace = p->nameSpace.getString();             nameSpace = p->nameSpace.getString();
             //className = p->className.getString();              className = p->resultClass.getString();
         }  
   
         break;  
     case CIM_GET_PROPERTY_REQUEST_MESSAGE:  
         {  
             const CIMGetPropertyRequestMessage * p = dynamic_cast<const CIMGetPropertyRequestMessage *>(message);  
   
             PEGASUS_ASSERT(p != 0);  
   
             nameSpace = p->nameSpace.getString();  
             //className = p->className.getString();  
         }  
  
         break;              type = ProviderType::ASSOCIATION;
     case CIM_SET_PROPERTY_REQUEST_MESSAGE:  
         {  
             const CIMSetPropertyRequestMessage * p = dynamic_cast<const CIMSetPropertyRequestMessage *>(message);  
   
             PEGASUS_ASSERT(p != 0);  
   
             nameSpace = p->nameSpace.getString();  
             //className = p->className.getString();  
         }         }
  
         break;         break;
Line 603 
Line 598 
             PEGASUS_ASSERT(p != 0);             PEGASUS_ASSERT(p != 0);
  
             nameSpace = p->nameSpace.getString();             nameSpace = p->nameSpace.getString();
             //className = p->className.getString();              className = p->instanceName.getClassName().getString();
         }  
   
         break;  
     /*  
     case CIM_ENABLE_INDICATION_SUBSCRIPTION_REQUEST_MESSAGE:  
         {  
             const CIMEnableIndicationsSubscriptionRequestMessage * p = dynamic_cast<const CIMEnableIndicationsRequestMessage *>(message);  
   
             PEGASUS_ASSERT(p != 0);  
  
             nameSpace = p->nameSpace.getString();              type = ProviderType::METHOD;
             className = p->className.getString();  
         }         }
  
         break;         break;
     case CIM_MODIFY_INDICATION_SUBSCRIPTION_REQUEST_MESSAGE:  
        case CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE:
         {         {
             const CIMModifyIndicationsRequestMessage * p = dynamic_cast<const CIMModifyIndicationsRequestMessage *>(message);              const CIMCreateSubscriptionRequestMessage * p = dynamic_cast<const CIMCreateSubscriptionRequestMessage *>(message);
  
             PEGASUS_ASSERT(p != 0);             PEGASUS_ASSERT(p != 0);
   
             nameSpace = p->nameSpace.getString();             nameSpace = p->nameSpace.getString();
             className = p->className.getString();  
         }  
  
         break;              std::cout<<"--- nameSpace: "<<nameSpace<<std::endl;
     case CIM_DISABLE_INDICATION_SUBSCRIPTION_REQUEST_MESSAGE:  
         {  
             const CIMGetClassRequestMessage * p = dynamic_cast<const CIMGetClassRequestMessage *>(message);  
  
             PEGASUS_ASSERT(p != 0);              className = p->classNames[0].getString();
  
             nameSpace = p->nameSpace.getString();              std::cout<<"--- className: "<<className<<std::endl;
             className = p->className.getString();  
               type = ProviderType::INDICATION;
         }         }
  
         break;         break;
     */  
     default:     default:
           //asm("int $3");
         break;         break;
     }     }
  
Line 651 
Line 632 
         String::EMPTY,         String::EMPTY,
         String::EMPTY,         String::EMPTY,
         String::EMPTY,         String::EMPTY,
         0);          type);
   
           std::cout<<"--- name: "<<name.toString()<<std::endl;
  
     // find provider manager     // find provider manager
     name = ProviderRegistrar().findProvider(name);     name = ProviderRegistrar().findProvider(name);
  
     // find provider manager for provider interface      std::cout<<"--- name.getInterfaceName(): "<<name.getInterfaceName()<<std::endl;
   
  
     try      // find provider manager for provider interface
       for(Uint32 i = 0, n = _providerManagers.size(); i < n; i++)
     {     {
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,          if (String::equalNoCase(name.getInterfaceName(), _providerManagers[i]->getInterfaceName())) {
             "ProviderManagerService::handleCimRequest() passing control to provider manager.");             ProviderManagerContainer *pmc=_providerManagers[i];
              return pmc->getProviderManager();
         // forward request  
         response = _providerManagers[0].getProviderManager().processMessage(request);  
     }     }
     catch(...)  
     {  
         // ATTN: create response with error message  
     }     }
       return NULL;
     // preserve message key  
     response->setKey(request->getKey());  
   
     // set HTTP method in response from request  
     response->setHttpMethod(request->getHttpMethod());  
   
     AsyncLegacyOperationResult * async_result =  
         new AsyncLegacyOperationResult(  
         async->getKey(),  
         async->getRouting(),  
         op,  
         response);  
   
     _complete_op_node(op, ASYNC_OPSTATE_COMPLETE, 0, 0);  
   
     PEG_METHOD_EXIT();  
 } }
  
 void ProviderManagerService::unload_idle_providers(void) void ProviderManagerService::unload_idle_providers(void)


Legend:
Removed from v.1.13  
changed lines
  Added in v.1.21

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2