1 karl 1.65 //%2005////////////////////////////////////////////////////////////////////////
|
2 kumpf 1.1 //
|
3 karl 1.63 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
4 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
5 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
|
6 karl 1.47 // IBM Corp.; EMC Corporation, The Open Group.
|
7 karl 1.63 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
8 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
|
9 karl 1.65 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10 // EMC Corporation; VERITAS Software Corporation; The Open Group.
|
11 kumpf 1.1 //
12 // Permission is hereby granted, free of charge, to any person obtaining a copy
13 // of this software and associated documentation files (the "Software"), to
14 // deal in the Software without restriction, including without limitation the
15 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16 // sell copies of the Software, and to permit persons to whom the Software is
17 // furnished to do so, subject to the following conditions:
|
18 kumpf 1.27 //
|
19 kumpf 1.1 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
20 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
21 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
22 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
23 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
25 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28 //==============================================================================
29 //
30 // Author: Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)
31 //
32 // Modified By: Carol Ann Krug Graves, Hewlett-Packard Company
|
33 kumpf 1.39 // (carolann_graves@hp.com)
34 // Ben Heilbronn, Hewlett-Packard Company (ben_heilbronn@hp.com)
35 // Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
|
36 kumpf 1.1 //
37 //%/////////////////////////////////////////////////////////////////////////////
38
39 #ifndef Pegasus_IndicationService_h
40 #define Pegasus_IndicationService_h
41
42 #include <Pegasus/Common/Config.h>
43 #include <Pegasus/Common/MessageQueueService.h>
44 #include <Pegasus/Common/CIMMessage.h>
|
45 kumpf 1.24 #include <Pegasus/Common/IPC.h>
|
46 carolann.graves 1.74 #include <Pegasus/Common/AcceptLanguages.h> // l10n
|
47 kumpf 1.54 #include <Pegasus/Common/ContentLanguages.h> // l10n
|
48 kumpf 1.6 #include <Pegasus/Server/ProviderRegistrationManager/ProviderRegistrationManager.h>
|
49 kumpf 1.54 #include <Pegasus/Server/Linkage.h>
|
50 chuck 1.64 #include <Pegasus/Query/QueryExpression/QueryExpression.h>
|
51 kumpf 1.1
|
52 kumpf 1.41 #include "ProviderClassList.h"
53 #include "IndicationOperationAggregate.h"
54
|
55 kumpf 1.1 PEGASUS_NAMESPACE_BEGIN
56
|
57 kumpf 1.54 class SubscriptionRepository;
58 class SubscriptionTable;
|
59 kumpf 1.1
60 /**
61
|
62 kumpf 1.5 IndicationService class is the service that serves the
|
63 kumpf 1.10 Indication Subscription, Indication Filter, and Indication Handler
|
64 kumpf 1.5 classes, and processes indications.
|
65 kumpf 1.1
66 @author Hewlett-Packard Company
67
68 */
69
70 class PEGASUS_SERVER_LINKAGE IndicationService : public MessageQueueService
71 {
72 public:
73
74 /**
75 Constructs an IndicationSubscription instance and initializes instance
76 variables.
77 */
|
78 kumpf 1.6 IndicationService (
79 CIMRepository * repository,
|
80 kumpf 1.8 ProviderRegistrationManager * providerRegManager);
|
81 kumpf 1.1
82 virtual ~IndicationService(void);
83
|
84 mday 1.2 void handleEnqueue(Message* message);
|
85 kumpf 1.1
|
86 carolann.graves 1.74 virtual void handleEnqueue(void);
|
87 kumpf 1.1
88 virtual void _handle_async_request(AsyncRequest *req);
89
|
90 kumpf 1.54 /**
91 Gets a String containing the Provider Name, for use in a log message to
92 identify the provider.
93
94 @param provider provider instance
95
96 @return String containing the Provider Name
97 */
98 static String getProviderLogString
99 (CIMInstance & provider);
100
|
101 kumpf 1.1 AtomicInt dienow;
102
103 /**
|
104 kumpf 1.5 Operation types for the NotifyProviderRegistration message
|
105 kumpf 1.1 */
|
106 kumpf 1.5 enum Operation {OP_CREATE = 1, OP_DELETE = 2, OP_MODIFY = 3};
|
107 kumpf 1.24
108 static Mutex _mutex;
|
109 kumpf 1.1
|
110 kumpf 1.5 private:
|
111 kumpf 1.1
112 void _initialize (void);
113
114 void _terminate (void);
115
116 void _handleGetInstanceRequest(const Message * message);
117
118 void _handleEnumerateInstancesRequest(const Message * message);
119
120 void _handleEnumerateInstanceNamesRequest(const Message * message);
121
122 void _handleCreateInstanceRequest(const Message * message);
123
124 void _handleModifyInstanceRequest(const Message * message);
125
126 void _handleDeleteInstanceRequest(const Message * message);
127
128 void _handleProcessIndicationRequest(const Message * message);
129
130 /**
|
131 kumpf 1.57 Asynchronous callback function for _handleProcessIndicationRequest.
132 The response from the Handler is checked, and if it is not success, the
|
133 carolann.graves 1.74 subscription's On Fatal Error Policy is implemented.
|
134 kumpf 1.57
135 @param operation shared data structure that controls message
136 processing
137 @param destination target queue of completion callback
138 @param userParameter user parameter for callback processing
139 */
140 static void _handleIndicationCallBack (
141 AsyncOpNode * operation,
142 MessageQueue * destination,
143 void * userParameter);
144
145 /**
|
146 kumpf 1.1 Notifies the Indication Service that a change in provider registration
147 has occurred. The Indication Service retrieves the subscriptions
|
148 kumpf 1.23 affected by the registration change, sends the appropriate Create,
|
149 carolann.graves 1.74 Modify, and/or Delete requests to the provider, and sends an alert to
150 handler instances of subscriptions that are no longer served by the
|
151 kumpf 1.10 provider.
|
152 kumpf 1.1 */
153 void _handleNotifyProviderRegistrationRequest(const Message * message);
154
155 /**
|
156 carolann.graves 1.74 Notifies the Indication Service that a provider has been disabled.
|
157 kumpf 1.51 The Indication Service retrieves the subscriptions served by the
|
158 carolann.graves 1.74 disabled provider, and logs a message for each subscription that is no
|
159 kumpf 1.51 longer served by the provider.
|
160 kumpf 1.1 */
161 void _handleNotifyProviderTerminationRequest(const Message * message);
162
163 /**
|
164 carolann.graves 1.74 Notifies the Indication Service that a provider has been enabled.
165 The Indication Service retrieves the subscriptions that can be served
166 by the enabled provider, sends Create Subscription and Enable
167 Indications requests to the provider, and logs a message for each
|
168 kumpf 1.51 subscription that is now served by the provider.
169 */
170 void _handleNotifyProviderEnableRequest (const Message * message);
171
172 /**
|
173 carolann.graves 1.74 Determines if it is legal to create an instance.
174 Checks for existence of all key and required properties. Checks that
175 properties that MUST NOT exist (based on values of other properties),
176 do not exist. For any property that has a default value, if it does
|
177 kumpf 1.5 not exist, adds the property with the default value.
178
179 @param instance instance to be created
180 @param nameSpace namespace for instance to be created
181
|
182 carolann.graves 1.73 @exception CIM_ERR_INVALID_PARAMETER if instance is invalid
|
183 carolann.graves 1.74 @exception CIM_ERR_NOT_SUPPORTED if the specified class is not
|
184 carolann.graves 1.73 supported
|
185 kumpf 1.5
|
186 kumpf 1.54 @return True, if the instance can be created;
|
187 kumpf 1.10 Otherwise throws an exception
|
188 kumpf 1.5 */
189 Boolean _canCreate (
190 CIMInstance & instance,
|
191 kumpf 1.31 const CIMNamespaceName & nameSpace);
|
192 kumpf 1.5
|
193 kumpf 1.21 /**
194 Validates the specified required property in the instance.
|
195 carolann.graves 1.74 If the property does not exist, or has a null value, or is not of the
|
196 kumpf 1.56 expected type, an exception is thrown, using the specified message.
|
197 kumpf 1.21
|
198 carolann.graves 1.74 This function is called by the _canCreate function, and is used to
|
199 kumpf 1.21 validate the Filter and Handler properties in Subscription instances,
|
200 carolann.graves 1.74 the Name, Query and Query Language properties in
201 Filter instances, the Name and Destination
202 properties in CIMXML Handler instances, and the Name,
|
203 kumpf 1.21 Trap Destination, and SNMP Version properties in SNMP Mapper instances.
204
205 @param instance instance to be validated
206 @param propertyName name of property to be validated
|
207 kumpf 1.56 @param expectedType expected CIMType of property value
|
208 kumpf 1.21 @param message message to be used in exception
|
209 yi.zhou 1.70 @param isArray indicates whether the validated
210 property is array
|
211 kumpf 1.21
|
212 carolann.graves 1.73 @exception CIM_ERR_INVALID_PARAMETER if required property is missing
213 or null
|
214 kumpf 1.21 */
|
215 kumpf 1.20 void _checkRequiredProperty (
216 CIMInstance & instance,
|
217 kumpf 1.31 const CIMName & propertyName,
|
218 kumpf 1.56 const CIMType expectedType,
|
219 yi.zhou 1.70 const String & message,
220 const Boolean isArray = false);
|
221 kumpf 1.20
|
222 kumpf 1.5 /**
|
223 carolann.graves 1.74 Validates the specified Uint16 (non-array) property and its
|
224 carolann.graves 1.69 corresponding String (non-array) Other___ property in the instance.
|
225 kumpf 1.15 If the property does not exist, it is added with the default value.
226 If the property exists, but its value is NULL, its value is set to
227 the default value.
228 If the value of the property is Other, but the corresponding Other___
|
229 kumpf 1.56 property either does not exist, has a value of NULL, or is not of the
|
230 carolann.graves 1.74 correct type, an exception is thrown.
|
231 kumpf 1.15 If the value of the property is not Other, but the corresponding
232 Other___ property exists and has a non-NULL value, an exception is
233 thrown.
|
234 carolann.graves 1.74 If the value of the property is not a supported value, an exception is
|
235 kumpf 1.56 thrown.
|
236 carolann.graves 1.74 This function is called by the _canCreate function, and is used to
237 validate the following pairs of properties in Subscription or Handler
238 instances: Subscription State, Other Subscription State, Repeat
239 Notification Policy, Other Repeat Notification Policy, On Fatal Error
240 Policy, Other On Fatal Error Policy, Persistence Type, Other
|
241 kumpf 1.15 Persistence Type.
242
243 @param instance instance to be validated
244 @param propertyName name of property to be validated
245 @param otherPropertyName name of Other___ property to be validated
246 @param defaultValue default value for property
247 @param otherValue "Other" value for property
|
248 kumpf 1.19 @param validValues set of valid values for property
|
249 kumpf 1.55 @param supportedValues set of supported values for property
|
250 kumpf 1.15
|
251 carolann.graves 1.73 @exception CIM_ERR_INVALID_PARAMETER if value of property or Other___
252 property is invalid
|
253 kumpf 1.15 */
|
254 kumpf 1.20 void _checkPropertyWithOther (
|
255 kumpf 1.15 CIMInstance & instance,
|
256 kumpf 1.31 const CIMName & propertyName,
257 const CIMName & otherPropertyName,
|
258 kumpf 1.15 const Uint16 defaultValue,
|
259 kumpf 1.19 const Uint16 otherValue,
|
260 kumpf 1.55 const Array <Uint16> & validValues,
261 const Array <Uint16> & supportedValues);
|
262 kumpf 1.20
|
263 kumpf 1.21 /**
264 Validates the specified property in the instance.
265 If the property does not exist, it is added with the default value.
266 If the property exists, but its value is NULL, its value is set to
267 the default value.
|
268 carolann.graves 1.74 This function is called by the _canCreate function, and is used to
|
269 carolann.graves 1.62 validate the Source Namespace property in Filter instances.
|
270 carolann.graves 1.74 This function is also called by the _initOrValidateStringProperty
271 function to validate the CreationClassName, SystemName, and
|
272 carolann.graves 1.69 SystemCreationClassName key properties in Filter and Handler instances.
|
273 kumpf 1.21
|
274 kumpf 1.56 Note: currently all properties validated by this function are of type
|
275 carolann.graves 1.74 String. To use this function in the future with properties of other
276 types, a type parameter would need to be added, and the default value
|
277 kumpf 1.56 would need to be passed as a CIMValue instead of a String.
278
|
279 carolann.graves 1.69 Note: currently all properties validated by this function are non-array
280 properties. To use this function in the future with both array and
|
281 carolann.graves 1.74 non-array properties, a Boolean isArray parameter would need to be
|
282 carolann.graves 1.69 added.
283
|
284 kumpf 1.21 @param instance instance to be validated
285 @param propertyName name of property to be validated
286 @param defaultValue default value for property
287
288 @return the value of the property
289 */
|
290 kumpf 1.20 String _checkPropertyWithDefault (
291 CIMInstance & instance,
|
292 kumpf 1.31 const CIMName & propertyName,
|
293 kumpf 1.20 const String & defaultValue);
|
294 kumpf 1.56
295 /**
296 Validates the specified property in the instance.
|
297 carolann.graves 1.62 If the property does not exist, it is added with the default value.
298 If the property exists, but its value is NULL, its value is set to
299 the default value.
|
300 carolann.graves 1.74 If the property exists and has a non-NULL value, its value is validated
301 against the default (expected) value. If the value is invalid, an
|
302 carolann.graves 1.62 exception is thrown.
|
303 carolann.graves 1.74 This function is called by the _canCreate function, and is used to
|
304 carolann.graves 1.62 validate the Creation Class Name, System Name and System Creation Class
305 Name properties in Filter and Handler instances.
306
307 Note: currently all properties validated by this function are of type
|
308 carolann.graves 1.74 String. To use this function in the future with properties of other
309 types, a type parameter would need to be added, and the default value
|
310 carolann.graves 1.62 would need to be passed as a CIMValue instead of a String.
311
|
312 carolann.graves 1.69 Note: currently all properties validated by this function are non-array
313 properties. To use this function in the future with both array and
|
314 carolann.graves 1.74 non-array properties, a Boolean isArray parameter would need to be
|
315 carolann.graves 1.69 added.
316
|
317 carolann.graves 1.62 @param instance instance to be validated
318 @param propertyName name of property to be validated
319 @param defaultValue default value for property
320
321 @return the value of the property
322 */
323 String _initOrValidateStringProperty (
324 CIMInstance & instance,
325 const CIMName & propertyName,
326 const String & defaultValue);
327
328 /**
329 Validates the specified property in the instance.
|
330 kumpf 1.56 If the property exists and its value is not NULL, but it is not of
331 the correct type, an exception is thrown.
|
332 carolann.graves 1.74 This function is called by the _canCreate function. It is used to
333 validate the FailureTriggerTimeInterval, TimeOfLastStateChange,
|
334 kumpf 1.56 SubscriptionDuration, SubscriptionStartTime, SubscriptionTimeRemaining,
335 RepeatNotificationInterval, RepeatNotificationGap, and
336 RepeatNotificationCount properties in Subscription instances, the Owner
|
337 carolann.graves 1.74 property in Handler instances, and the PortNumber, SNMPSecurityName,
|
338 kumpf 1.56 and SNMPEngineID properties in SNMP Mapper Handler instances.
339
|
340 carolann.graves 1.69 Note: currently all properties validated by this function are non-array
341 properties. To use this function in the future with both array and
|
342 carolann.graves 1.74 non-array properties, a Boolean isArray parameter would need to be
|
343 carolann.graves 1.69 added.
344
|
345 kumpf 1.56 @param instance instance to be validated
346 @param propertyName name of property to be validated
347 @param expectedType expected CIMType for property
348
|
349 carolann.graves 1.73 @exception CIM_ERR_INVALID_PARAMETER if property exists and is not
350 null but is not of the correct
351 type
|
352 kumpf 1.56 */
353 void _checkProperty (
354 CIMInstance & instance,
355 const CIMName & propertyName,
356 const CIMType expectedType);
|
357 kumpf 1.15
358 /**
|
359 kumpf 1.10 Determines if the user is authorized to modify the instance, and if the
|
360 carolann.graves 1.74 specified modification is supported. Currently, the only modification
361 supported is of the Subscription State property of the Subscription
|
362 kumpf 1.10 class.
|
363 kumpf 1.5
364 @param request modification request
365 @param instance instance to be modified
|
366 kumpf 1.37 @param modifiedInstance modified instance
|
367 kumpf 1.5
|
368 carolann.graves 1.73 @exception CIM_ERR_NOT_SUPPORTED if the specified modification is
369 not supported
370 @exception CIM_ERR_ACCESS_DENIED if the user is not authorized to
371 modify the instance
372 @exception CIM_ERR_INVALID_PARAMETER if the modifiedInstance is
373 invalid
|
374 kumpf 1.5
|
375 kumpf 1.54 @return True, if the instance can be modified;
|
376 kumpf 1.10 Otherwise throws an exception
|
377 kumpf 1.5 */
378 Boolean _canModify (
379 const CIMModifyInstanceRequestMessage * request,
|
380 kumpf 1.25 const CIMObjectPath & instanceReference,
|
381 kumpf 1.37 const CIMInstance & instance,
382 CIMInstance & modifiedInstance);
|
383 kumpf 1.5
384 /**
|
385 carolann.graves 1.74 Determines if the user is authorized to delete the instance, and if it
386 is legal to delete the instance. If authorized, Subscription instances
387 may always be deleted. Filter and non-transient Handler instances may
388 only be deleted if they are not being referenced by any Subscription
389 instances. If the instance to be deleted is a transient Handler, any
|
390 kumpf 1.10 referencing Subscriptions are also deleted.
|
391 kumpf 1.5
392 @param instanceReference reference for instance to be deleted
393 @param nameSpace namespace for instance to be deleted
|
394 kumpf 1.10 @param currentUser current user
395
|
396 carolann.graves 1.73 @exception CIM_ERR_ACCESS_DENIED if the user is not authorized to
397 delete the instance
398 @exception CIM_ERR_FAILED if the instance to be deleted is
399 referenced by a subscription
|
400 kumpf 1.5
|
401 kumpf 1.54 @return True, if the instance can be deleted;
|
402 kumpf 1.10 Otherwise throws an exception
|
403 kumpf 1.1 */
404 Boolean _canDelete (
|
405 kumpf 1.25 const CIMObjectPath & instanceReference,
|
406 kumpf 1.31 const CIMNamespaceName & nameSpace,
|
407 kumpf 1.10 const String & currentUser);
|
408 kumpf 1.1
409 /**
410 Retrieves list of enabled subscription instances in all namespaces,
411 where the subscription indication class matches or is a superclass
|
412 kumpf 1.10 of the supported class, and the properties required to process the
413 subscription are all contained in the list of supported properties.
|
414 carolann.graves 1.74 If the checkProvider parameter value is True, a subscription is only
415 included in the list returned if the specified provider accepted the
416 subscription. If the checkProvider parameter value is False, the
|
417 kumpf 1.42 provider parameter is not used (ignored).
|
418 kumpf 1.1
|
419 kumpf 1.10 @param supportedClass the supported class
420 @param nameSpaces the list of supported namespaces
421 @param supportedProperties the list of supported properties
|
422 kumpf 1.42 @param checkProvider indicates whether provider acceptance is
423 checked
424 @param provider the provider (used if checkProvider True)
|
425 kumpf 1.1
|
426 kumpf 1.26 @return list of CIMInstance subscriptions
|
427 kumpf 1.1 */
|
428 kumpf 1.26 Array <CIMInstance> _getMatchingSubscriptions (
|
429 kumpf 1.31 const CIMName & supportedClass,
430 const Array <CIMNamespaceName> nameSpaces,
|
431 kumpf 1.42 const CIMPropertyList & supportedProperties,
|
432 kumpf 1.43 const Boolean checkProvider = false,
|
433 kumpf 1.42 const CIMInstance & provider = CIMInstance ());
|
434 kumpf 1.1
435 /**
436 Retrieves lists of enabled subscription instances in all namespaces
437 that are either newly supported or previously supported, based on the
|
438 kumpf 1.9 supported class, the supported namespaces before and after modification,
|
439 carolann.graves 1.74 and the supported properties before and after modification. For
440 subscriptions based on the supported class, the newSubscriptions list
441 returned contains the subscriptions for which the properties required
442 to process the subscription are all contained in the new list of
443 supported properties, but are not all contained in the old list of
|
444 kumpf 1.9 supported properties, and/or the filter source namespace is contained in
|
445 carolann.graves 1.74 the new list if supported namespaces, but is not contained in the old
446 list of supported namespaces. The formerSubscriptions list returned
|
447 kumpf 1.9 contains the subscriptions for which the properties required to process
|
448 carolann.graves 1.74 the subscription are not all contained in the new list of supported
449 properties, but are all contained in the old list of supported
450 properties, and/or the filter source namespace is not contained in the
451 new list if supported namespaces, but is contained in the old list of
|
452 kumpf 1.9 supported namespaces.
453
|
454 kumpf 1.10 @param supportedClass the supported class
|
455 kumpf 1.9 @param newNameSpaces namespaces supported after modification
456 @param oldNameSpaces namespaces supported before modification
457 @param newProperties properties supported after modification
458 @param oldProperties properties supported before modification
|
459 kumpf 1.1 @param newSubscriptions the list of newly supported subscriptions
460 @param formerSubscriptions the list of previously supported
461 subscriptions
462 */
463 void _getModifiedSubscriptions (
|
464 kumpf 1.31 const CIMName & supportedClass,
465 const Array <CIMNamespaceName> & newNameSpaces,
466 const Array <CIMNamespaceName> & oldNameSpaces,
|
467 kumpf 1.1 const CIMPropertyList & newProperties,
468 const CIMPropertyList & oldProperties,
|
469 kumpf 1.26 Array <CIMInstance> & newSubscriptions,
470 Array <CIMInstance> & formerSubscriptions);
|
471 kumpf 1.1
472 /**
|
473 kumpf 1.9 Determines if all of the required properties in the specified list
474 are contained in the specified list of supported properties.
475
476 @param requiredProperties the required properties
|
477 kumpf 1.10 @param supportedProperties the supported properties
|
478 kumpf 1.9
|
479 kumpf 1.54 @return true, if all required properties are supported;
|
480 kumpf 1.9 false otherwise
481 */
482 Boolean _inPropertyList (
483 const CIMPropertyList & requiredProperties,
|
484 kumpf 1.10 const CIMPropertyList & supportedProperties);
|
485 kumpf 1.9
486 /**
|
487 chuck 1.64 Builds a QueryExpression from the filter query string,
488 the query language name, and the namespace in which the query
489 is to be run.
|
490 kumpf 1.1
491 @param filterQuery the filter query string
|
492 chuck 1.64 @param queryLanguage the query language name
493 @param ns query namespace
|
494 kumpf 1.1
|
495 chuck 1.64 @return QueryExpression representing the filter query
|
496 kumpf 1.1 */
|
497 chuck 1.64 QueryExpression _getQueryExpression (const String& filterQuery,
498 const String& queryLanguage,
499 const CIMNamespaceName ns) const;
|
500 kumpf 1.1
501 /**
|
502 chuck 1.64 Extracts the indication class name from the specified query expression
503 (WQL or CQL), and validates that the name represents a subclass of the
|
504 kumpf 1.1 Indication class.
505
|
506 chuck 1.64 @param queryExpression the query expression
|
507 kumpf 1.1 @param nameSpaceName the namespace
508
509 @return String containing the indication class name
510 */
|
511 kumpf 1.31 CIMName _getIndicationClassName (
|
512 chuck 1.64 const QueryExpression & queryExpression,
|
513 kumpf 1.31 const CIMNamespaceName & nameSpaceName) const;
|
514 kumpf 1.15
515 /**
|
516 kumpf 1.1 Retrieves the list of indication providers that serve the specified
517 indication subclasses.
518
|
519 chuck 1.64 @param queryExpression the query expression
520 @param nameSpace the namespace name
|
521 kumpf 1.1 @param indicationClassName the indication class name
522 @param indicationSubclasses the list of indication subclass names
523
524 @return list of ProviderClassList structs
525 */
|
526 kumpf 1.10 Array <ProviderClassList> _getIndicationProviders (
|
527 carolann.graves 1.74 const QueryExpression & queryExpression,
|
528 kumpf 1.31 const CIMNamespaceName & nameSpace,
529 const CIMName & indicationClassName,
|
530 chuck 1.64 const Array <CIMName> & indicationSubclasses) const;
|
531 kumpf 1.1
532 /**
|
533 carolann.graves 1.74 Retrieves the list of required properties (all the properties
534 referenced in the WHERE clause) for the specified filter query
|
535 carolann.graves 1.72 expression.
|
536 kumpf 1.1
|
537 chuck 1.64 @param queryExpression the query expression
|
538 kumpf 1.22 @param nameSpaceName the namespace
|
539 chuck 1.64 @param indicationClassName the indication class name
|
540 kumpf 1.1
|
541 carolann.graves 1.74 @return CIMPropertyList of required properties for the filter query
|
542 chuck 1.64 expression
|
543 kumpf 1.1 */
544 CIMPropertyList _getPropertyList (
|
545 chuck 1.64 const QueryExpression & queryExpression,
|
546 kumpf 1.31 const CIMNamespaceName & nameSpaceName,
547 const CIMName & indicationClassName) const;
|
548 kumpf 1.22
549 /**
|
550 carolann.graves 1.74 Checks if the property list includes all properties in the specified
|
551 kumpf 1.22 class. If so, a NULL CIMPropertyList is returned. Otherwise, a
|
552 carolann.graves 1.74 CIMPropertyList containing the properties is returned. The list of
553 property names in the specified indication class is also returned in
554 the indicationClassProperties parameter.
|
555 carolann.graves 1.60
556 @param propertyList the list of property names
557 @param nameSpaceName the namespace
558 @param indicationClassName the indication class name
559 @param indicationClassProperties the list of property names in the
560 specified indication class
|
561 kumpf 1.22
|
562 carolann.graves 1.74 @return CIMPropertyList of properties referenced by the filter query
|
563 kumpf 1.22 select statement
564 */
565 CIMPropertyList _checkPropertyList (
|
566 kumpf 1.29 const Array <CIMName> & propertyList,
|
567 kumpf 1.31 const CIMNamespaceName & nameSpaceName,
|
568 carolann.graves 1.60 const CIMName & indicationClassName,
569 Array <CIMName> & indicationClassProperties) const;
|
570 kumpf 1.1
571 /**
572 Extracts the condition (WHERE Clause) from the specified filter query
573 string.
574
575 @param filterQuery the filter query
576
577 @return String containing the filter query condition
578 */
579 String _getCondition (
580 const String & filterQuery) const;
581
582 /**
|
583 carolann.graves 1.74 Deletes subscriptions referencing the specified handler. All namespaces
584 are searched for subscriptions that reference the handler to be deleted.
|
585 kumpf 1.4
|
586 carolann.graves 1.74 @param nameSpace the name space of the handler being
587 deleted
|
588 kumpf 1.4 @param referenceProperty the name of the reference property in the
589 subscription instance
590 @param handler the handler reference
591 */
592 void _deleteReferencingSubscriptions (
|
593 kumpf 1.31 const CIMNamespaceName & nameSpace,
594 const CIMName & referenceProperty,
|
595 kumpf 1.25 const CIMObjectPath & handler);
|
596 kumpf 1.4
597 /**
598 Determines if specified Subscription has expired
599
600 NOTE: It is assumed that the instance passed to this function is a
601 Subscription instance, and that the Subscription Duration and
602 Start Time properties exist
603
604 @param instance the subscription instance
605
|
606 kumpf 1.54 @return True, if the Subscription has expired;
|
607 kumpf 1.4 False otherwise
608 */
609 Boolean _isExpired (
610 const CIMInstance & instance) const;
611
612 /**
|
613 carolann.graves 1.74 Deletes specified subscription
|
614 kumpf 1.5
615 @param subscription the subscription reference
616 */
617 void _deleteExpiredSubscription (
|
618 kumpf 1.25 CIMObjectPath & subscription);
|
619 kumpf 1.21
620 /**
621 Gets the Subscription Time Remaining property
622
|
623 carolann.graves 1.74 Calculates time remaining from Subscription Start Time, Subscription
|
624 kumpf 1.21 Duration, and current date time. If the subscription has a non-null
|
625 carolann.graves 1.74 Duration, the Time Remaining is set, and True is returned. If the
626 subscription does not have a non-null Duration, it has no expiration
627 date, and the time remaining is unlimited. In this case, the Time
|
628 kumpf 1.21 Remaining is not set and False is returned.
|
629 carolann.graves 1.74
|
630 kumpf 1.21 NOTE: It is assumed that the instance passed to this function is a
|
631 carolann.graves 1.74 Subscription instance, and that the Start Time property exists and
|
632 kumpf 1.21 has a value
633
634 @param instance Input the subscription instance
635 @param timeRemaining Output the time remaining (seconds)
636
|
637 kumpf 1.54 @return True, if the subscription has a non-null Duration;
|
638 kumpf 1.21 False otherwise
639 */
640 Boolean _getTimeRemaining (
641 const CIMInstance & instance,
642 Uint64 & timeRemaining) const;
|
643 kumpf 1.5
644 /**
|
645 kumpf 1.4 Sets the Subscription Time Remaining property
646
|
647 carolann.graves 1.74 Calculates time remaining from Subscription Start Time, Subscription
|
648 kumpf 1.4 Duration, and current date time
|
649 carolann.graves 1.74
|
650 kumpf 1.4 NOTE: It is assumed that the instance passed to this function is a
651 Subscription instance, and that the Subscription Duration and
652 Start Time properties exist
653
654 @param instance the subscription instance
655 */
656 void _setTimeRemaining (
657 CIMInstance & instance);
658
659 /**
|
660 kumpf 1.23 Gets the parameter values required to Create or Modify the subscription
|
661 kumpf 1.10 request.
|
662 carolann.graves 1.74 If no indication providers are found, condition and queryLanguage are
|
663 kumpf 1.3 set to empty string.
664
|
665 kumpf 1.33 @param subscriptionInstance Input subscription instance
|
666 carolann.graves 1.74 @param indicationSubclasses Output list of subclasses of indication
|
667 kumpf 1.33 class in filter query
|
668 kumpf 1.3 @param indicationProviders Output list of providers with associated
669 classes
670 @param propertyList Output list of properties required by the
671 subscription
|
672 kumpf 1.17 @param sourceNameSpace Output source namespace for filter query
|
673 kumpf 1.3 @param condition Output condition part of the filter query
|
674 kumpf 1.58 @param query Output filter query
|
675 kumpf 1.3 @param queryLanguage Output query language in which the filter
676 query is expressed
677 */
|
678 kumpf 1.23 void _getCreateParams (
|
679 kumpf 1.3 const CIMInstance & subscriptionInstance,
|
680 kumpf 1.33 Array <CIMName> & indicationSubclasses,
|
681 kumpf 1.10 Array <ProviderClassList> & indicationProviders,
682 CIMPropertyList & propertyList,
|
683 kumpf 1.31 CIMNamespaceName & sourceNameSpace,
|
684 kumpf 1.10 String & condition,
|
685 kumpf 1.58 String & query,
|
686 kumpf 1.10 String & queryLanguage);
687
688 /**
|
689 kumpf 1.23 Gets the parameter values required to Create or Modify the subscription
|
690 kumpf 1.10 request.
691
|
692 kumpf 1.33 @param subscriptionInstance Input subscription instance
|
693 carolann.graves 1.74 @param indicationSubclasses Output list of subclasses of indication
|
694 kumpf 1.33 class in filter query
|
695 kumpf 1.10 @param propertyList Output list of properties required by the
696 subscription
|
697 kumpf 1.17 @param sourceNameSpace Output source namespace for filter query
|
698 kumpf 1.10 @param condition Output condition part of the filter query
|
699 kumpf 1.58 @param query Output filter query
|
700 kumpf 1.10 @param queryLanguage Output query language in which the filter
701 query is expressed
702 */
|
703 kumpf 1.23 void _getCreateParams (
|
704 kumpf 1.10 const CIMInstance & subscriptionInstance,
|
705 kumpf 1.33 Array <CIMName> & indicationSubclasses,
|
706 kumpf 1.3 CIMPropertyList & propertyList,
|
707 kumpf 1.31 CIMNamespaceName & sourceNameSpace,
|
708 kumpf 1.3 String & condition,
|
709 kumpf 1.58 String & query,
|
710 kumpf 1.3 String & queryLanguage);
711
712 /**
|
713 kumpf 1.23 Gets the parameter values required to Delete the subscription request.
|
714 kumpf 1.5
|
715 kumpf 1.33 @param subscriptionInstance Input subscription instance
|
716 carolann.graves 1.74 @param indicationSubclasses Output list of subclasses of indication
|
717 kumpf 1.33 class in filter query
718 @param sourceNameSpace Output source namespace for filter query
|
719 kumpf 1.5
|
720 kumpf 1.23 @return List of providers with associated classes to Delete
|
721 kumpf 1.5 */
|
722 kumpf 1.23 Array <ProviderClassList> _getDeleteParams (
|
723 kumpf 1.33 const CIMInstance & subscriptionInstance,
724 Array <CIMName> & indicationSubclasses,
725 CIMNamespaceName & sourceNameSpace);
|
726 mday 1.13
|
727 kumpf 1.5 /**
|
728 kumpf 1.23 Sends Create subscription request for the specified subscription
|
729 carolann.graves 1.68 to each provider in the list. The requests are sent using SendAsync,
|
730 carolann.graves 1.74 and the responses are aggregated in the callback methods. Create
731 Subscription requests are sent to the indication providers using
732 SendAsync in the following cases: (1) on creation of an enabled
733 subscription instance, and (2) on modification of a subscription
734 instance, when the state changes to enabled. In cases (1) and (2),
735 there is an original Create Instance or Modify Instance request to
|
736 carolann.graves 1.71 which the Indication Service must respond.
|
737 kumpf 1.1
738 @param indicationProviders list of providers with associated classes
|
739 kumpf 1.54 @param nameSpace the nameSpace name of the resource being
|
740 carolann.graves 1.74 monitored, from the SourceNamespace
741 property of the CIM_IndicationFilter
742 instance for the specified
|
743 kumpf 1.54 subscription
|
744 kumpf 1.1 @param propertyList the properties referenced by the
745 subscription
746 @param condition the condition part of the filter query
|
747 kumpf 1.58 @param query the filter query
|
748 kumpf 1.1 @param queryLanguage the query language in which the filter
749 query is expressed
|
750 kumpf 1.23 @param subscription the subscription to be created
|
751 chuck 1.35 @param acceptLangs the language of the response, and
752 future indications
753 @param contentLangs the language of the subscription
|
754 carolann.graves 1.71 @param origRequest the original request (Create
|
755 carolann.graves 1.68 Instance, Modify Instance)
|
756 carolann.graves 1.74 @param indicationSubclasses the indication subclasses for the
|
757 kumpf 1.41 subscription
|
758 kumpf 1.9 @param userName the userName for authentication
759 @param authType the authentication type
760
|
761 kumpf 1.1 */
|
762 carolann.graves 1.68 void _sendAsyncCreateRequests (
|
763 kumpf 1.10 const Array <ProviderClassList> & indicationProviders,
|
764 kumpf 1.31 const CIMNamespaceName & nameSpace,
|
765 kumpf 1.1 const CIMPropertyList & propertyList,
766 const String & condition,
|
767 kumpf 1.58 const String & query,
|
768 kumpf 1.1 const String & queryLanguage,
|
769 kumpf 1.26 const CIMInstance & subscription,
|
770 chuck 1.35 const AcceptLanguages & acceptLangs,
771 const ContentLanguages & contentLangs,
|
772 kumpf 1.41 const CIMRequestMessage * origRequest,
773 const Array <CIMName> & indicationSubclasses,
|
774 kumpf 1.9 const String & userName,
775 const String & authType = String::EMPTY);
|
776 mday 1.13
|
777 kumpf 1.1 /**
|
778 carolann.graves 1.68 Sends Create subscription request for the specified subscription
779 to each provider in the list. The requests are sent using SendWait,
780 so no callback methods are required. Create Subscription requests are
781 sent to the indication providers using SendWait in the following cases:
|
782 carolann.graves 1.74 (1) on notification of a provider registration change newly enabling
783 the provider to serve the subscription, (2) on notification that a
784 provider has been enabled and may now serve the subscription, and
|
785 carolann.graves 1.71 (3) on initialization, for each enabled subscription retrieved from the
786 repository. In cases (1) and (2), there is an original Notify Provider
|
787 carolann.graves 1.74 Registration or Notify Provider Enable request to which the Indication
|
788 carolann.graves 1.71 Service must respond. In case (3), there is no original request and no
789 response is required.
|
790 carolann.graves 1.68
791 @param indicationProviders list of providers with associated classes
792 @param nameSpace the nameSpace name of the resource being
793 monitored, from the SourceNamespace
794 property of the CIM_IndicationFilter
795 instance for the specified
796 subscription
797 @param propertyList the properties referenced by the
798 subscription
799 @param condition the condition part of the filter query
800 @param query the filter query
801 @param queryLanguage the query language in which the filter
802 query is expressed
803 @param subscription the subscription to be created
804 @param acceptLangs the language of the response, and
805 future indications
806 @param contentLangs the language of the subscription
807 @param userName the userName for authentication
808 @param authType the authentication type
809
|
810 carolann.graves 1.71 @return List of providers that accepted subscription
|
811 carolann.graves 1.68 */
|
812 carolann.graves 1.71 Array <ProviderClassList> _sendWaitCreateRequests (
|
813 carolann.graves 1.68 const Array <ProviderClassList> & indicationProviders,
814 const CIMNamespaceName & nameSpace,
815 const CIMPropertyList & propertyList,
816 const String & condition,
817 const String & query,
818 const String & queryLanguage,
819 const CIMInstance & subscription,
820 const AcceptLanguages & acceptLangs,
821 const ContentLanguages & contentLangs,
822 const String & userName,
823 const String & authType = String::EMPTY);
824
825 /**
|
826 kumpf 1.23 Sends Modify subscription request for the specified subscription
|
827 carolann.graves 1.68 to each provider in the list. The requests are sent using SendWait,
828 so no callback methods are required. Modify Subscription requests must
|
829 carolann.graves 1.74 be sent to the indication providers on notification of a provider
830 registration change, when the provider was formerly serving the
831 subscription, and is still serving the subscription, in the following
832 cases: (1) the provider is newly serving an additional indication
|
833 carolann.graves 1.68 subclass specified by the subscription, or (2) the provider is
|
834 carolann.graves 1.74 no longer serving an indication subclass specified by the subscription
|
835 kumpf 1.41 (but is still serving at least one of the indication subclasses).
|
836 carolann.graves 1.68 In cases (1) and (2), there is an original Notify Provider Registration
837 request to which the Indication Service must respond.
|
838 kumpf 1.1
839 @param indicationProviders list of providers with associated classes
|
840 kumpf 1.54 @param nameSpace the nameSpace name of the resource being
841 monitored, from the SourceNamespace
842 property of the CIM_IndicationFilter
|
843 carolann.graves 1.74 instance for the specified
844 subscription
|
845 kumpf 1.1 @param propertyList the properties referenced by the
846 subscription
847 @param condition the condition part of the filter query
|
848 kumpf 1.58 @param query the filter query
|
849 kumpf 1.1 @param queryLanguage the query language in which the filter
850 query is expressed
851 @param subscription the subscription to be modified
|
852 chuck 1.35 @param acceptLangs the language of the response, and
853 future indications
|
854 carolann.graves 1.74 @param contentLangs the language of the subscription
|
855 kumpf 1.9 @param userName the userName for authentication
856 @param authType the authentication type
|
857 kumpf 1.1 */
|
858 carolann.graves 1.68 void _sendWaitModifyRequests (
|
859 kumpf 1.10 const Array <ProviderClassList> & indicationProviders,
|
860 kumpf 1.31 const CIMNamespaceName & nameSpace,
|
861 kumpf 1.1 const CIMPropertyList & propertyList,
862 const String & condition,
|
863 kumpf 1.58 const String & query,
|
864 kumpf 1.1 const String & queryLanguage,
|
865 kumpf 1.26 const CIMInstance & subscription,
|
866 chuck 1.35 const AcceptLanguages & acceptLangs,
|
867 carolann.graves 1.74 const ContentLanguages & contentLangs,
|
868 kumpf 1.9 const String & userName,
869 const String & authType = String::EMPTY);
|
870 kumpf 1.1
871 /**
|
872 kumpf 1.23 Sends Delete subscription request for the specified subscription
|
873 carolann.graves 1.68 to each provider in the list. The requests are sent using SendAsync,
|
874 carolann.graves 1.74 and the responses are aggregated in the callback methods. Delete
875 Subscription requests are sent to the indication providers using
876 SendAsync in the following cases: (1) on deletion of an enabled
877 subscription instance, (2) on modification of a subscription instance,
878 when the state changes to disabled, (3) on deletion of an expired
879 subscription, and (4) on deletion of a subscription referencing a
880 deleted transient handler. In cases (1) and (2), there is an original
881 Delete Instance or Modify Instance request to which the Indication
|
882 carolann.graves 1.68 Service must respond. In cases (3) and (4), there is no orginal request
883 and no response is required.
|
884 kumpf 1.1
885 @param indicationProviders list of providers with associated classes
|
886 carolann.graves 1.74 @param nameSpace the nameSpace name of the resource being
|
887 kumpf 1.54 monitored, from the SourceNamespace
888 property of the CIM_IndicationFilter
|
889 carolann.graves 1.74 instance for the specified
890 subscription
|
891 kumpf 1.1 @param subscription the subscription to be modified
|
892 chuck 1.35 @param acceptLangs the language of the response
|
893 carolann.graves 1.74 @param contentLangs the language of the subscription
894 @param origRequest the original request (Delete Instance,
|
895 carolann.graves 1.68 Modify Instance)
|
896 carolann.graves 1.74 @param indicationSubclasses the indication subclasses for the
|
897 kumpf 1.41 subscription
|
898 kumpf 1.9 @param userName the userName for authentication
899 @param authType the authentication type
|
900 kumpf 1.1 */
|
901 carolann.graves 1.68 void _sendAsyncDeleteRequests (
|
902 kumpf 1.10 const Array <ProviderClassList> & indicationProviders,
|
903 kumpf 1.31 const CIMNamespaceName & nameSpace,
|
904 kumpf 1.26 const CIMInstance & subscription,
|
905 chuck 1.35 const AcceptLanguages & acceptLangs,
|
906 carolann.graves 1.74 const ContentLanguages & contentLangs,
|
907 kumpf 1.41 const CIMRequestMessage * origRequest,
908 const Array <CIMName> & indicationSubclasses,
|
909 kumpf 1.9 const String & userName,
910 const String & authType = String::EMPTY);
|
911 kumpf 1.1
912 /**
|
913 carolann.graves 1.68 Sends Delete subscription request for the specified subscription
914 to each provider in the list. The requests are sent using SendWait,
915 so no callback methods are required. Delete Subscription requests are
|
916 carolann.graves 1.74 sent to the indication providers using SendWait in the following case:
917 (1) on notification of a provider registration change newly preventing
918 the provider from serving the subscription. In case (1), there is an
919 original Notify Provider Registration request to which the Indication
920 Service must respond.
|
921 carolann.graves 1.68
922 @param indicationProviders list of providers with associated classes
923 @param nameSpace the nameSpace name of the resource being
924 monitored, from the SourceNamespace
925 property of the CIM_IndicationFilter
926 instance for the specified
927 subscription
928 @param subscription the subscription to be modified
929 @param acceptLangs the language of the response
930 @param contentLangs the language of the subscription
931 @param userName the userName for authentication
932 @param authType the authentication type
933 */
934 void _sendWaitDeleteRequests (
935 const Array <ProviderClassList> & indicationProviders,
936 const CIMNamespaceName & nameSpace,
937 const CIMInstance & subscription,
938 const AcceptLanguages & acceptLangs,
939 const ContentLanguages & contentLangs,
940 const String & userName,
941 const String & authType = String::EMPTY);
942 carolann.graves 1.68
943 /**
|
944 kumpf 1.41 Collects responses from providers for aggregation as they are received,
|
945 carolann.graves 1.74 and stores them in the IndicationOperationAggregate instance. Calls
946 _handleOperationResponseAggregation to process the responses, once all
|
947 kumpf 1.41 expected responses have been received.
948
|
949 kumpf 1.57 @param operation shared data structure that controls message
|
950 kumpf 1.41 processing
951 @param destination target queue of completion callback
952 @param userParameter user parameter for callback processing
953 */
954 static void _aggregationCallBack (
955 AsyncOpNode * operation,
956 MessageQueue * destination,
957 void * userParameter);
958
959 /**
|
960 carolann.graves 1.74 Calls the appropriate function to processes responses from providers,
|
961 kumpf 1.41 based on the type of request sent to providers, once all responses have
|
962 carolann.graves 1.74 been received.
|
963 kumpf 1.41
|
964 carolann.graves 1.74 @param operationAggregate the operation aggregate instance
|
965 kumpf 1.41 */
966 void _handleOperationResponseAggregation (
967 IndicationOperationAggregate * operationAggregate);
968
969 /**
|
970 carolann.graves 1.74 Processes create subscription responses from providers, once all have
971 been received. Takes the appropriate action, based on the type of the
972 original request, if any, and the responses received. Sends the
|
973 kumpf 1.41 response to the original request, if required.
974
|
975 carolann.graves 1.74 @param operationAggregate the operation aggregate instance
|
976 kumpf 1.41 */
977 void _handleCreateResponseAggregation (
978 IndicationOperationAggregate * operationAggregate);
979
980 /**
|
981 carolann.graves 1.74 Processes modify subscription responses from providers, once all have
|
982 kumpf 1.41 been received. Updates the subscription hash tables.
983
|
984 carolann.graves 1.74 @param operationAggregate the operation aggregate instance
|
985 kumpf 1.41 */
986 void _handleModifyResponseAggregation (
987 IndicationOperationAggregate * operationAggregate);
988
989 /**
|
990 carolann.graves 1.74 Processes delete subscription responses from providers, once all have
991 been received. Updates the subscription hash tables appropriately,
992 based on the type of the original request, if any. Sends the response
|
993 kumpf 1.41 to the original request, if required.
994
|
995 carolann.graves 1.74 @param operationAggregate the operation aggregate instance
|
996 kumpf 1.41 */
997 void _handleDeleteResponseAggregation (
998 IndicationOperationAggregate * operationAggregate);
999
1000 /**
|
1001 kumpf 1.1 Creates an alert instance of the specified class.
1002
1003 @param alertClassName the alert class name
|
1004 kumpf 1.7 @param subscriptions subscriptions for which alert is to be
|
1005 kumpf 1.1 created
1006
1007 @return the created alert instance
1008 */
1009 CIMInstance _createAlertInstance (
|
1010 kumpf 1.31 const CIMName & alertClassName,
|
1011 kumpf 1.26 const Array <CIMInstance> & subscriptions);
|
1012 mday 1.14
|
1013 kumpf 1.40 #if 0
|
1014 carolann.graves 1.74 /**
|
1015 mday 1.14 Asynchronous completion routine for _sendAlerts
1016 */
1017
|
1018 carolann.graves 1.74 static void _sendAlertsCallBack(AsyncOpNode *operation,
1019 MessageQueue *callback_destination,
|
1020 mday 1.14 void *parameter);
|
1021 kumpf 1.1
1022 /**
1023 Sends specified alert to each unique handler instance for the
1024 specified subscriptions in the list.
1025
|
1026 kumpf 1.7 @param subscriptions subscriptions for which alert is to be
|
1027 kumpf 1.1 sent
1028 @param alertInstance the alert to be sent
1029 */
1030 void _sendAlerts (
|
1031 kumpf 1.26 const Array <CIMInstance> & subscriptions,
|
1032 kumpf 1.1 /* const */ CIMInstance & alertInstance);
|
1033 kumpf 1.40 #endif
|
1034 carolann.graves 1.74
|
1035 kumpf 1.16 /**
|
1036 carolann.graves 1.74 Sends a Subscription Init Complete request to the Provider
|
1037 carolann.graves 1.67 Manager Service.
1038 */
1039 void _sendSubscriptionInitComplete ();
|
1040 kumpf 1.16
|
1041 kumpf 1.37 /**
1042 Gets the value of the Creator property from the specified Subscription
|
1043 carolann.graves 1.74 instance. If this function returns False, the value of the creator
|
1044 kumpf 1.37 parameter is unchanged.
1045
1046 @param instance subscription instance
1047 @param creator value of Creator property if retrieved
1048
|
1049 kumpf 1.54 @return True, if the value of the Creator property was retrieved;
|
1050 kumpf 1.37 False if Creator property was missing, null, or of an
|
1051 kumpf 1.54 incorrect type
|
1052 kumpf 1.37 */
1053 Boolean _getCreator (
1054 const CIMInstance & instance,
1055 String & creator) const;
1056
1057 /**
|
1058 kumpf 1.54 Validates the specified SubscriptionState property value.
|
1059 kumpf 1.37
|
1060 kumpf 1.54 @param state SubscriptionState property value
|
1061 kumpf 1.37
|
1062 kumpf 1.54 @return True, if the SubscriptionState property value is valid;
1063 False otherwise
|
1064 kumpf 1.37 */
|
1065 kumpf 1.54 Boolean _validateState (
1066 const Uint16 state) const;
|
1067 kumpf 1.37
|
1068 kumpf 1.46 /**
1069 This function peforms an authorization test based on the
1070 value of the enableSubscriptionForNonprivilegedUsers.
1071
1072 @param userName String
1073
|
1074 carolann.graves 1.74 @return True, if authentication is not enabled or the
|
1075 kumpf 1.54 user is a privileged system user;
1076 False, if authentication is enabled and the
1077 user is not privileged
|
1078 kumpf 1.46 */
1079 void _checkNonprivilegedAuthorization (
1080 const String & userName);
1081
|
1082 kumpf 1.48 /**
|
1083 kumpf 1.49 Updates the propertyList, in preparation for calling the Repository.
|
1084 carolann.graves 1.74 If the propertyList is not null, the Creator property must be added to
1085 the list. Also, if the request is for the Subscription class, the
1086 value of the Time Remaining property need only be calculated if it is
1087 requested. In that case, the Subscription Duration and Start Time
1088 properties must be added to the list if not already there.
|
1089 kumpf 1.49
1090 @param className class name for the request
1091 @param propertyList list of properties requested
1092 @param setTimeRemaining indicates whether Time Remaining property
1093 was requested
1094 @param startTimeAdded indicates whether Start Time property was
1095 added to the list
1096 @param durationAdded indicates whether Duration property was
1097 added to the list
1098 */
1099 void _updatePropertyList
1100 (CIMName & className,
1101 CIMPropertyList & propertyList,
1102 Boolean & setTimeRemaining,
1103 Boolean & startTimeAdded,
1104 Boolean & durationAdded);
1105
1106 /**
|
1107 carolann.graves 1.74 Gets a String containing the comma-separated Subscription Filter Name
|
1108 kumpf 1.48 and Handler Name, for use in a log message to identify the subscription.
1109
1110 @param subscription subscription instance
1111
1112 @return String containing the comma-separated Subscription Filter Name
1113 and Handler Name
1114 */
1115 String _getSubscriptionLogString
1116 (CIMInstance & subscription);
1117
|
1118 kumpf 1.54 SubscriptionRepository* _subscriptionRepository;
|
1119 kumpf 1.51
|
1120 kumpf 1.54 SubscriptionTable * _subscriptionTable;
|
1121 kumpf 1.6
|
1122 kumpf 1.8 /**
1123 Handle to Provider Registration Manager
1124 */
1125 ProviderRegistrationManager * _providerRegManager;
|
1126 kumpf 1.5
|
1127 carolann.graves 1.74 /**
|
1128 chuck 1.64 Pointer to CIMRepository, for use in building QueryExpression.
1129 */
1130 CIMRepository* _cimRepository;
1131
|
1132 kumpf 1.5 /**
1133 Integer representing queue ID for accessing Provider Manager Service
1134 */
1135 Uint32 _providerManager;
1136
1137 /**
1138 Integer representing queue ID for accessing Handler Manager Service
1139 */
1140 Uint32 _handlerService;
1141
1142 /**
|
1143 kumpf 1.46 Boolean indicating that the CIM Server has been configured to
1144 allow non-privileged users read and write access to the
1145 Subscription classes.
1146 */
1147 Boolean _enableSubscriptionsForNonprivilegedUsers;
1148
|
1149 kumpf 1.55 /**
|
1150 carolann.graves 1.74 Gets the indication class specified by the subscription filter query.
|
1151 yi.zhou 1.66
1152 @param instance the subscription instance
1153
1154 @return CIMClass object for the indication class
1155 */
1156 CIMClass _getIndicationClass(
1157 const CIMInstance & instance);
1158
1159 /**
|
1160 kumpf 1.55 Arrays of valid and supported property values
1161
|
1162 carolann.graves 1.74 Notes:
|
1163 kumpf 1.55 Valid values are defined by the CIM Event Schema MOF
1164 Supported values are a subset of the valid values
1165 Some valid values, as defined in the MOF, are not currently supported
1166 by the Pegasus IndicationService
1167
|
1168 carolann.graves 1.74 Supported Values
|
1169 kumpf 1.55 SubscriptionState: Enabled, Disabled
1170 RepeatNotificationPolicy: Unknown, Other, None, Suppress, Delay
1171 OnFatalErrorPolicy: Ignore, Disable, Remove
1172 PersistenceType: Permanent, Transient
1173 */
|
1174 kumpf 1.19 Array <Uint16> _validStates;
1175 Array <Uint16> _validRepeatPolicies;
1176 Array <Uint16> _validErrorPolicies;
1177 Array <Uint16> _validPersistenceTypes;
|
1178 kumpf 1.55 Array <Uint16> _supportedStates;
1179 Array <Uint16> _supportedRepeatPolicies;
1180 Array <Uint16> _supportedErrorPolicies;
1181 Array <Uint16> _supportedPersistenceTypes;
|
1182 yi.zhou 1.66
|
1183 kumpf 1.1 };
1184
1185 PEGASUS_NAMESPACE_END
1186
|
1187 kumpf 1.41 #endif /* Pegasus_IndicationService_h */
|