⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmpiprovider.h

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 H
📖 第 1 页 / 共 2 页
字号:
    virtual void update_idle_timer(void);    virtual Boolean unload_ok(void);//   force provider manager to keep in memory    virtual void protect(void);// allow provider manager to unload when idle    virtual void unprotect(void);    /**        Increments the count of current subscriptions for this provider, and        determines if there were no current subscriptions before the increment.        If there were no current subscriptions before the increment, the first        subscription has been created, and the provider's enableIndications        method should be called.        @return  True, if before the increment there were no current                       subscriptions for this provider;                 False, otherwise     */    Boolean testIfZeroAndIncrementSubscriptions ();    /**        Decrements the count of current subscriptions for this provider, and        determines if there are no current subscriptions after the decrement.        If there are no current subscriptions after the decrement, the last        subscription has been deleted, and the provider's disableIndications        method should be called.        @return  True, if after the decrement there are no current subscriptions                       for this provider;                 False, otherwise     */    Boolean decrementSubscriptionsAndTestIfZero ();    /**        Determines if there are current subscriptions for this provider.        @return  True, if there is at least one current subscription                       for this provider;                 False, otherwise     */    Boolean testSubscriptions ();    /**        Resets the count of current subscriptions for the indication provider.     */    void resetSubscriptions ();    /**        Sets the provider instance for the provider.        Note: the provider instance is set only for an indication provider, and        is set when a Create Subscription request is processed for the provider.        @param  instance  the Provider CIMInstance for the provider     */    void setProviderInstance (const CIMInstance & instance);    /**        Gets the provider instance for the provider.        Note: the provider instance is set only for an indication provider, and        only if a Create Subscription request has been processed for the        provider.        @return  the Provider CIMInstance for the provider     */    CIMInstance getProviderInstance ();protected:    String _location;    Status _status;    CMPIProviderModule *_module;    ProviderVector miVector;    CMPI_Broker broker;    Boolean noUnload;private:    virtual void _terminate(Boolean term);    CMPIProvider(const String & name,        CMPIProviderModule *module,        ProviderVector *mv);    static void initialize(CIMOMHandle & cimom,                           ProviderVector & miVector,			   			   String & name,                           CMPI_Broker & broker);	   /* 	* Wait until all finished provider threads have been cleaned and deleted. 	* Note: This should NEVER be called from the thread that IS the Thread object that was 	* is finished and called 'removeThreadFromWatch()' . If you do it, you will 	* wait forever. 	*/    void waitUntilThreadsDone();    void set(CMPIProviderModule *&module,            ProviderVector base,            CIMOMHandle *&cimomHandle);    friend class CMPILocalProviderManager;    friend class CMPIProviderManager;    class OpProviderHolder;    friend class OpProviderHolder;    CIMOMHandle *_cimom_handle;    String _name;    AtomicInt _no_unload;    CMPIResolverModule *_rm;    Uint32 _quantum;    AtomicInt _current_operations;    Mutex _statusMutex;    struct timeval _idleTime;    Mutex _idleTimeMutex;	/* 		List of threads which are monitored and cleaned. 	*/    List<Thread,Mutex> _threadWatchList;    List<Thread,Mutex> _cleanedThreads;    /**        Count of current subscriptions for this provider.  Access to this        data member is controlled by the _currentSubscriptionsLock.     */    Uint32 _currentSubscriptions;    /**        A mutex to control access to the _currentSubscriptions member variable.        Before any access (test, increment, decrement or reset) of the        _currentSubscriptions member variable, the _currentSubscriptionsMutex is        first locked.     */    Mutex _currentSubscriptionsMutex;    /**        The Provider CIMInstance for the provider.        The Provider CIMInstance is set only for indication providers, and only        if a Create Subscription request has been processed for the provider.        The Provider CIMInstance is needed in order to construct the        EnableIndicationsResponseHandler to send to the indication provider        when the provider's enableIndications() method is called.        The Provider CIMInstance is needed in the        EnableIndicationsResponseHandler in order to construct the Process        Indication request when an indication is delivered by the provider.        The Provider CIMInstance is needed in the Process Indication request        to enable the Indication Service to determine if the provider that        generated the indication accepted a matching subscription.     */    CIMInstance _providerInstance;//};//// Used to encapsulate the incrementing/decrementing of the _current_operations// for a CMPIProvider so it won't be unloaded during operations.//   class OpProviderHolder   {   private:       CMPIProvider* _provider;   public:       OpProviderHolder(): _provider( NULL )       {       }       OpProviderHolder( const OpProviderHolder& p ): _provider( NULL )       {           SetProvider( p._provider );       }       OpProviderHolder( CMPIProvider* p ): _provider( NULL )       {           SetProvider( p );       }       ~OpProviderHolder()       {           UnSetProvider();       }       CMPIProvider& GetProvider()       {           return(*_provider);       }       OpProviderHolder& operator=( const OpProviderHolder& x )       {           if(this == &x)               return(*this);           SetProvider( x._provider );           return(*this);       }       void SetProvider( CMPIProvider* p )       {           UnSetProvider();           if(p)           {               _provider = p;               _provider->_current_operations++;           }       }       void UnSetProvider()       {           if(_provider)           {               _provider->_current_operations--;               _provider = NULL;           }       }   };};PEGASUS_NAMESPACE_END#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -