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

  1 karl  1.6 //%2003////////////////////////////////////////////////////////////////////////
  2 mike  1.1 //
  3 karl  1.6 // 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           // IBM Corp.; EMC Corporation, The Open Group.
  7 mike  1.1 //
  8           // Permission is hereby granted, free of charge, to any person obtaining a copy
  9 chip  1.3 // of this software and associated documentation files (the "Software"), to
 10           // deal in the Software without restriction, including without limitation the
 11           // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 12 mike  1.1 // sell copies of the Software, and to permit persons to whom the Software is
 13           // furnished to do so, subject to the following conditions:
 14 kumpf 1.5 // 
 15 chip  1.3 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 16 mike  1.1 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 17           // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 18 chip  1.3 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 19           // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 20           // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 21 mike  1.1 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 22           // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 23           //
 24           //==============================================================================
 25           //
 26           // Author: Mike Brasher (mbrasher@bmc.com)
 27           //
 28 kumpf 1.7 // Modified By: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
 29 kumpf 1.10 //            : Yi Zhou, Hewlett-Packard Company (yi.zhou@hp.com)
 30 mike  1.1  //
 31            //%/////////////////////////////////////////////////////////////////////////////
 32            
 33 kumpf 1.7  #include <Pegasus/Common/AutoPtr.h>
 34 mike  1.1  #include "CIMMessage.h"
 35            
 36 mike  1.2  PEGASUS_USING_STD;
 37            
 38 mike  1.1  PEGASUS_NAMESPACE_BEGIN
 39            
 40 kumpf 1.7  void CIMResponseMessage::syncAttributes(CIMRequestMessage* request)
 41            {
 42                // Propagate request attributes to the response, as necessary
 43                setKey(request->getKey());
 44                setRouting(request->getRouting());
 45                setMask(request->getMask());
 46                setHttpMethod(request->getHttpMethod());
 47            }
 48            
 49            CIMResponseMessage* CIMGetClassRequestMessage::buildResponse()
 50            {
 51                CIMGetClassResponseMessage* response;
 52                response = new CIMGetClassResponseMessage(
 53                    messageId,
 54                    CIMException(),
 55                    queueIds.copyAndPop(),
 56                    CIMClass());
 57                AutoPtr<CIMGetClassResponseMessage> responsePtr(response);
 58            
 59                response->syncAttributes(this);
 60            
 61 kumpf 1.7      responsePtr.release();
 62                return response;
 63            }
 64            
 65            CIMResponseMessage* CIMGetInstanceRequestMessage::buildResponse()
 66            {
 67                CIMGetInstanceResponseMessage* response;
 68                response = new CIMGetInstanceResponseMessage(
 69                    messageId,
 70                    CIMException(),
 71                    queueIds.copyAndPop(),
 72                    CIMInstance());
 73                AutoPtr<CIMGetInstanceResponseMessage> responsePtr(response);
 74            
 75                response->syncAttributes(this);
 76            
 77                responsePtr.release();
 78                return response;
 79            }
 80            
 81            CIMResponseMessage* CIMExportIndicationRequestMessage::buildResponse()
 82 kumpf 1.7  {
 83                CIMExportIndicationResponseMessage* response;
 84                response = new CIMExportIndicationResponseMessage(
 85                    messageId,
 86                    CIMException(),
 87                    queueIds.copyAndPop());
 88                AutoPtr<CIMExportIndicationResponseMessage> responsePtr(response);
 89            
 90                response->syncAttributes(this);
 91            
 92                responsePtr.release();
 93                return response;
 94            }
 95            
 96            CIMResponseMessage* CIMDeleteClassRequestMessage::buildResponse()
 97            {
 98                CIMDeleteClassResponseMessage* response;
 99                response = new CIMDeleteClassResponseMessage(
100                    messageId,
101                    CIMException(),
102                    queueIds.copyAndPop());
103 kumpf 1.7      AutoPtr<CIMDeleteClassResponseMessage> responsePtr(response);
104            
105                response->syncAttributes(this);
106            
107                responsePtr.release();
108                return response;
109            }
110            
111            CIMResponseMessage* CIMDeleteInstanceRequestMessage::buildResponse()
112            {
113                CIMDeleteInstanceResponseMessage* response;
114                response = new CIMDeleteInstanceResponseMessage(
115                    messageId,
116                    CIMException(),
117                    queueIds.copyAndPop());
118                AutoPtr<CIMDeleteInstanceResponseMessage> responsePtr(response);
119            
120                response->syncAttributes(this);
121            
122                responsePtr.release();
123                return response;
124 kumpf 1.7  }
125            
126            CIMResponseMessage* CIMCreateClassRequestMessage::buildResponse()
127            {
128                CIMCreateClassResponseMessage* response;
129                response = new CIMCreateClassResponseMessage(
130                    messageId,
131                    CIMException(),
132                    queueIds.copyAndPop());
133                AutoPtr<CIMCreateClassResponseMessage> responsePtr(response);
134            
135                response->syncAttributes(this);
136            
137                responsePtr.release();
138                return response;
139            }
140            
141            CIMResponseMessage* CIMCreateInstanceRequestMessage::buildResponse()
142            {
143                CIMCreateInstanceResponseMessage* response;
144                response = new CIMCreateInstanceResponseMessage(
145 kumpf 1.7          messageId,
146                    CIMException(),
147                    queueIds.copyAndPop(),
148                    CIMObjectPath());
149                AutoPtr<CIMCreateInstanceResponseMessage> responsePtr(response);
150            
151                response->syncAttributes(this);
152            
153                responsePtr.release();
154                return response;
155            }
156            
157            CIMResponseMessage* CIMModifyClassRequestMessage::buildResponse()
158            {
159                CIMModifyClassResponseMessage* response;
160                response = new CIMModifyClassResponseMessage(
161                    messageId,
162                    CIMException(),
163                    queueIds.copyAndPop());
164                AutoPtr<CIMModifyClassResponseMessage> responsePtr(response);
165            
166 kumpf 1.7      response->syncAttributes(this);
167            
168                responsePtr.release();
169                return response;
170            }
171            
172            CIMResponseMessage* CIMModifyInstanceRequestMessage::buildResponse()
173            {
174                CIMModifyInstanceResponseMessage* response;
175                response = new CIMModifyInstanceResponseMessage(
176                    messageId,
177                    CIMException(),
178                    queueIds.copyAndPop());
179                AutoPtr<CIMModifyInstanceResponseMessage> responsePtr(response);
180            
181                response->syncAttributes(this);
182            
183                responsePtr.release();
184                return response;
185            }
186            
187 kumpf 1.7  CIMResponseMessage* CIMEnumerateClassesRequestMessage::buildResponse()
188            {
189                CIMEnumerateClassesResponseMessage* response;
190                response = new CIMEnumerateClassesResponseMessage(
191                    messageId,
192                    CIMException(),
193                    queueIds.copyAndPop(),
194                    Array<CIMClass>());
195                AutoPtr<CIMEnumerateClassesResponseMessage> responsePtr(response);
196            
197                response->syncAttributes(this);
198            
199                responsePtr.release();
200                return response;
201            }
202            
203            CIMResponseMessage* CIMEnumerateClassNamesRequestMessage::buildResponse()
204            {
205                CIMEnumerateClassNamesResponseMessage* response;
206                response = new CIMEnumerateClassNamesResponseMessage(
207                    messageId,
208 kumpf 1.7          CIMException(),
209                    queueIds.copyAndPop(),
210                    Array<CIMName>());
211                AutoPtr<CIMEnumerateClassNamesResponseMessage> responsePtr(response);
212            
213                response->syncAttributes(this);
214            
215                responsePtr.release();
216                return response;
217            }
218            
219            CIMResponseMessage* CIMEnumerateInstancesRequestMessage::buildResponse()
220            {
221                CIMEnumerateInstancesResponseMessage* response;
222                response = new CIMEnumerateInstancesResponseMessage(
223                    messageId,
224                    CIMException(),
225                    queueIds.copyAndPop(),
226                    Array<CIMInstance>());
227                AutoPtr<CIMEnumerateInstancesResponseMessage> responsePtr(response);
228            
229 kumpf 1.7      response->syncAttributes(this);
230            
231                responsePtr.release();
232                return response;
233            }
234            
235            CIMResponseMessage* CIMEnumerateInstanceNamesRequestMessage::buildResponse()
236            {
237                CIMEnumerateInstanceNamesResponseMessage* response;
238                response = new CIMEnumerateInstanceNamesResponseMessage(
239                    messageId,
240                    CIMException(),
241                    queueIds.copyAndPop(),
242                    Array<CIMObjectPath>());
243                AutoPtr<CIMEnumerateInstanceNamesResponseMessage> responsePtr(response);
244            
245                response->syncAttributes(this);
246            
247                responsePtr.release();
248                return response;
249            }
250 kumpf 1.7  
251            CIMResponseMessage* CIMExecQueryRequestMessage::buildResponse()
252            {
253                CIMExecQueryResponseMessage* response;
254                response = new CIMExecQueryResponseMessage(
255                    messageId,
256                    CIMException(),
257                    queueIds.copyAndPop(),
258                    Array<CIMObject>());
259                AutoPtr<CIMExecQueryResponseMessage> responsePtr(response);
260            
261                response->syncAttributes(this);
262            
263                responsePtr.release();
264                return response;
265            }
266            
267            CIMResponseMessage* CIMAssociatorsRequestMessage::buildResponse()
268            {
269                CIMAssociatorsResponseMessage* response;
270                response = new CIMAssociatorsResponseMessage(
271 kumpf 1.7          messageId,
272                    CIMException(),
273                    queueIds.copyAndPop(),
274                    Array<CIMObject>());
275                AutoPtr<CIMAssociatorsResponseMessage> responsePtr(response);
276            
277                response->syncAttributes(this);
278            
279                responsePtr.release();
280                return response;
281            }
282            
283            CIMResponseMessage* CIMAssociatorNamesRequestMessage::buildResponse()
284            {
285                CIMAssociatorNamesResponseMessage* response;
286                response = new CIMAssociatorNamesResponseMessage(
287                    messageId,
288                    CIMException(),
289                    queueIds.copyAndPop(),
290                    Array<CIMObjectPath>());
291                AutoPtr<CIMAssociatorNamesResponseMessage> responsePtr(response);
292 kumpf 1.7  
293                response->syncAttributes(this);
294            
295                responsePtr.release();
296                return response;
297            }
298            
299            CIMResponseMessage* CIMReferencesRequestMessage::buildResponse()
300            {
301                CIMReferencesResponseMessage* response;
302                response = new CIMReferencesResponseMessage(
303                    messageId,
304                    CIMException(),
305                    queueIds.copyAndPop(),
306                    Array<CIMObject>());
307                AutoPtr<CIMReferencesResponseMessage> responsePtr(response);
308            
309                response->syncAttributes(this);
310            
311                responsePtr.release();
312                return response;
313 kumpf 1.7  }
314            
315            CIMResponseMessage* CIMReferenceNamesRequestMessage::buildResponse()
316            {
317                CIMReferenceNamesResponseMessage* response;
318                response = new CIMReferenceNamesResponseMessage(
319                    messageId,
320                    CIMException(),
321                    queueIds.copyAndPop(),
322                    Array<CIMObjectPath>());
323                AutoPtr<CIMReferenceNamesResponseMessage> responsePtr(response);
324            
325                response->syncAttributes(this);
326            
327                responsePtr.release();
328                return response;
329            }
330            
331            CIMResponseMessage* CIMGetPropertyRequestMessage::buildResponse()
332            {
333                CIMGetPropertyResponseMessage* response;
334 kumpf 1.7      response = new CIMGetPropertyResponseMessage(
335                    messageId,
336                    CIMException(),
337                    queueIds.copyAndPop(),
338                    CIMValue());
339                AutoPtr<CIMGetPropertyResponseMessage> responsePtr(response);
340            
341                response->syncAttributes(this);
342            
343                responsePtr.release();
344                return response;
345            }
346            
347            CIMResponseMessage* CIMSetPropertyRequestMessage::buildResponse()
348            {
349                CIMSetPropertyResponseMessage* response;
350                response = new CIMSetPropertyResponseMessage(
351                    messageId,
352                    CIMException(),
353                    queueIds.copyAndPop());
354                AutoPtr<CIMSetPropertyResponseMessage> responsePtr(response);
355 kumpf 1.7  
356                response->syncAttributes(this);
357            
358                responsePtr.release();
359                return response;
360            }
361            
362            CIMResponseMessage* CIMGetQualifierRequestMessage::buildResponse()
363            {
364                CIMGetQualifierResponseMessage* response;
365                response = new CIMGetQualifierResponseMessage(
366                    messageId,
367                    CIMException(),
368                    queueIds.copyAndPop(),
369                    CIMQualifierDecl());
370                AutoPtr<CIMGetQualifierResponseMessage> responsePtr(response);
371            
372                response->syncAttributes(this);
373            
374                responsePtr.release();
375                return response;
376 kumpf 1.7  }
377            
378            CIMResponseMessage* CIMSetQualifierRequestMessage::buildResponse()
379            {
380                CIMSetQualifierResponseMessage* response;
381                response = new CIMSetQualifierResponseMessage(
382                    messageId,
383                    CIMException(),
384                    queueIds.copyAndPop());
385                AutoPtr<CIMSetQualifierResponseMessage> responsePtr(response);
386            
387                response->syncAttributes(this);
388            
389                responsePtr.release();
390                return response;
391            }
392            
393            CIMResponseMessage* CIMDeleteQualifierRequestMessage::buildResponse()
394            {
395                CIMDeleteQualifierResponseMessage* response;
396                response = new CIMDeleteQualifierResponseMessage(
397 kumpf 1.7          messageId,
398                    CIMException(),
399                    queueIds.copyAndPop());
400                AutoPtr<CIMDeleteQualifierResponseMessage> responsePtr(response);
401            
402                response->syncAttributes(this);
403            
404                responsePtr.release();
405                return response;
406            }
407            
408            CIMResponseMessage* CIMEnumerateQualifiersRequestMessage::buildResponse()
409            {
410                CIMEnumerateQualifiersResponseMessage* response;
411                response = new CIMEnumerateQualifiersResponseMessage(
412                    messageId,
413                    CIMException(),
414                    queueIds.copyAndPop(),
415                    Array<CIMQualifierDecl>());
416                AutoPtr<CIMEnumerateQualifiersResponseMessage> responsePtr(response);
417            
418 kumpf 1.7      response->syncAttributes(this);
419            
420                responsePtr.release();
421                return response;
422            }
423            
424            CIMResponseMessage* CIMInvokeMethodRequestMessage::buildResponse()
425            {
426                CIMInvokeMethodResponseMessage* response;
427                response = new CIMInvokeMethodResponseMessage(
428                    messageId,
429                    CIMException(),
430                    queueIds.copyAndPop(),
431                    CIMValue(),
432                    Array<CIMParamValue>(),
433                    methodName);
434                AutoPtr<CIMInvokeMethodResponseMessage> responsePtr(response);
435            
436                response->syncAttributes(this);
437            
438                responsePtr.release();
439 kumpf 1.7      return response;
440            }
441            
442            CIMResponseMessage* CIMProcessIndicationRequestMessage::buildResponse()
443            {
444                CIMProcessIndicationResponseMessage* response;
445                response = new CIMProcessIndicationResponseMessage(
446                    messageId,
447                    CIMException(),
448                    queueIds.copyAndPop());
449                AutoPtr<CIMProcessIndicationResponseMessage> responsePtr(response);
450            
451                response->syncAttributes(this);
452            
453                responsePtr.release();
454                return response;
455            }
456            
457            CIMResponseMessage* CIMEnableIndicationsRequestMessage::buildResponse()
458            {
459                CIMEnableIndicationsResponseMessage* response;
460 kumpf 1.7      response = new CIMEnableIndicationsResponseMessage(
461                    messageId,
462                    CIMException(),
463                    queueIds.copyAndPop());
464                AutoPtr<CIMEnableIndicationsResponseMessage> responsePtr(response);
465            
466                response->syncAttributes(this);
467            
468                responsePtr.release();
469                return response;
470            }
471            
472            CIMResponseMessage* CIMDisableIndicationsRequestMessage::buildResponse()
473            {
474                CIMDisableIndicationsResponseMessage* response;
475                response = new CIMDisableIndicationsResponseMessage(
476                    messageId,
477                    CIMException(),
478                    queueIds.copyAndPop());
479                AutoPtr<CIMDisableIndicationsResponseMessage> responsePtr(response);
480            
481 kumpf 1.7      response->syncAttributes(this);
482            
483                responsePtr.release();
484                return response;
485            }
486            
487            CIMResponseMessage* CIMNotifyProviderRegistrationRequestMessage::buildResponse()
488            {
489                CIMNotifyProviderRegistrationResponseMessage* response;
490                response = new CIMNotifyProviderRegistrationResponseMessage(
491                    messageId,
492                    CIMException(),
493                    queueIds.copyAndPop());
494                AutoPtr<CIMNotifyProviderRegistrationResponseMessage> responsePtr(response);
495            
496                response->syncAttributes(this);
497            
498                responsePtr.release();
499                return response;
500            }
501            
502 kumpf 1.7  CIMResponseMessage* CIMNotifyProviderTerminationRequestMessage::buildResponse()
503            {
504                CIMNotifyProviderTerminationResponseMessage* response;
505                response = new CIMNotifyProviderTerminationResponseMessage(
506                    messageId,
507                    CIMException(),
508                    queueIds.copyAndPop());
509                AutoPtr<CIMNotifyProviderTerminationResponseMessage> responsePtr(response);
510            
511                response->syncAttributes(this);
512            
513                responsePtr.release();
514                return response;
515            }
516            
517            CIMResponseMessage* CIMHandleIndicationRequestMessage::buildResponse()
518            {
519                CIMHandleIndicationResponseMessage* response;
520                response = new CIMHandleIndicationResponseMessage(
521                    messageId,
522                    CIMException(),
523 kumpf 1.7          queueIds.copyAndPop());
524                AutoPtr<CIMHandleIndicationResponseMessage> responsePtr(response);
525            
526                response->syncAttributes(this);
527            
528                responsePtr.release();
529                return response;
530            }
531            
532            CIMResponseMessage* CIMCreateSubscriptionRequestMessage::buildResponse()
533            {
534                CIMCreateSubscriptionResponseMessage* response;
535                response = new CIMCreateSubscriptionResponseMessage(
536                    messageId,
537                    CIMException(),
538                    queueIds.copyAndPop());
539                AutoPtr<CIMCreateSubscriptionResponseMessage> responsePtr(response);
540            
541                response->syncAttributes(this);
542            
543                responsePtr.release();
544 kumpf 1.7      return response;
545            }
546            
547            CIMResponseMessage* CIMModifySubscriptionRequestMessage::buildResponse()
548            {
549                CIMModifySubscriptionResponseMessage* response;
550                response = new CIMModifySubscriptionResponseMessage(
551                    messageId,
552                    CIMException(),
553                    queueIds.copyAndPop());
554                AutoPtr<CIMModifySubscriptionResponseMessage> responsePtr(response);
555            
556                response->syncAttributes(this);
557            
558                responsePtr.release();
559                return response;
560            }
561            
562            CIMResponseMessage* CIMDeleteSubscriptionRequestMessage::buildResponse()
563            {
564                CIMDeleteSubscriptionResponseMessage* response;
565 kumpf 1.7      response = new CIMDeleteSubscriptionResponseMessage(
566                    messageId,
567                    CIMException(),
568                    queueIds.copyAndPop());
569                AutoPtr<CIMDeleteSubscriptionResponseMessage> responsePtr(response);
570            
571                response->syncAttributes(this);
572            
573                responsePtr.release();
574                return response;
575            }
576            
577            CIMResponseMessage* CIMDisableModuleRequestMessage::buildResponse()
578            {
579                CIMDisableModuleResponseMessage* response;
580                response = new CIMDisableModuleResponseMessage(
581                    messageId,
582                    CIMException(),
583                    queueIds.copyAndPop(),
584                    Array<Uint16>());
585                AutoPtr<CIMDisableModuleResponseMessage> responsePtr(response);
586 kumpf 1.7  
587                response->syncAttributes(this);
588            
589                responsePtr.release();
590                return response;
591            }
592            
593            CIMResponseMessage* CIMEnableModuleRequestMessage::buildResponse()
594            {
595                CIMEnableModuleResponseMessage* response;
596                response = new CIMEnableModuleResponseMessage(
597                    messageId,
598                    CIMException(),
599                    queueIds.copyAndPop(),
600                    Array<Uint16>());
601                AutoPtr<CIMEnableModuleResponseMessage> responsePtr(response);
602            
603                response->syncAttributes(this);
604            
605                responsePtr.release();
606                return response;
607 kumpf 1.7  }
608            
609            CIMResponseMessage* CIMNotifyProviderEnableRequestMessage::buildResponse()
610            {
611                CIMNotifyProviderEnableResponseMessage* response;
612                response = new CIMNotifyProviderEnableResponseMessage(
613                    messageId,
614                    CIMException(),
615                    queueIds.copyAndPop());
616                AutoPtr<CIMNotifyProviderEnableResponseMessage> responsePtr(response);
617            
618                response->syncAttributes(this);
619            
620                responsePtr.release();
621                return response;
622            }
623            
624            CIMResponseMessage* CIMStopAllProvidersRequestMessage::buildResponse()
625            {
626                CIMStopAllProvidersResponseMessage* response;
627                response = new CIMStopAllProvidersResponseMessage(
628 kumpf 1.7          messageId,
629                    CIMException(),
630                    queueIds.copyAndPop());
631                AutoPtr<CIMStopAllProvidersResponseMessage> responsePtr(response);
632            
633                response->syncAttributes(this);
634            
635                responsePtr.release();
636                return response;
637            }
638            
639            CIMResponseMessage* CIMInitializeProviderRequestMessage::buildResponse()
640            {
641                CIMInitializeProviderResponseMessage* response;
642                response = new CIMInitializeProviderResponseMessage(
643                    messageId,
644                    CIMException(),
645                    queueIds.copyAndPop());
646                AutoPtr<CIMInitializeProviderResponseMessage> responsePtr(response);
647            
648                response->syncAttributes(this);
649 kumpf 1.7  
650                responsePtr.release();
651                return response;
652            }
653            
654 kumpf 1.9  CIMResponseMessage* CIMInitializeProviderAgentRequestMessage::buildResponse()
655            {
656                CIMInitializeProviderAgentResponseMessage* response;
657                response = new CIMInitializeProviderAgentResponseMessage(
658                    messageId,
659                    CIMException(),
660                    queueIds.copyAndPop());
661                AutoPtr<CIMInitializeProviderAgentResponseMessage> responsePtr(response);
662            
663                response->syncAttributes(this);
664            
665                responsePtr.release();
666                return response;
667            }
668            
669 kumpf 1.10 CIMResponseMessage* CIMNotifyConfigChangeRequestMessage::buildResponse()
670            {
671                CIMNotifyConfigChangeResponseMessage* response;
672                response = new CIMNotifyConfigChangeResponseMessage(
673                    messageId,
674                    CIMException(),
675                    queueIds.copyAndPop());
676                AutoPtr<CIMNotifyConfigChangeResponseMessage> responsePtr(response);
677            
678                response->syncAttributes(this);
679            
680                responsePtr.release();
681                return response;
682            }
683            
684 mike  1.1  PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2