(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.9.2.1 #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.9.2.1 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.9.2.1                 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.9.2.1             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.9.2.1  
297 venkat.puvvada 1.1         _setPropertyValue(
298                                instance,
299                                _PROPERTY_DELIVERYRETRYATTEMPTS,
300 venkat.puvvada 1.9.2.1         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