(file) Return to SimpleResponseHandler.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ProviderManager2

  1 karl  1.7 //%2005////////////////////////////////////////////////////////////////////////
  2 schuur 1.1 //
  3 karl   1.5 // 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 schuur 1.1 // IBM Corp.; EMC Corporation, The Open Group.
  7 karl   1.5 // 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.7 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 10            // EMC Corporation; VERITAS Software Corporation; The Open Group.
 11 schuur 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 chip   1.8 //
 19 schuur 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: Chip Vincent (cvincent@us.ibm.com)
 31            //
 32 chip   1.8 // Modified By:
 33            //      Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
 34            //      Dave Rosckes (rosckes@us.ibm.com)
 35            //      Brian G. Campbell, EMC (campbell_brian@emc.com) - PEP140/phase2
 36 schuur 1.1 //
 37            //%/////////////////////////////////////////////////////////////////////////////
 38            
 39            #ifndef Pegasus_SimpleResponseHandler_h
 40            #define Pegasus_SimpleResponseHandler_h
 41            
 42            #include <Pegasus/Common/Config.h>
 43            #include <Pegasus/Common/ResponseHandler.h>
 44            #include <Pegasus/Common/Logger.h>
 45            
 46            #include <Pegasus/ProviderManager2/Linkage.h>
 47            
 48            PEGASUS_NAMESPACE_BEGIN
 49            
 50 kumpf  1.3 //
 51            // ValueResponseHandler (used internally to implement property operations)
 52            //
 53            class PEGASUS_PPM_LINKAGE ValueResponseHandler : virtual public ResponseHandler
 54            {
 55            public:
 56                virtual void deliver(const CIMValue & value) = 0;
 57            
 58                virtual void deliver(const Array<CIMValue> & values) = 0;
 59            };
 60            
 61            
 62            //
 63            // SimpleResponseHandler
 64            //
 65 schuur 1.1 class PEGASUS_PPM_LINKAGE SimpleResponseHandler : virtual public ResponseHandler
 66            {
 67            public:
 68                SimpleResponseHandler(void)
 69                {
 70                }
 71            
 72                virtual ~SimpleResponseHandler(void)
 73                {
 74                }
 75            
 76                virtual void processing(void)
 77                {
 78 chip   1.8         Logger::put(
 79                        Logger::STANDARD_LOG,
 80                        System::CIMSERVER,
 81                        Logger::TRACE,
 82                        "SimpleResponseHandler::processing()");
 83            
 84 schuur 1.1         // do nothing
 85                }
 86            
 87                virtual void complete(void)
 88                {
 89 chip   1.8         Logger::put(
 90                        Logger::STANDARD_LOG,
 91                        System::CIMSERVER,
 92                        Logger::TRACE,
 93                        "SimpleResponseHandler::complete()");
 94 schuur 1.1 
 95 chip   1.8         send(true);
 96 schuur 1.1     }
 97            
 98 chip   1.8     // return the number of objects in this handler
 99                virtual Uint32 size(void) const
100                {
101                    return(0);
102                }
103 brian.campbell 1.6 
104 chip           1.8     // clear any objects in this handler
105                        virtual void clear(void)
106                        {
107                        }
108 brian.campbell 1.6 
109 chip           1.8     // l10n
110 brian.campbell 1.6     ContentLanguages getLanguages(void);
111 schuur         1.1 
112 brian.campbell 1.6 protected:
113 chip           1.8 
114                        // send (deliver) asynchronously with restrictions
115                        virtual void send(Boolean isComplete);
116 schuur         1.1 
117                    };
118                    
119                    class PEGASUS_PPM_LINKAGE SimpleInstanceResponseHandler : public SimpleResponseHandler, public InstanceResponseHandler
120                    {
121                    public:
122                        SimpleInstanceResponseHandler(void)
123                        {
124                        }
125                    
126 chip           1.8     virtual void processing(void)
127                        {
128                            SimpleResponseHandler::processing();
129                        }
130                    
131                        virtual void complete(void)
132                        {
133                            SimpleResponseHandler::complete();
134                        }
135                    
136                        virtual Uint32 size(void) const
137                        {
138                            return(_objects.size());
139                        }
140                    
141                        virtual void clear(void)
142                        {
143                            _objects.clear();
144                        }
145 schuur         1.1 
146                        virtual void deliver(const CIMInstance & instance)
147                        {
148 chip           1.8         Logger::put(
149                                Logger::STANDARD_LOG,
150                                System::CIMSERVER,
151                                Logger::TRACE,
152                                "SimpleInstanceResponseHandler::deliver()");
153 schuur         1.1 
154                            _objects.append(instance);
155 chip           1.8 
156                            send(false);
157 schuur         1.1     }
158                    
159                        virtual void deliver(const Array<CIMInstance> & instances)
160                        {
161                            // call deliver for each object in the array
162                            for(Uint32 i = 0, n = instances.size(); i < n; i++)
163                            {
164                                deliver(instances[i]);
165                            }
166                        }
167                    
168                        const Array<CIMInstance> getObjects(void) const
169                        {
170 chip           1.8         return(_objects);
171 schuur         1.1     }
172                    
173                    private:
174                        Array<CIMInstance> _objects;
175                    
176                    };
177                    
178                    class PEGASUS_PPM_LINKAGE SimpleObjectPathResponseHandler : public SimpleResponseHandler, public ObjectPathResponseHandler
179                    {
180                    public:
181                        SimpleObjectPathResponseHandler(void)
182                        {
183                        }
184                    
185 chip           1.8     virtual void processing(void)
186                        {
187                            SimpleResponseHandler::processing();
188                        }
189                    
190                        virtual void complete(void)
191                        {
192                            SimpleResponseHandler::complete();
193                        }
194                    
195                        virtual Uint32 size(void) const
196                        {
197                            return(_objects.size());
198                        }
199                    
200                        virtual void clear(void)
201                        {
202                            _objects.clear();
203                        }
204 schuur         1.1 
205                        virtual void deliver(const CIMObjectPath & objectPath)
206                        {
207 chip           1.8         Logger::put(
208                                Logger::STANDARD_LOG,
209                                System::CIMSERVER,
210                                Logger::TRACE,
211                                "SimpleObjectPathResponseHandler::deliver()");
212                    
213 schuur         1.1         _objects.append(objectPath);
214 chip           1.8 
215                            send(false);
216 schuur         1.1     }
217                    
218                        virtual void deliver(const Array<CIMObjectPath> & objectPaths)
219                        {
220                            // call deliver for each object in the array
221                            for(Uint32 i = 0, n = objectPaths.size(); i < n; i++)
222                            {
223                                deliver(objectPaths[i]);
224                            }
225                        }
226                    
227                        const Array<CIMObjectPath> getObjects(void) const
228                        {
229 chip           1.8         return(_objects);
230 schuur         1.1     }
231                    
232                    private:
233                        Array<CIMObjectPath> _objects;
234                    
235                    };
236                    
237                    class PEGASUS_PPM_LINKAGE SimpleMethodResultResponseHandler : public SimpleResponseHandler, public MethodResultResponseHandler
238                    {
239                    public:
240                        SimpleMethodResultResponseHandler(void)
241                        {
242                        }
243                    
244 chip           1.8     virtual void processing(void)
245                        {
246                            SimpleResponseHandler::processing();
247                        }
248                    
249                        virtual void complete(void)
250                        {
251                            SimpleResponseHandler::complete();
252                        }
253                    
254                        // NOTE: this is the total size (count) of ALL parameters!
255                        virtual Uint32 size(void) const
256                        {
257                            return(_objects.size());
258                        }
259                    
260                        virtual void clear(void)
261                        {
262                            _objects.clear();
263                    
264                            _returnValue.clear();
265 chip           1.8     }
266 schuur         1.1 
267                        virtual void deliverParamValue(const CIMParamValue & outParamValue)
268                        {
269                            _objects.append(outParamValue);
270 chip           1.8 
271                            // async delivers not yet supported for parameters
272                            //send(false);
273 schuur         1.1     }
274                    
275                        virtual void deliverParamValue(const Array<CIMParamValue> & outParamValues)
276                        {
277                            // call deliver for each object in the array
278                            for(Uint32 i = 0, n = outParamValues.size(); i < n; i++)
279                            {
280                                deliverParamValue(outParamValues[i]);
281                            }
282                        }
283                    
284                        virtual void deliver(const CIMValue & returnValue)
285                        {
286 chip           1.8         Logger::put(
287                                Logger::STANDARD_LOG,
288                                System::CIMSERVER,
289                                Logger::TRACE,
290                                "SimpleMethodResultResponseHandler::deliver()");
291                    
292 schuur         1.1         _returnValue = returnValue;
293 chip           1.8 
294                            send(false);
295 schuur         1.1     }
296                    
297                        const Array<CIMParamValue> getParamValues(void) const
298                        {
299 chip           1.8         return(_objects);
300 schuur         1.1     }
301                    
302                        const CIMValue getReturnValue(void) const
303                        {
304 chip           1.8         return(_returnValue);
305 schuur         1.1     }
306                    
307                    private:
308                        Array<CIMParamValue> _objects;
309                    
310                        CIMValue _returnValue;
311                    
312                    };
313                    
314                    class PEGASUS_PPM_LINKAGE SimpleIndicationResponseHandler : public SimpleResponseHandler, public IndicationResponseHandler
315                    {
316                    public:
317                        SimpleIndicationResponseHandler(void)
318                        {
319                        }
320                    
321 chip           1.8     virtual void processing(void)
322                        {
323                            SimpleResponseHandler::processing();
324                        }
325                    
326                        virtual void complete(void)
327                        {
328                            SimpleResponseHandler::complete();
329                        }
330                    
331                        virtual Uint32 size(void) const
332                        {
333                            return(_objects.size());
334                        }
335                    
336                        virtual void clear(void)
337                        {
338                            _objects.clear();
339                        }
340 schuur         1.1 
341                        virtual void deliver(const CIMIndication & indication)
342                        {
343 chip           1.8         Logger::put(
344                                Logger::STANDARD_LOG,
345                                System::CIMSERVER,
346                                Logger::TRACE,
347                                "SimpleIndicationResponseHandler::deliver()");
348 schuur         1.1 
349                            _objects.append(indication);
350 chip           1.8 
351                            send(false);
352 schuur         1.1     }
353                    
354                        virtual void deliver(const Array<CIMIndication> & indications)
355                        {
356                            // call deliver for each object in the array
357                            for(Uint32 i = 0, n = indications.size(); i < n; i++)
358                            {
359                                deliver(indications[i]);
360                            }
361                        }
362                    
363                        virtual void deliver(
364                            const OperationContext & context,
365                            const CIMIndication & indication)
366                        {
367 chip           1.8         Logger::put(
368                                Logger::STANDARD_LOG,
369                                System::CIMSERVER,
370                                Logger::TRACE,
371                                "SimpleIndicationResponseHandler::deliver()");
372 schuur         1.1 
373                            _objects.append(indication);
374                        }
375                    
376                        virtual void deliver(
377                            const OperationContext & context,
378                            const Array<CIMIndication> & indications)
379                        {
380                            // call deliver for each object in the array
381                            for(Uint32 i = 0, n = indications.size(); i < n; i++)
382                            {
383                                deliver(indications[i]);
384                            }
385                        }
386                    
387                        const Array<CIMIndication> getObjects(void) const
388                        {
389 chip           1.8         return(_objects);
390 schuur         1.1     }
391                    
392 chip           1.8     // ATTN: why is this variable public?
393                    
394 schuur         1.1     CIMInstance _provider;
395                    
396                    private:
397                        Array<CIMIndication> _objects;
398                    
399                    };
400                    
401                    class PEGASUS_PPM_LINKAGE SimpleObjectResponseHandler : public SimpleResponseHandler, public ObjectResponseHandler
402                    {
403                    public:
404                        SimpleObjectResponseHandler(void)
405                        {
406                        }
407                    
408 chip           1.8     virtual void processing(void)
409                        {
410                            SimpleResponseHandler::processing();
411                        }
412                    
413                        virtual void complete(void)
414                        {
415                            SimpleResponseHandler::complete();
416                        }
417                    
418                        virtual Uint32 size(void) const
419                        {
420                            return(_objects.size());
421                        }
422                    
423                        virtual void clear(void)
424                        {
425                            _objects.clear();
426                        }
427 schuur         1.1 
428                        virtual void deliver(const CIMObject & object)
429                        {
430 chip           1.8         Logger::put(
431                                Logger::STANDARD_LOG,
432                                System::CIMSERVER,
433                                Logger::TRACE,
434                                "SimpleObjectResponseHandler::deliver()");
435 schuur         1.1 
436                            _objects.append(object);
437 chip           1.8 
438                            send(false);
439 schuur         1.1     }
440                    
441                        virtual void deliver(const Array<CIMObject> & objects)
442                        {
443                            // call deliver for each object in the array
444                            for(Uint32 i = 0, n = objects.size(); i < n; i++)
445                            {
446                                deliver(objects[i]);
447                            }
448                        }
449                    
450                        const Array<CIMObject> getObjects(void) const
451                        {
452 chip           1.8         return(_objects);
453 schuur         1.1     }
454                    
455                    private:
456                        Array<CIMObject> _objects;
457                    
458                    };
459                    
460                    class PEGASUS_PPM_LINKAGE SimpleInstance2ObjectResponseHandler : public SimpleResponseHandler, public InstanceResponseHandler
461                    {
462                    public:
463                        SimpleInstance2ObjectResponseHandler(void)
464                        {
465                        }
466                    
467 chip           1.8     virtual void processing(void)
468                        {
469                            SimpleResponseHandler::processing();
470                        }
471                    
472                        virtual void complete(void)
473                        {
474                            SimpleResponseHandler::complete();
475                        }
476                    
477                        virtual Uint32 size(void) const
478                        {
479                            return(_objects.size());
480                        }
481                    
482                        virtual void clear(void)
483                        {
484                            _objects.clear();
485                        }
486 schuur         1.1 
487                        virtual void deliver(const CIMInstance & object)
488                        {
489 chip           1.8         Logger::put(
490                                Logger::STANDARD_LOG,
491                                System::CIMSERVER,
492                                Logger::TRACE,
493                                "SimpleInstance2ObjectResponseHandler::deliver()");
494 schuur         1.1 
495                            _objects.append(CIMObject(object));
496 chip           1.8 
497                            // async delivers not yet supported
498                            //send(false);
499 schuur         1.1     }
500                    
501                        virtual void deliver(const Array<CIMInstance> & objects)
502                        {
503                            // call deliver for each object in the array
504                            for(Uint32 i = 0, n = objects.size(); i < n; i++)
505                            {
506                                deliver(objects[i]);
507                            }
508                        }
509                    
510                        const Array<CIMObject> getObjects(void) const
511                        {
512 chip           1.8         return(_objects);
513 schuur         1.1     }
514                    
515                    private:
516                        Array<CIMObject> _objects;
517                    
518                    };
519                    
520                    class PEGASUS_PPM_LINKAGE SimpleValueResponseHandler : public SimpleResponseHandler, public ValueResponseHandler
521                    {
522                    public:
523                        SimpleValueResponseHandler(void)
524                        {
525                        }
526                    
527 chip           1.8     virtual void processing(void)
528                        {
529                            SimpleResponseHandler::processing();
530                        }
531                    
532                        virtual void complete(void)
533                        {
534                            SimpleResponseHandler::complete();
535                        }
536                    
537                        virtual Uint32 size(void) const
538                        {
539                            return(_objects.size());
540                        }
541                    
542                        virtual void clear(void)
543                        {
544                            _objects.clear();
545                        }
546 schuur         1.1 
547                        virtual void deliver(const CIMValue & value)
548                        {
549 chip           1.8         Logger::put(
550                                Logger::STANDARD_LOG,
551                                System::CIMSERVER,
552                                Logger::TRACE,
553                                "SimpleValueResponseHandler::deliver()");
554 schuur         1.1 
555                            _objects.append(value);
556 chip           1.8 
557                            send(false);
558 schuur         1.1     }
559                    
560                        virtual void deliver(const Array<CIMValue> & values)
561                        {
562                            // call deliver for each object in the array
563                            for(Uint32 i = 0, n = values.size(); i < n; i++)
564                            {
565                                deliver(values[i]);
566                            }
567                        }
568                    
569                        const Array<CIMValue> getObjects(void) const
570                        {
571 chip           1.8         return(_objects);
572 schuur         1.1     }
573                    
574                    private:
575                        Array<CIMValue> _objects;
576                    
577                    };
578                    
579                    PEGASUS_NAMESPACE_END
580                    
581                    #endif
582 chip           1.8 

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2