(file) Return to DefaultProviderManager.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ProviderManager2 / Default

Diff for /pegasus/src/Pegasus/ProviderManager2/Default/DefaultProviderManager.h between version 1.22 and 1.35

version 1.22, 2006/01/30 16:18:08 version 1.35, 2010/08/20 12:12:01
Line 1 
Line 1 
 //%2006////////////////////////////////////////////////////////////////////////  //%LICENSE////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development  // Licensed to The Open Group (TOG) under one or more contributor license
 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.  // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;  // this work for additional information regarding copyright ownership.
 // IBM Corp.; EMC Corporation, The Open Group.  // Each contributor licenses this file to you under the OpenPegasus Open
 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;  // Source License; you may not use this file except in compliance with the
 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.  // License.
 // 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
 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;  // copy of this software and associated documentation files (the "Software"),
 // EMC Corporation; Symantec Corporation; The Open Group.  // to deal in the Software without restriction, including without limitation
 //  // the rights to use, copy, modify, merge, publish, distribute, sublicense,
 // Permission is hereby granted, free of charge, to any person obtaining a copy  // and/or sell copies of the Software, and to permit persons to whom the
 // of this software and associated documentation files (the "Software"), to  // Software is furnished to do so, subject to the following conditions:
 // deal in the Software without restriction, including without limitation the  //
 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or  // The above copyright notice and this permission notice shall be included
 // sell copies of the Software, and to permit persons to whom the Software is  // in all copies or substantial portions of the Software.
 // furnished to do so, subject to the following conditions:  //
 //  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT  // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR  // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT  // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN  // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION  //
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  //////////////////////////////////////////////////////////////////////////
 //  
 //==============================================================================  
 //  
 // Author: Chip Vincent (cvincent@us.ibm.com)  
 //  
 // Modified By:  
 //              Nag Boranna, Hewlett-Packard Company(nagaraja_boranna@hp.com)  
 //              Yi Zhou, Hewlett-Packard Company(yi_zhou@hp.com)  
 //              Jenny Yu, Hewlett-Packard Company (jenny_yu@hp.com)  
 //              Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)  
 //              Carol Ann Krug Graves, Hewlett-Packard Company  
 //                (carolann_graves@hp.com)  
 //              Mike Day, IBM (mdday@us.ibm.com)  
 //              Adrian Schuur (schuur@de.ibm.com)  
 //              Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)  
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 51 
Line 36 
 #include <Pegasus/Common/Constants.h> #include <Pegasus/Common/Constants.h>
 #include <Pegasus/Common/CIMObjectPath.h> #include <Pegasus/Common/CIMObjectPath.h>
 #include <Pegasus/Common/Pair.h> #include <Pegasus/Common/Pair.h>
 #include <Pegasus/Common/Triad.h>  
 #include <Pegasus/Common/Thread.h> #include <Pegasus/Common/Thread.h>
 #include <Pegasus/Common/IPC.h>  
 #include <Pegasus/Common/HashTable.h> #include <Pegasus/Common/HashTable.h>
 #include <Pegasus/Common/OperationContextInternal.h> #include <Pegasus/Common/OperationContextInternal.h>
  
 #include <Pegasus/ProviderManager2/ProviderManager.h> #include <Pegasus/ProviderManager2/ProviderManager.h>
 #include <Pegasus/ProviderManager2/ProviderName.h> #include <Pegasus/ProviderManager2/ProviderName.h>
  
 #include <Pegasus/ProviderManager2/Default/LocalProviderManager.h>  #include <Pegasus/ProviderManager2/Default/ProviderMessageHandler.h>
 #include <Pegasus/ProviderManager2/OperationResponseHandler.h>  
 #include <Pegasus/ProviderManager2/Default/Provider.h>  
   
 #include <Pegasus/ProviderManager2/Default/Linkage.h> #include <Pegasus/ProviderManager2/Default/Linkage.h>
   #include <Pegasus/Common/AsyncRequestExecutor.h>
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
 typedef HashTable<String,  
         EnableIndicationsResponseHandler *,  
         EqualFunc<String>,  
         HashFunc<String> > IndicationResponseTable;  
   
 class PEGASUS_DEFPM_LINKAGE DefaultProviderManager : public ProviderManager class PEGASUS_DEFPM_LINKAGE DefaultProviderManager : public ProviderManager
 { {
 public: public:
     DefaultProviderManager(void);      DefaultProviderManager();
     virtual ~DefaultProviderManager(void);      virtual ~DefaultProviderManager();
  
     virtual Message * processMessage(Message * request);      virtual Message* processMessage(Message* message);
  
     virtual Boolean hasActiveProviders();     virtual Boolean hasActiveProviders();
     virtual void unloadIdleProviders();     virtual void unloadIdleProviders();
  
 protected:      // This function creates an instance of DefaultProviderManager. It is
     Message * handleUnsupportedRequest(const Message * message);      // typically passed to either the ProviderManagerService constructor
       // or the BasicProviderManagerRouter constructor as a way of decoupling
       // the pegprovidermanager and DefaultProviderManager libraries (otherwise
       // each library would contain a reference to the other).
       static ProviderManager* createDefaultProviderManagerCallback();
  
     Message * handleGetInstanceRequest(const Message * message);  private:
     Message * handleEnumerateInstancesRequest(const Message * message);      CIMResponseMessage* _handleDisableModuleRequest(
     Message * handleEnumerateInstanceNamesRequest(const Message * message);          CIMRequestMessage* message);
     Message * handleCreateInstanceRequest(const Message * message);      CIMResponseMessage* _handleEnableModuleRequest(
     Message * handleModifyInstanceRequest(const Message * message);          CIMRequestMessage* message);
     Message * handleDeleteInstanceRequest(const Message * message);      CIMResponseMessage* _handleSubscriptionInitCompleteRequest(
           CIMRequestMessage* message);
     Message * handleExecQueryRequest(const Message * message);      CIMResponseMessage* _handleIndicationServiceDisabledRequest(
           CIMRequestMessage* message);
     Message * handleAssociatorsRequest(const Message * message);  
     Message * handleAssociatorNamesRequest(const Message * message);  
     Message * handleReferencesRequest(const Message * message);  
     Message * handleReferenceNamesRequest(const Message * message);  
   
     Message * handleGetPropertyRequest(const Message * message);  
     Message * handleSetPropertyRequest(const Message * message);  
   
     Message * handleInvokeMethodRequest(const Message * message);  
   
     Message * handleCreateSubscriptionRequest(const Message * message);  
     Message * handleModifySubscriptionRequest(const Message * message);  
     Message * handleDeleteSubscriptionRequest(const Message * message);  
   
     Message * handleExportIndicationRequest(const Message * message);  
   
     Message * handleDisableModuleRequest(const Message * message);  
     Message * handleEnableModuleRequest(const Message * message);  
     Message * handleStopAllProvidersRequest(const Message * message);  
     Message * handleInitializeProviderRequest(const Message * message);  
     Message * handleSubscriptionInitCompleteRequest  
         (const Message * message);  
   
     void _insertEntry(  
         const Provider & provider,  
         EnableIndicationsResponseHandler* handler);  
     EnableIndicationsResponseHandler * _removeEntry(const String & key);  
   
     String _generateKey(const Provider & provider);  
     String _generateKey(const String & providerName,const String & providerFileName);  
  
     ProviderName _resolveProviderName(const ProviderIdContainer & providerId);     ProviderName _resolveProviderName(const ProviderIdContainer & providerId);
  
 protected:      ProviderOperationCounter _getProvider(
     IndicationResponseTable _responseTable;          const String& moduleFileName,
     Mutex _responseTableMutex;          const String& moduleName,
     LocalProviderManager providerManager;          const String& providerName);
   
       ProviderMessageHandler* _lookupProvider(
           const String& moduleName,
           const String& providerName);
   
       ProviderMessageHandler* _initProvider(
           ProviderMessageHandler* provider,
           const String& moduleFileName);
   
       ProviderModule* _lookupModule(const String& moduleFileName);
   
       void _shutdownAllProviders();
   
       Sint16 _disableProvider(
           const String& moduleFileName,
           const String& providerName);
   
       /*
           Handler method invoked on a seperate thread per provider through
           a request executor to process an incoming request meant for all
           providers simultaneously.
       */
       static CIMException _asyncRequestCallback(
           void *callbackPtr,
           AsyncRequestExecutor::AsyncRequestMsg* request);
  
 private:      void _unloadProvider(ProviderMessageHandler* provider);
  
     /**     /**
         Calls the provider's enableIndications() method.          The _providerTableMutex must be locked whenever accessing the
         If successful, the indications response handler is stored in the          _providers table or the _modules table.  It is okay to lock a
         _responseTable.          ProviderStatus::_statusMutex while holding the _providerTableMutex,
           but one should never lock the _providerTableMutex while holding
         @param  req_provider  CIMInstance for the provider to be enabled          a ProviderStatus::_statusMutex.
         @param  _indicationCallback  PEGASUS_INDICATION_CALLBACK for indications  
         @param  ph  OpProviderHolder for the provider to be enabled  
   
         Note that since an exception thrown by the provider's  
         enableIndications() method is considered a provider error, any such  
         exception is ignored, and no exceptions are thrown by this method.  
      */      */
     void _callEnableIndications      Mutex _providerTableMutex;
         (CIMInstance & req_provider,  
          PEGASUS_INDICATION_CALLBACK _indicationCallback,      typedef HashTable<String, ProviderMessageHandler*,
          OpProviderHolder & ph);          EqualFunc<String>,  HashFunc<String> > ProviderTable;
   
       typedef HashTable<String, ProviderModule*,
           EqualFunc<String>, HashFunc<String> > ModuleTable;
   
       ProviderTable _providers;
       ModuleTable _modules;
 }; };
  
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END


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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2