version 1.1, 2004/04/30 10:27:25
|
version 1.8, 2006/02/08 23:17:23
|
|
|
//%///////////////////////////////////////////////////////////////////////////// |
//%2006//////////////////////////////////////////////////////////////////////// |
// | // |
// 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. |
|
// 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 |
|
|
// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR | // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR |
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
// ACTION OF CONTRgACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
// 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. | // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
// | // |
//============================================================================== | //============================================================================== |
|
|
// allow provider manager to unload when idle | // allow provider manager to unload when idle |
virtual void unprotect(void); | 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: | protected: |
Status _status; | Status _status; |
JMPIProviderModule *_module; | JMPIProviderModule *_module; |
|
|
friend class JMPILocalProviderManager; | friend class JMPILocalProviderManager; |
friend class JMPIProviderManager; | friend class JMPIProviderManager; |
friend class ProviderManagerService; | friend class ProviderManagerService; |
// friend class OpProviderHolder; |
class OpProviderHolder; |
|
friend class OpProviderHolder; |
|
mutable Mutex _cimomMutex; |
|
/* NOTE: This is a C++ provider only handle which is currently |
|
** used for calls to ->getClass (). getClass returns |
|
** immediately with data and is therefore safe to lock. |
|
*/ |
CIMOMHandle *_cimom_handle; | CIMOMHandle *_cimom_handle; |
|
/* NOTE: This is the java provider's handle and is left |
|
** untouched. |
|
*/ |
|
CIMOMHandle *_java_cimom_handle; |
void *jProviderClass,*jProvider; | void *jProviderClass,*jProvider; |
String _name; | String _name; |
AtomicInt _no_unload; | AtomicInt _no_unload; |
CMPIResolverModule *_rm; | CMPIResolverModule *_rm; |
Uint32 _quantum; | Uint32 _quantum; |
AtomicInt _current_operations; | AtomicInt _current_operations; |
|
mutable Mutex _statusMutex; |
|
|
|
/** |
|
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; |
//}; | //}; |
| |
| |