VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
organizationView.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
11 
12 #pragma once
13 
17 #include <vlutil/vlList.h>
18 #include <vlutil/vlHashlist.h>
19 #include <vl/globalObjectDesignator.h>
20 #include <vlpi/disEnums.h>
21 #include <vector>
22 #include <list>
24 
25 #include <boost/unordered_map.hpp>
26 
27 class DtVrfObjectManager;
29 class DtVrfObject;
30 class DtEntityType;
33 class DtSimMessage;
35 
42 {
43 protected:
47  DtOrganizationView& operator=(const DtOrganizationView& orig);
48 public:
49 
50  typedef boost::unordered_map<DtUUID, DtOrganizationManagerNode*> UUIDMap;
51  typedef boost::unordered_map<int, DtOrganizationManagerNode*> ForceMap;
52 
57 
59  virtual ~DtOrganizationView();
60 
61  virtual bool init();
62 
65 
66  virtual DtOrganizationManagerNode* lookupNode(const DtUUID&) const;
67 
69  virtual bool removeNode(const DtUUID&);
70 
73  virtual bool isSubordinateOfTopLevel(const DtUUID&) const;
74 
76  virtual const DtUUID& superior(const DtUUID&) const;
77 
79  virtual DtVrfObject* superiorVrfObject(const DtUUID&) const;
80 
82  virtual bool isSubordinateOf(const DtUUID& subordinate,
83  const DtUUID& superior) const;
85 
88 
90  virtual DtOrganizationManagerNode* addEntity(DtVrfObject *vrfObject);
91 
93  virtual void removeEntity(DtVrfObject *vrfObject);
94 
96  virtual void updateAggregate(DtVrfObject *vrfObject);
97 
99  virtual void updateEntity(DtVrfObject *vrfObject);
101 
107  virtual DtOrgViewManagedObjectListConstPtr getList(
108  const DtUUID& aggregate,
109  const DtVrfObjectPredicate& predicate =
111  bool reevaluateFlag = false, DtTime evaluationPeriod = 0.) const;
112 
115 
118  virtual DtOrganizationManagerNode* locateSuperiorNodeForGlobalId(
119  const DtGlobalObjectDesignator& globalId) const;
120 
122  virtual bool isLocal(DtOrganizationManagerNode* node) const;
123 
125  virtual void printHierarchy() const;
126 
128  virtual void printNode(DtOrganizationManagerNode* node,
129  int indentLevel = 0) const;
130 
131  virtual DtVrfObjectManager* objectManager();
132 
135  virtual DtSharedVrfObjectReference topLevelObjectForForce(const DtForceType& force);
136 
138  virtual DtOrganizationManagerNode* topLevelNodeForForce(DtForceType force);
139 
141  virtual const UUIDMap& nodes() const;
142 
143  static bool isTopLevelEntity(const DtEntityType & objectType);
144 
147 
148  static bool isOrganizedAggregate(DtVrfObject *vrfObject);
151  static bool isOrganizedEntity(DtVrfObject *vrfObject);
152 
154 
155  static void vrfObjectAddedCallback(DtVrfObject *vrfObject, void* usr);
156  static void vrfObjectAboutToBeRemovedCallback(DtVrfObject *vrfObject,
157  void* usr);
158 
162  virtual void addNodeAddedCallback(
163  DtUUIDCallbackFunction fcn, void* userData);
164  virtual void removeNodeAddedCallback(
165  DtUUIDCallbackFunction fcn, void* userData);
167 
171  virtual void addNodeRemovedCallback(
172  DtUUIDCallbackFunction fcn, void* userData);
173  virtual void removeNodeRemovedCallback(
174  DtUUIDCallbackFunction fcn, void* userData);
176 
179  virtual void objectUUIDChanged(const DtUUID& oldUUID, const DtUUID& newUUID);
180 
181 protected:
182  virtual void processVrfObjectAdded(DtVrfObject *vrfObject);
183 
186  virtual void processVrfObjectAboutToBeRemoved(DtVrfObject *vrfObject);
187 
189  virtual bool shouldBeAdded(DtVrfObject *vrfObject) const;
190 
193  virtual void findAndConnectNodeParent(DtOrganizationManagerNode* node);
194 
197  virtual void disconnectNodeParent(DtOrganizationManagerNode* node);
198 
202  virtual void findAndConnectNodeChildren(DtOrganizationManagerNode* node);
203 
205  virtual void disconnectNodeChildren(DtOrganizationManagerNode* node);
206 
210  virtual void connectNodeToTopLevel(DtOrganizationManagerNode* node,
211  bool allowCreation = true);
212 
216  virtual bool networkStateIsDifferentFromLocalState(
217  const DtOrganizationManagerNode& node) const;
218 
221  virtual void invokeNodeAddedCallbacks(const DtUUID&) const;
222 
225  virtual void invokeNodeRemovedCallbacks(const DtUUID&) const;
226 
227 protected:
229 
232 
235 
236  typedef std::list<DtUUIDCallbackInfo> DtUUIDCallbackInfoList;
237 
240 
242 };

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)