(file) Return to IndicationServiceConfiguration.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / IndicationService

  1 martin 1.2 //%LICENSE////////////////////////////////////////////////////////////////
  2 martin 1.3 //
  3 martin 1.2 // Licensed to The Open Group (TOG) under one or more contributor license
  4            // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
  5            // this work for additional information regarding copyright ownership.
  6            // Each contributor licenses this file to you under the OpenPegasus Open
  7            // Source License; you may not use this file except in compliance with the
  8            // License.
  9 martin 1.3 //
 10 martin 1.2 // Permission is hereby granted, free of charge, to any person obtaining a
 11            // copy of this software and associated documentation files (the "Software"),
 12            // to deal in the Software without restriction, including without limitation
 13            // the rights to use, copy, modify, merge, publish, distribute, sublicense,
 14            // and/or sell copies of the Software, and to permit persons to whom the
 15            // Software is furnished to do so, subject to the following conditions:
 16 martin 1.3 //
 17 martin 1.2 // The above copyright notice and this permission notice shall be included
 18            // in all copies or substantial portions of the Software.
 19 martin 1.3 //
 20 martin 1.2 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 21 martin 1.3 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 22 martin 1.2 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 23            // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 24            // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 25            // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 26            // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 27 martin 1.3 //
 28 martin 1.2 //////////////////////////////////////////////////////////////////////////
 29 venkat.puvvada 1.1 //
 30                    //%/////////////////////////////////////////////////////////////////////////////
 31                    
 32                    #include <Pegasus/Common/Tracer.h>
 33 venkat.puvvada 1.10 #include <Pegasus/Common/StringConversion.h>
 34 venkat.puvvada 1.1  
 35 venkat.puvvada 1.6  #include "IndicationService.h"
 36 venkat.puvvada 1.1  #include "IndicationConstants.h"
 37                     #include "IndicationServiceConfiguration.h"
 38                     
 39                     PEGASUS_NAMESPACE_BEGIN
 40                     
 41 venkat.puvvada 1.10 static Uint32 _getConfigValue(const String &name)
 42                     {
 43                         Uint64 v;
 44                         ConfigManager* configManager = ConfigManager::getInstance();
 45                         String strValue = configManager->getCurrentValue(name);
 46                         StringConversion::decimalStringToUint64(strValue.getCString(), v);
 47                     
 48                         return (Uint32)v;
 49                     }
 50                     
 51 venkat.puvvada 1.1  IndicationServiceConfiguration::IndicationServiceConfiguration(
 52                         CIMRepository * repository)
 53                         : _cimRepository (repository)
 54                     {
 55 ajay.rao       1.8     _enabledState = _ENABLEDSTATE_DISABLED;
 56                        _healthState = _HEALTHSTATE_OK;
 57 venkat.puvvada 1.1  }
 58                     
 59                     IndicationServiceConfiguration::~IndicationServiceConfiguration()
 60                     {
 61                     }
 62                     
 63                     CIMInstance IndicationServiceConfiguration::getInstance(
 64                         const CIMNamespaceName & nameSpace,
 65                         const CIMObjectPath & instanceName,
 66                         Boolean includeQualifiers,
 67                         Boolean includeClassOrigin,
 68                         const CIMPropertyList & propertyList)
 69                     {
 70                         CIMInstance instance;
 71                     
 72                         if (instanceName.getClassName().equal(
 73                             PEGASUS_CLASSNAME_CIM_INDICATIONSERVICE))
 74                         {
 75                             instance = _getIndicationServiceInstance(
 76                                 includeQualifiers,
 77                                 includeClassOrigin,
 78 venkat.puvvada 1.1              propertyList);
 79                         }
 80                         else
 81                         {
 82                             PEGASUS_ASSERT(instanceName.getClassName().equal(
 83                                 PEGASUS_CLASSNAME_CIM_INDICATIONSERVICECAPABILITIES));
 84                             instance = _getIndicationServiceCapabilitiesInstance(
 85                                 includeQualifiers,
 86                                 includeClassOrigin,
 87                                 propertyList);
 88                         }
 89                         CIMObjectPath path = instanceName;
 90                         path.setNameSpace(nameSpace);
 91                     
 92                         if (!path.identical(instance.getPath()))
 93                         {
 94                             throw PEGASUS_CIM_EXCEPTION(
 95                                 CIM_ERR_NOT_FOUND,
 96                                 instanceName.toString());
 97                         }
 98                     
 99 venkat.puvvada 1.1      return instance;
100                     }
101                     
102                     Array<CIMInstance> IndicationServiceConfiguration::
103                         enumerateInstancesForClass(
104                             const CIMNamespaceName & nameSpace,
105                             const CIMName & className,
106                             Boolean includeQualifiers,
107                             Boolean includeClassOrigin,
108                             const CIMPropertyList & propertyList)
109                     {
110                         Array<CIMInstance> instances;
111                         if (className.equal(PEGASUS_CLASSNAME_CIM_INDICATIONSERVICE))
112                         {
113                             instances.append(_getIndicationServiceInstance(
114                                 includeQualifiers,
115                                 includeClassOrigin,
116                                 propertyList));
117                         }
118                         else
119                         {
120 venkat.puvvada 1.1          PEGASUS_ASSERT(className.equal(
121                                 PEGASUS_CLASSNAME_CIM_INDICATIONSERVICECAPABILITIES));
122                             instances.append(_getIndicationServiceCapabilitiesInstance(
123                                 includeQualifiers,
124                                 includeClassOrigin,
125                                 propertyList));
126                         }
127                     
128                         return instances;
129                     }
130                     
131                     Array <CIMObjectPath> IndicationServiceConfiguration::
132                         enumerateInstanceNamesForClass(
133                             const CIMNamespaceName & nameSpace,
134                             const CIMName & className)
135                     {
136                         Array<CIMObjectPath> instanceNames;
137                         if (className.equal(PEGASUS_CLASSNAME_CIM_INDICATIONSERVICE))
138                         {
139                             instanceNames.append(_getIndicationServiceInstance(
140                                 false,
141 venkat.puvvada 1.1              false,
142                                 CIMPropertyList()).getPath());
143                         }
144                         else
145                         {
146                             PEGASUS_ASSERT(className.equal(
147                                 PEGASUS_CLASSNAME_CIM_INDICATIONSERVICECAPABILITIES));
148                             instanceNames.append(_getIndicationServiceCapabilitiesInstance(
149                                 false,
150                                 false,
151                                 CIMPropertyList()).getPath());
152                         }
153                     
154                         return instanceNames;
155                     }
156                     
157                     CIMInstance IndicationServiceConfiguration::_buildInstanceSkeleton(
158                         const CIMNamespaceName & nameSpace,
159                         const CIMName& className,
160                         CIMClass &returnedClass)
161                     {
162 venkat.puvvada 1.1      returnedClass = _cimRepository->getClass(
163                             nameSpace,
164                             className,
165                             false,
166                             true,
167                             true);
168                     
169                         CIMInstance skeleton = returnedClass.buildInstance(
170                             true,
171                             true,
172                             CIMPropertyList());
173                     
174                         return skeleton;
175                     }
176                     
177                     void IndicationServiceConfiguration::_setPropertyValue(
178                         CIMInstance& instance,
179                         const CIMName& propertyName,
180                         const CIMValue & value)
181                     {
182                         Uint32 pos;
183 venkat.puvvada 1.1  
184                         if((pos = instance.findProperty(propertyName)) != PEG_NOT_FOUND)
185                         {
186                             instance.getProperty(pos).setValue(value);
187                         }
188                     }
189                     
190 marek          1.7  
191                     
192                     void IndicationServiceConfiguration::_setIntervalPropertyValues(
193                         CIMInstance& instance)
194                     {
195                         Uint32 pos1 = instance.findProperty(
196                             _PROPERTY_SUBSCRIPTIONREMOVALTIMEINTERVAL);
197                     
198                         Uint32 pos2 = instance.findProperty(_PROPERTY_DELIVERYRETRYINTERVAL);
199                     
200                         if (pos1 != PEG_NOT_FOUND && pos2 != PEG_NOT_FOUND)
201                         {
202                             CIMProperty p1 = instance.getProperty(pos1);
203                             if (CIMTYPE_UINT64 == p1.getType())
204                             {
205                                 // Old CIM Schema 2.17 with experimental classes
206                                 p1.setValue(
207                                     Uint64(_PROPERTY_SUBSCRIPTIONREMOVALTIMEINTERVAL_VALUE));
208                             }
209                             else
210                             {
211 marek          1.7              // New CIM Schema 2.22 and up with final classes
212                                 p1.setValue(_PROPERTY_SUBSCRIPTIONREMOVALTIMEINTERVAL_VALUE);
213                             }
214                             CIMProperty p2 = instance.getProperty(pos2);
215                             if (CIMTYPE_UINT64 == p2.getType())
216                             {
217                                 // Old CIM Schema 2.17 with experimental classes
218                                 p2.setValue(
219 venkat.puvvada 1.10                 Uint64(_getConfigValue("minIndicationDeliveryRetryInterval")));
220 marek          1.7          }
221                             else
222                             {
223                                 // New CIM Schema 2.22 and up with final classes
224 venkat.puvvada 1.10             p2.setValue(_getConfigValue("minIndicationDeliveryRetryInterval"));
225 ajay.rao       1.8          }
226 marek          1.7      }
227                     }
228                     
229 venkat.puvvada 1.1  CIMInstance IndicationServiceConfiguration::_getIndicationServiceInstance(
230                         Boolean includeQualifiers,
231                         Boolean includeClassOrigin,
232                         const CIMPropertyList &propertyList)
233                     {
234                         PEG_METHOD_ENTER(TRC_INDICATION_SERVICE,
235                             "IndicationServiceConfiguration::"
236                                 "_getIndicationServiceInstance");
237                         CIMInstance instance;
238                         CIMClass returnedClass;
239                     
240                         instance = _buildInstanceSkeleton(
241                             PEGASUS_NAMESPACENAME_INTEROP,
242                             PEGASUS_CLASSNAME_CIM_INDICATIONSERVICE,
243                             returnedClass);
244                     
245                         _setPropertyValue(
246                             instance,
247                             _PROPERTY_SYSTEMCREATIONCLASSNAME,
248                             PEGASUS_CLASSNAME_PG_COMPUTERSYSTEM.getString());
249                     
250 venkat.puvvada 1.1      _setPropertyValue(
251                             instance,
252                             _PROPERTY_SYSTEMNAME,
253                             System::getFullyQualifiedHostName());
254                     
255                          _setPropertyValue(
256                             instance,
257                             _PROPERTY_CREATIONCLASSNAME,
258                             PEGASUS_CLASSNAME_CIM_INDICATIONSERVICE.getString());
259                     
260                         _setPropertyValue(
261                             instance,
262                             _PROPERTY_NAME,
263                             String(PEGASUS_INSTANCEID_GLOBAL_PREFIX) + ":" + "IndicationService");
264                     
265                         _setPropertyValue(
266                             instance,
267                             _PROPERTY_ELEMENTNAME,
268                             String("IndicationService"));
269                     
270                         Array<Uint16> operationalStatus;
271 venkat.puvvada 1.1      operationalStatus.append(2);
272                         _setPropertyValue(
273                             instance,
274                             _PROPERTY_OPERATIONALSTATUS,
275                             operationalStatus);
276                     
277                         _setPropertyValue(
278                             instance,
279                             _PROPERTY_STARTED,
280                             CIMValue(Boolean(true)));
281                     
282                         _setPropertyValue(
283                             instance,
284                             _PROPERTY_DESCRIPTION,
285                             String("Pegasus Indication Service"));
286                     
287                         _setPropertyValue(
288                             instance,
289                             _PROPERTY_FILTERCREATIONENABLED,
290                             CIMValue(_PROPERTY_FILTERCREATIONENABLED_VALUE));
291                     
292 venkat.puvvada 1.1      _setPropertyValue(
293                             instance,
294                             _PROPERTY_SUBSCRIPTIONREMOVALACTION,
295                             CIMValue(_PROPERTY_SUBSCRIPTIONREMOVALACTION_VALUE));
296 venkat.puvvada 1.10  
297 venkat.puvvada 1.1      _setPropertyValue(
298                             instance,
299                             _PROPERTY_DELIVERYRETRYATTEMPTS,
300 venkat.puvvada 1.10         CIMValue(
301                                 Uint16(_getConfigValue("maxIndicationDeliveryRetryAttempts"))));
302 venkat.puvvada 1.1  
303 marek          1.7      _setIntervalPropertyValues(instance);
304 venkat.puvvada 1.1  
305 venkat.puvvada 1.6      _setPropertyValue(
306                             instance,
307                             _PROPERTY_ENABLEDSTATE,
308 ajay.rao       1.8          CIMValue(_enabledState));
309 venkat.puvvada 1.6  
310                         _setPropertyValue(
311                             instance,
312                             _PROPERTY_HEALTHSTATE,
313 ajay.rao       1.8          CIMValue(_healthState));
314 venkat.puvvada 1.6  
315 venkat.puvvada 1.1      CIMObjectPath path = instance.buildPath(returnedClass);
316                         path.setNameSpace(PEGASUS_NAMESPACENAME_INTEROP);
317                         instance.setPath(path);
318                         PEG_METHOD_EXIT();
319                     
320                         return instance;
321                     }
322                     
323                     CIMInstance IndicationServiceConfiguration::
324                         _getIndicationServiceCapabilitiesInstance(
325                             Boolean includeQualifiers,
326                             Boolean includeClassOrigin,
327                             const CIMPropertyList &propertyList)
328                     {
329                         PEG_METHOD_ENTER(TRC_INDICATION_SERVICE,
330                             "IndicationServiceConfiguration::"
331                                 "_getIndicationServiceCapabilitiesInstance");
332                     
333                         CIMInstance instance;
334                         CIMClass returnedClass;
335                     
336 venkat.puvvada 1.1      instance = _buildInstanceSkeleton(
337                             PEGASUS_NAMESPACENAME_INTEROP,
338                             PEGASUS_CLASSNAME_CIM_INDICATIONSERVICECAPABILITIES,
339                             returnedClass);
340                     
341                         _setPropertyValue(
342                             instance,
343                             _PROPERTY_INSTANCEID,
344                             String("CIM:PegasusIndicationServiceCapabilities"));
345                     
346                         _setPropertyValue(
347                             instance,
348                             _PROPERTY_CAPTION,
349                             String("IndicationService Capabilities"));
350                     
351                         _setPropertyValue(
352                             instance,
353                             _PROPERTY_DESCRIPTION,
354                             String("Pegasus Indication Service Capabilities"));
355                     
356                         _setPropertyValue(
357 venkat.puvvada 1.1          instance,
358                             _PROPERTY_ELEMENTNAME,
359                             String("Capabilities for IndicationService"));
360                     
361                         _setPropertyValue(
362                             instance,
363                             _PROPERTY_FILTERCREATIONENABLEDISSETTABLE,
364                             CIMValue(Boolean(false)));
365                     
366                         _setPropertyValue(
367                             instance,
368                             _PROPERTY_DELIVERYRETRYATTEMPTSISSETTABLE,
369                             CIMValue(Boolean(false)));
370                     
371                         _setPropertyValue(
372                             instance,
373                             _PROPERTY_DELIVERYRETRYINTERVALISSETTABLE,
374                             CIMValue(Boolean(false)));
375                     
376                         _setPropertyValue(
377                             instance,
378 venkat.puvvada 1.1          _PROPERTY_SUBSCRIPTIONREMOVALACTIONISSETTABLE,
379                             CIMValue(Boolean(false)));
380                     
381                         _setPropertyValue(
382                             instance,
383                             _PROPERTY_SUBSCRIPTIONREMOVALTIMEINTERVALISSETTABLE,
384                             CIMValue(Boolean(false)));
385                     
386                         CIMValue value(CIMTYPE_UINT32, false);
387                     
388                         _setPropertyValue(
389                             instance,
390                             _PROPERTY_MAXLISTENERDESTINATIONS,
391 kumpf          1.4          value);
392 venkat.puvvada 1.1  
393                         _setPropertyValue(
394                             instance,
395                             _PROPERTY_MAXACTIVESUBSCRIPTIONS,
396                             value);
397                     
398                         _setPropertyValue(
399                             instance,
400                             _PROPERTY_SUBSCRIPTIONSPERSISTED,
401                             CIMValue(Boolean(true)));
402                     
403                         CIMObjectPath path = instance.buildPath(returnedClass);
404                         path.setNameSpace(PEGASUS_NAMESPACENAME_INTEROP);
405                         instance.setPath(path);
406                         PEG_METHOD_EXIT();
407                         return instance;
408                     }
409                     
410                     PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2