MAK RTIspy API Documentation for HLA 1.3
objDdmMgr.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2001 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: objDdmMgr.h,v $ $Revision: 1.56 $ $State: Exp $
7 *********************************************************************/
8 
9 #ifndef objDdmMgr_H_
10 #define objDdmMgr_H_
11 #ifdef DDM
12 
15 
16 #include "objMgr.h"
17 #include "regionSetList.h"
18 #include "regMatchList.h"
19 #include "pubRegSet.h"
20 #include "subRegSet.h"
21 #include "remRegSet.h"
22 #include "objMgr.h"
23 #include "regSetPacket.h"
24 #include "objRegSetMsg.h"
25 
26 class DtRtiSaveFile;
27 class DtObjectClassInfo;
28 class DtSpaceInfo;
29 class DtPendingAssocRegion;
30 class DtRtiObject;
31 class DtDistributedDataDistMgr;
32 
33 class DtObjRegSetMsg;
34 class DtAssocPubRegMsg;
35 class DtAssocSubRegMsg;
36 
44 class DT_DLL_LRC DtObjectDataDistMgr : public DtObjectMgr
45 {
46 protected:
47 
49  DtObjectDataDistMgr(DtFederateMgr* fedMgr);
50 
51 public:
52 
54  virtual ~DtObjectDataDistMgr();
55 
56 private:
57 
59  DtObjectDataDistMgr(DtObjectDataDistMgr const& );
60 
62  DtObjectDataDistMgr& operator= (DtObjectDataDistMgr const& );
63 
64 public:
65 
67  virtual DtDistributedDataDistMgr* ddmMgr();
68  virtual DtDistributedDataDistMgr* ddmMgr() const;
69 
71  virtual void postJoinInit();
72 
74  virtual void resetDdm();
75 
77  virtual bool acceptObjectChannel(DtHandle channel);
78 
80  virtual bool acceptRequestChannel(DtHandle channel);
81 
83  virtual DtPubRegionSet* createPubRegionSet(DtRegionEntryList& regionList,
85 
92  virtual DtPubRegionSet* createPubRegionSet(
93  DtRegionRealization& region,
94  DtPubRegionSet* regionSet, bool regionIsAdded);
95 
101  virtual DtPubRegionSet* createPubRegionSet(
102  DtRegionEntryList const& regionList, DtPubRegionSet* regionSet,
103  bool regionAreAdded);
104 
106 
107 
108  virtual DtPubRegionSet* addPubRegion(DtRegionRealization& region,
109  DtPubRegionSet* regionSet);
110  virtual DtPubRegionSet* addPubRegionList(DtRegionEntryList const& regionList,
111  DtPubRegionSet* regionSet);
113 
117  virtual DtPubRegionSet* removePubRegion(DtRegionRealization& region,
118  DtPubRegionSet* regionSet);
119 
123  virtual DtPubRegionSet* removePubRegionList(
124  DtRegionEntryList const& regionList, DtPubRegionSet* regionSet);
125 
128  virtual DtPubRegionSet* getPubRegionSet(DtHandle regionSetHandle);
129 
132  virtual DtRemoteRegionSet* getRemotePubRegionSet(
133  DtHandle regionSetHandle);
134 
141  virtual DtSubRegionSet* createSubRegionSet(
142  DtRegionEntryList const& regionList, DtSubRegionSet* regionSet,
143  bool regionIsAdded);
144 
151  virtual DtSubRegionSet* createSubRegionSet(
152  DtRegionRealization& region, DtSubRegionSet* regionSet,
153  bool regionIsAdded);
154 
157  virtual DtSubRegionSet* addSubRegion(DtRegionRealization& region,
158  DtSubRegionSet* regionSet);
159 
162  virtual DtSubRegionSet* addSubRegionList(DtRegionEntryList const& regionList,
163  DtSubRegionSet* regionSet);
164 
168  virtual DtSubRegionSet* removeSubRegion(DtRegionRealization& region,
169  DtSubRegionSet* regionSet);
170 
174  virtual DtSubRegionSet* removeSubRegion(DtRegionEntryList const& regionList,
175  DtSubRegionSet* regionSet);
176 
179  virtual DtSubRegionSet* getSubRegionSet(DtHandle regionSetHandle);
180 
183  virtual DtRemoteRegionSet* getRemoteSubRegionSet(
184  DtHandle regionSetHandle);
185 
192  virtual DtSubRegionSet* createPasRegionSet(
193  DtRegionRealization& region, DtSubRegionSet* regionSet,
194  bool regionIsAdded);
195 
202  virtual DtSubRegionSet* createPasRegionSet(
203  DtRegionEntryList const& regionList, DtSubRegionSet* regionSet,
204  bool regionIsAdded);
205 
208  virtual DtSubRegionSet* addPasRegion(DtRegionRealization& region,
209  DtSubRegionSet* regionSet);
210 
213  virtual DtSubRegionSet* addPasRegion(
214  DtRegionEntryList const& regionList, DtSubRegionSet* regionSet);
215 
219  virtual DtSubRegionSet* removePasRegion(DtRegionRealization& region,
220  DtSubRegionSet* regionSet);
221 
225  virtual DtSubRegionSet* removePasRegion(DtRegionEntryList const& regionList,
226  DtSubRegionSet* regionSet);
227 
230  virtual DtSubRegionSet* getPasRegionSet(DtHandle regionSetHandle);
231 
233 
234  virtual DtPubRegionSet* defaultPubRegionSet();
235  virtual DtSubRegionSet* defaultSubRegionSet();
236  virtual DtSubRegionSet* defaultPasRegionSet();
237  virtual DtRemoteRegionSet* defaultRemotePubRegionSet();
238  virtual DtRemoteRegionSet* defaultRemoteSubRegionSet();
240 
243  virtual void registerAssociateRegionForUpdates(
244  DtRegionEntryListWithAttributes& regionList, DtRtiObject* object);
245 
248  virtual void registerAssociateRegionForUpdates(DtRtiObject& object,
249  DtAttributeHandleSet const& attributes, DtRegion& region);
250 
252  virtual void sendRegister(DtRtiObject* obj);
253 
255  virtual void resendRegister(DtRtiObject* obj);
256 
258  virtual void sendRegionSetMsg(DtObjRegSetType type,
259  const DtRegionSet &regionSet, DtUpdateType updateType=DtUpdateFederateObject);
260 
262  virtual void sendPendingRegister();
263 
265  virtual void sendAssocPublishRegionMsg(
266  DtHandle regSetHandleValue, DtObjectInstanceHandle objectHandleValue,
267  const char* objName, DtObjectClassHandle classHandleValue,
268  bool isRemovingAssoc, const DtAttributeHandleSet& attrSet,
270 
272  virtual void sendAssocSubscribeRegionMsg(
273  DtHandle regSetHandleValue, DtObjectClassHandle classHandleValue,
274  const DtAttributeHandleSet& attrSet);
275 
278  void collectPendingRegisterWithRegion(DtRtiObject& object);
279 
282  void collectPendingSubscribeWithRegion(DtObjectClassInfo& classDesc);
283 
285  virtual void deleteSubRegionSet(DtSubRegionSet* regionSet);
286 
288  virtual void deleteRegion(DtRegionRealization& region);
289 
291  virtual void processResign(const DtResignMsg& msg);
292  virtual void processDeleteRegion(DtRegionRealization& region);
293 
295  virtual void notifyAboutRegionModification(DtRegionRealization &region);
296 
298  virtual void processNotifyRegion(DtRegionRealization &region, bool newRegion);
299 
301  virtual void processRequest(const DtRequestMsg& update);
302 
304 #ifdef DtIFSPEC1516
306  const DtAttributeHandleSet& attrHandles,
307  rti1516::VariableLengthData const & tag,
308  DtRemoteRegionSet* remoteRegSet);
309 #elif defined(DtIFSPEC1516E)
311  const DtAttributeHandleSet& attrHandles,
312  rti1516e::VariableLengthData const & tag,
313  DtRemoteRegionSet* remoteRegSet);
314 #else
316  const DtAttributeHandleSet& attrHandles,
317  char const * tag,
318  DtRemoteRegionSet* remoteRegSet);
319 #endif
320 
323  DtObjectClassInfo* classDesc, DtHandle regSetHandle);
324 
326  virtual void postTick();
327 
330  virtual void remoteSubscribeRegion(
331  DtObjectClassHandle classHandle,
332  const DtAttributeHandleSet& attrs,
333  DtFederateHandle fedHandle,
334  DtHandle regionSetHandle);
335 
337  virtual void removeRemoteSubscribeRegion(
338  DtObjectClassHandle classHandle,
339  DtFederateHandle fedHandle,
340  DtHandle regionSetHandle,
341  const DtAttributeHandleSet& attrSet);
342 
345  virtual void processRemoteUnsubscribeRegion();
346 
349  virtual void processRemoteScopeChanges(DtRemoteRegionSet* regionSet);
350 
352 
353  virtual void processPubRegionSet(const DtObjRegSetMsg& msg);
354  virtual void processSubRegionSet(const DtObjRegSetMsg& msg);
355  virtual void processAssocPubReg(const DtAssocPubRegMsg& msg);
356  virtual void processAssocSubReg(const DtAssocSubRegMsg& msg);
358 
360  virtual bool save(DtRtiSaveFile& file);
361 
363  virtual void prepareToRestore();
364 
366  virtual bool restore( DtRtiSaveFile& file );
367 
368 public:
369 
371 
372  static void processAssocPubReg(const DtAssocPubRegMsg& msg, void* usr);
373  static void processAssocSubReg(const DtAssocSubRegMsg& msg, void* usr);
374  static void processRegionSet(const DtObjRegSetMsg& msg, void* usr);
376 
377 protected:
378 
380  virtual DtHandle uniqueRegionSetHandle();
381 
384  virtual void registerAssociateDistributedRegionForUpdates(DtRtiObject& object,
385  DtAttributeHandleSet const& attributes, DtDistributedRegion& region);
386 
387 #ifdef DtIFSPEC1516
388 
389  virtual void calculateRegionSet(
390  unsigned long channel, rti1516::RegionHandleSet & regionHandles);
391 #elif defined(DtIFSPEC1516E)
392 
393  virtual void calculateRegionSet(
394  unsigned long channel, rti1516e::RegionHandleSet & regionHandles);
395 #else
396  virtual void calculateRegionSet(
397  unsigned long channel, const DtAhvps& reflectSet);
398 #endif
399 
404  virtual void checkForRegionalSubscribe(DtObjectClassInfo& info);
405 
407  virtual void removeObjectAssociations(DtRtiObject& object);
408 
410  virtual void removeLocalObjectAssociations(DtRtiObject& object);
411 
413  virtual void removeRemoteObjectAssociations(DtRtiObject& object);
414 
416 
417  virtual void addPendingAssocPubRegAdd(DtPubRegionSet& regionSet,
418  DtRtiObject& object, DtAttributeHandle attrHandle);
419  virtual void addPendingAssocPubRegRemove(DtPubRegionSet& regionSet,
420  DtRtiObject& object, DtAttributeHandle attrHandle);
421  virtual void addPendingUnassocPubReg(DtPubRegionSet& regionSet,
422  DtRtiObject& object, DtAttributeHandle attrHandle);
423  virtual void processPendingAssocPubReg();
425 
427 
428  virtual void addPendingAssocSubRegAdd(DtSubRegionSet& regionSet,
429  DtObjectClassInfo& classDesc, DtAttributeHandle attrHandle);
430  virtual void addPendingAssocSubRegRemove(DtSubRegionSet& regionSet,
431  DtObjectClassInfo& classDesc, DtAttributeHandle attrHandle);
432  virtual void addPendingUnassocSubReg(DtSubRegionSet& regionSet,
433  DtObjectClassInfo& classDesc, DtAttributeHandle attrHandle,
434  DtSubRegionSet* pasRegionSet=0);
435  virtual void processPendingSubRegAssoc();
437 
439 
440  virtual void addPendingAssocPasRegAdd(DtSubRegionSet& regionSet,
441  DtObjectClassInfo& classDesc, DtAttributeHandle attrHandle);
442  virtual void addPendingAssocPasRegRemove(DtSubRegionSet& regionSet,
443  DtObjectClassInfo& classDesc, DtAttributeHandle attrHandle);
444  virtual void addPendingUnassocPasReg(DtSubRegionSet& regionSet,
445  DtObjectClassInfo& classDesc, DtAttributeHandle attrHandle,
446  DtSubRegionSet* subRegionSet=0);
447  virtual void processPendingPasRegAssoc();
449 
451 
452 
453 
454  virtual void collectPendingPubRegSet(DtObjectRegionSet* regionSet);
455  virtual void collectPendingSubRegSet(DtObjectRegionSet* regionSet);
456  virtual void collectPendingAssocPubReg(DtPubRegionSet& regionSet,
457  DtRtiObject& object, const DtAttributeHandleSet& attributes);
458  virtual void collectPendingAssocSubReg(DtSubRegionSet& regionSet,
459  DtObjectClassInfo& classDesc, const DtAttributeHandleSet& attributes);
460  virtual void processCollectedPubRegSet(
462  virtual void processCollectedAssocPubReg(
464  virtual void processCollectedSubRegSet();
465  virtual void processCollectedAssocSubReg();
467 
469  virtual void processAssocSubReg(DtRemoteRegionSet* regionSet,
470  DtObjectClassInfo* classDesc,
471  const DtAttributeHandleSet& attributes,
472  DtFederateHandle federateHandle);
473 
475  virtual void processAssocPubReg(
476  DtFederateHandle fedHandle,
477  DtRemoteRegionSet* regionSet,
478  DtObjectInstanceHandle objectHandle,
479  const char* objName,
480  DtObjectClassHandle classHandle,
481  const DtAttributeHandleSet& attributes,
482  bool isRemoveAssociation);
483 
487  virtual void evaluateScopeUpdates(DtRtiObject* object,
488  const DtAttributeHandleSet& removeAttrSet, bool invokeAdvisory);
489 
492  virtual void evaluateOutOfScopeUpdates(DtRtiObject* object,
493  const DtAttributeHandleSet& unSubAttrs, bool invokeAdvisory);
494 
501  virtual unsigned int evaluateMatchingAfterAdd(
502  DtRegionMatchList& matchList,
503  DtRegionMatchList& matchOverlapList,
504  DtLocalRegionSet& localRegionSet,
505  DtRemoteRegionSet& remoteRegionSet,
506  DtObjectClassInfo* classDesc,
507  const DtAttributeHandleSet& attributes,
508  bool localAdd);
509 
510 
514  virtual void evaluateMatchingLocalPubAfterAdd(
515  DtPubRegionSet& pubRegionSet,
516  DtObjectClassInfo* classDesc,
517  const DtAttributeHandleSet& attributes);
518 
522  virtual void evaluateMatchingRemotePubAfterAdd(DtRegionSetList& regSetList,
523  DtRemoteRegionSet& remotePubRegionSet,
524  DtObjectClassInfo* classDesc,
525  const DtAttributeHandleSet& attributes);
526 
530  virtual void evaluateMatchingLocalSubAfterAdd(
531  DtSubRegionSet& subRegionSet,
532  DtObjectClassInfo* classDesc,
533  const DtAttributeHandleSet& attributes,
534  std::set<DtObjectRegionSet*>& collectedJoins);
535 
539  virtual void evaluateMatchingRemoteSubAfterAdd(
540  DtRemoteRegionSet& remoteSubRegionSet,
541  DtObjectClassInfo* classDesc,
542  const DtAttributeHandleSet& attributes);
543 
548  virtual void evaluateMatchingAfterLocalRemove(DtRegionMatchList& matchList,
549  DtRegionMatchList& matchOverlapList, DtLocalRegionSet& regionSet,
550  DtObjectClassInfo& classDesc, const DtAttributeHandleSet& attributes,
551  std::set<DtObjectRegionSet*>* collectedDrops = 0);
552 
557  virtual void evaluateMatchingLocalPubAfterRemove(DtLocalRegionSet& regionSet,
558  DtObjectClassInfo& classDesc, const DtAttributeHandleSet& attributes);
559 
564  virtual void evaluateMatchingLocalSubAfterRemove(DtLocalRegionSet& regionSet,
565  DtObjectClassInfo& classDesc, const DtAttributeHandleSet& attributes,
566  std::set<DtObjectRegionSet*>& collectedDrops);
567 
570  virtual void evaluateMatchingAfterRemoteRemove(
571  DtRegionMatchList& matchList, DtRegionMatchList& matchOverlapList,
572  DtRemoteRegionSet& regionSet, DtObjectClassInfo& classDesc,
573  const DtAttributeHandleSet& attributes);
574 
577  virtual void evaluateMatchingRemotePubAfterRemove(
578  DtRemoteRegionSet& regionSet, DtObjectClassInfo& classDesc,
579  const DtAttributeHandleSet& attributes);
580 
583  virtual void evaluateMatchingRemoteSubAfterRemove(
584  DtRemoteRegionSet& regionSet, DtObjectClassInfo& classDesc,
585  const DtAttributeHandleSet& attributes);
586 
590  virtual void evaluateMatchingRemotePubForRemove(
591  DtRemoteRegionSet* regionSet, DtObjectInstanceHandle objectHandle,
592  DtObjectClassInfo* classDesc, bool isRemoveAssoc,
593  const DtAttributeHandleSet& attributes);
594 
598  virtual void evaluateMatchingRemoteSubForRemove(
599  DtFederateHandle federateHandle, DtRemoteRegionSet* regionSet,
600  DtObjectClassInfo* classDesc, const DtAttributeHandleSet& attributes);
601 
608  virtual void evaluateRegionSetOverlap(DtRegionSetList& evalList,
609  DtRegionMatchList& overlapList,
610  DtRegionMatchList& matchOverlapList,
611  DtObjectRegionSet& regionSet,
612  bool localEval,
613  std::set<DtRemoteRegionSet*>* overlapsAdded=0,
614  std::set<DtRemoteRegionSet*>* overlapsRemoved=0);
615 
623  virtual void evaluateRegionOverlap(DtRegionSetList& evalList,
624  DtRegionMatchList& overlapList,
625  DtRegionMatchList& matchOverlapList,
626  DtObjectRegionSet& regionSet, DtRegionRealization& region,
627  bool islocalEval,
628  std::set<DtRemoteRegionSet*>* overlapsAdded=0,
629  std::set<DtRemoteRegionSet*>* overlapsRemoved=0);
630 
633  virtual void discoverAssociatedObjects(std::set<DtRemoteRegionSet*> overlapsAdded);
634 
637  virtual void joinRegionSetGroups(std::set<DtRemoteRegionSet*> overlapsAdded);
638 
641  virtual void dropRegionSetGroups(std::set<DtRemoteRegionSet*> overlapsRemoved);
642 
644  virtual void addRemoteSubscribeRegion(DtRtiObject& object, DtRemoteRegionSet const& subRegSet);
645 
647  virtual void addRemoteSubscribeRegion(DtRtiObject& object, DtRemoteRegionSet const& subRegSet,
648  const DtAttributeHandleSet& attrs);
649 
651  virtual void removeRemoteSubscribeRegion(DtRtiObject& object, DtRemoteRegionSet const& subRegSet);
652 
654  virtual void removeRemoteSubscribeRegion(DtRtiObject& object, DtRemoteRegionSet const& subRegSet,
655  const DtAttributeHandleSet& attrs);
656 
657  // Walk through the object associations to the given region set and update
658  // the region subscriptions that have added and removed.
659  // Invoke advisories if applicable.
660  virtual void updateRemoteSubscribeRegion(DtPubRegionSet& regionSet,
661  std::set<DtRemoteRegionSet*> added, std::set<DtRemoteRegionSet*> removed);
662 
664 
665 
666  virtual void setAttrPubRegionSet(DtObjectInstanceHandle objectHandle,
667  DtAttributeHandle attrHandle, DtRemoteRegionSet* regSet);
668  virtual DtRemoteRegionSet* attrPubRegionSet(DtObjectInstanceHandle objectHandle,
669  DtAttributeHandle attrHandle);
671 
673  virtual void removeAttrPubRegionSet(DtObjectInstanceHandle objectHandle,
674  DtAttributeHandle attrHandle);
675 
677  virtual void removeAttrPubDefaultRegionSet(DtObjectInstanceHandle objectHandle,
678  DtAttributeHandle attrHandle);
679 
681  virtual void removeAttrPubDefaultRegionSet(DtObjectInstanceHandle objectHandle);
682 
684  virtual void removeAttrPubAllRegionSet(DtObjectInstanceHandle objectHandle,
685  DtAttributeHandle attrHandle);
686 
688 
689  virtual void addObjectDefaultByClass(DtRtiObject* object);
690  virtual void removeObjectDefaultByClass(DtRtiObject* object);
691  virtual MAKRti::DtHashList* objectDefaultByClass(DtObjectClassHandle classHandle);
693 
695  virtual void getDefaultPubRegionSetAttrList(
696  DtObjectInstanceHandle objectHandle, DtAttributeHandleSet& attrList);
697 
699 
700 
701  virtual void setAttrSubRegionSet(DtFederateHandle fedHandle,
702  DtObjectClassHandle classHandle, DtAttributeHandle attrHandle,
703  DtRemoteRegionSet* regSet);
704  virtual void removeAttrSubRegionSet(DtFederateHandle fedHandle,
705  DtObjectClassHandle classHandle, DtAttributeHandle attrHandle);
706  virtual DtRemoteRegionSet* attrSubRegionSet(DtFederateHandle fedHandle,
707  DtObjectClassHandle classHandle, DtAttributeHandle attrHandle);
709 
713  virtual void acquireAssociateRegionForUpdates(
714  DtObjectInstanceHandle theObject,
715  const DtAttributeHandleSet& theAttributes);
716 
721  virtual void unassociateRegionForDivested(DtRtiObject& object,
722  const DtAttributeHandleSet& divestedAttrs, bool atomic);
723 
725  virtual void destroyRegionLists();
726 
728  virtual void writeRegionSet( DtRtiSaveRegionSetTypes type,
729  DtRtiSaveFile& saveFile,
730  DtObjectRegionSet* regSet );
731 
734  virtual void restoreLocalRegSet(DtObjRegionSetPacket* packet,
735  DtObjectRegionSet* regSet, bool isDefaultRegionSet=false);
736 
739  virtual void restoreRemoteRegSet(DtObjRegionSetPacket* packet,
740  DtRemoteRegionSet* regSet, bool isDefaultRegionSet=false);
741 
742 protected:
743 
745 
746  DtPubRegionSet* myDefaultPubRegionSet;
747  DtSubRegionSet* myDefaultSubRegionSet;
748  DtSubRegionSet* myDefaultPasRegionSet;
749  DtRemoteRegionSet* myDefaultRemotePubRegionSet;
750  DtRemoteRegionSet* myDefaultRemoteSubRegionSet;
752 
754 
755  DtRegionSetList myLocalPublish;
756  DtRegionSetList myRemotePublish;
758 
760 
761  DtRegionMatchList myMatchPublish;
762  DtRegionMatchList myOverlapPublish;
763  DtRegionMatchList myMatchOverlapPub;
764  DtRegionSetList myLocalSubscribe;
765  DtRegionSetList myPassiveSubscribe;
766  DtRegionSetList myRemoteSubscribe;
767  DtRegionMatchList myMatchSubscribe;
768  DtRegionMatchList myOverlapSubscribe;
769  DtRegionMatchList myMatchOverlapSub;
771 
773  DtHandle myNextRegionSetHandle;
774 
776 
777  MAKRti::DtHashList myPendingPubRegAdd;
778  MAKRti::DtHashList myPendingPubRegRemove;
779  MAKRti::DtHashList myPendingPubRegUnassoc;
780  MAKRti::DtHashList myPendingSubRegAdd;
781  MAKRti::DtHashList myPendingSubRegRemove;
782  MAKRti::DtHashList myPendingSubRegUnassoc;
783  MAKRti::DtHashList myPendingPasRegAdd;
784  MAKRti::DtHashList myPendingPasRegRemove;
785  MAKRti::DtHashList myPendingPasRegUnassoc;
786  MAKRti::DtList myPendingPubRegSets;
787  MAKRti::DtList myPendingSubRegSets;
788  MAKRti::DtHashList myPendingPubRegAssocs;
789  MAKRti::DtHashList myPendingSubRegAssocs;
791 
793  MAKRti::DtHashlist myOldOnSet;
794 
796  MAKRti::DtHashList myRemoteObjectRegionSets;
797 
799  MAKRti::DtHashList myRemoteObjectDefaultAttrs;
800 
802  MAKRti::DtHashList myRemoteObjectDefaultByClass;
803 
805  MAKRti::DtHashList myRemoteClassRegionSets;
806 };
807 
808 #endif
809 #endif
810 
811 

Document ID: Generated on Tue May 7 16:26:47 EDT 2013 from SVN revision 126903
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)