MAK RTIspy API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ballController1516.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2010 MaK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: .h,v $ $Revision: 1.2 $ $State: Exp $
7 *******************************************************************************/
8 
9 #ifndef BallController1516_H_
10 #define BallController1516_H_
11 
12 #include "ballData.h"
13 #include "ballController.h"
14 #include <RTI/RTI1516.h>
15 
17 class ObjectParams1516;
18 
19 // Class that updates owned balls and processes updates on
20 // other balls for 1516 federates
22 {
23 public:
24 
25  BallController1516(BallMap* data, DdmRegionMap* regionData);
26  virtual ~BallController1516();
27 
28  // Creates (if not already created) and joins the given federation.
29  // Returns success indicator. federateName is not used in 1516.
30  virtual bool createAndJoinFederation(const std::wstring& federation,
31  const std::wstring& federateType,
32  const std::wstring& federateName = std::wstring(),
33  bool includeInterExt = false);
34 
35  // Resigns from and attempts to destroy the current federation.
36  // Returns success indicator.
37  virtual bool resignAndDestroyFederation();
38 
39  // Subscribes to the ball class and all its attributes. Must already have
40  // created and joined the federation. Returns success indicator.
41  virtual bool subscribe();
42 
43  // Unsubscribes to the ball class and all its attributes. Must already have
44  // created and joined the federation. Returns success indicator.
45  virtual bool unsubscribe();
46 
47  // Deletes the ball with the given ID
48  virtual void deleteBall(const std::wstring id);
49 
50  // Attempts to acquire the ball with the given ID
51  virtual void acquireBall(const std::wstring id);
52 
53  // Attempts to divest the owned ball with the given ID
54  virtual void divestBall(const std::wstring id);
55 
56  // Adds a new DDM subscription region
57  virtual bool subscribeWithRegion(int xLowerBound, int yLowerBound,
58  int xUpperBound, int yUpperBound);
59 
60  // Unsubscribes from the current DDM regions. If resubscribeWithoutRegion is
61  // set, automatically resubscribes without regions.
62  virtual bool unsubscribeWithRegions(bool resubscribeWithoutRegion);
63 
64  // Process a denial for a new ball name
65  void nameReservationFailed(const std::wstring name);
66 
67  // Process an approval for a new ball name
68  void nameReservationSucceeded(const std::wstring name);
69 
70  // Process discovery of a new ball
71  void ballDiscovered(ObjectParams1516* objParams);
72 
73  // Process removal of another federate's ball
74  void ballRemoved(rti1516::ObjectInstanceHandle handle);
75 
76  // Process the movement of the ball into a visible area
77  void ballVisible(rti1516::ObjectInstanceHandle handle);
78 
79  // Process the movement of the ball out of a visible area
80  void ballNotVisible(rti1516::ObjectInstanceHandle handle);
81 
82  // Process update of an existing ball
83  void ballUpdated(rti1516::ObjectInstanceHandle handle,
84  const rti1516::AttributeHandleValueMap& attrVals);
85 
86  // Tries to release ownership of the requested object
87  void releaseOwnership(rti1516::ObjectInstanceHandle theObject,
88  rti1516::AttributeHandleSet const & attributes);
89 
90  // Takes control of the ball which the federate has successfully acquired
91  // ownership of
92  void ownershipAcquired(rti1516::ObjectInstanceHandle theObject,
93  rti1516::AttributeHandleSet const & attributes);
94 
95  // Tries to assume ownership of the object being divested
96  void assumeOwnership(rti1516::ObjectInstanceHandle theObject,
97  rti1516::AttributeHandleSet const & attributes);
98 
99  // Confirms that the object is divested
100  void confirmDivestiture(rti1516::ObjectInstanceHandle theObject,
101  rti1516::AttributeHandleSet const & attributes);
102 
103  // Sets the field dimensions
104  virtual void setDimensions(int minX, int minY, int maxX, int maxY);
105 
106  // Returns the federate ID (based on the federate handle)
107  virtual const std::wstring& federateId() const;
108 
109  // Returns the federate type
110  virtual const std::wstring& federateType() const;
111 
112  // Returns the federate name
113  virtual const std::wstring& federateName() const;
114 
115  // Returns the federation name
116  virtual const std::wstring& federationName() const;
117 
118  // Returns false. Federate name is not supported in 1516.
119  virtual bool isFederateNameSupported() const;
120 
121  // Returns false. The interaction FOM module extension is not supported
122  // in 1516.
123  virtual bool isInteractionExtensionSupported() const;
124 
125 protected:
126 
127  // Sends updates on all owned balls to other federates in the federation
128  virtual void sendUpdates();
129 
130  // Receives updates on balls from other federates in the federation
131  virtual void receiveUpdates();
132 
133  // Request the RTI to create the a new ball
134  virtual void requestNewBall(Ball* ball, const std::wstring name);
135 
136  // Loads the AttributeHandleValueMap with the data from the given ball
137  void setAttributesForBall(rti1516::AttributeHandleValueMap& attrVals,
138  const Ball* ball);
139 
140  // Loads the Ball with the data from the given attributes
141  void setBallFromAttributes(Ball* ball,
142  const rti1516::AttributeHandleValueMap& attrVals);
143 
144  // Subscribes to the default region
146 
147  // Unsubscribes from the default region. Based on input parameter, either
148  // deletes the discovered balls or marks them as out of scope.
149  void unsubscribeFromDefaultRegion(bool deleteDiscoveredBalls);
150 
151  // Deletes known balls. Can delete owned, not owned, or both.
152  virtual void deleteKnownBalls(bool deleteOwned, bool deleteOthers);
153 
154  // Marks all balls this federate does not own as out of scope
155  void markBallsOutOfScope();
156 
157  // Creates a publication region for the given ball and sets ball's object
158  // parameters with the new region handle.
159  bool createPublicationRegion(Ball* ball);
160 
161  // Constructs a user supplied tag for the given ball object parameters.
162  // Not really relevant to federate operations.
163  rti1516::VariableLengthData constructTag(const Ball* ball) const;
164 
165 private:
166 
167  // No default constructor
169 
170 protected:
171 
174 
175  std::auto_ptr < rti1516::RTIambassador > myRtiAmbassador;
177 
180  std::wstring myFederateType;
181  std::wstring myFederationName;
182 
184 
187 
195  rti1516::AttributeHandleSet myAllBallAttrs;
199 
200  static const std::wstring theFddFile;
201  static const std::wstring theBallClassName;
202  static const std::wstring theColorAttrName;
203  static const std::wstring theSizeAttrName;
204  static const std::wstring theXAttrName;
205  static const std::wstring theYAttrName;
206  static const std::wstring theSpeedAttrName;
207  static const std::wstring theDirectionAttrName;
208  static const std::wstring thePrivToDeleteAttrName;
209  static const std::wstring theXDimName;
210  static const std::wstring theYDimName;
211 };
212 
213 #endif
rti1516::VariableLengthData constructTag(const Ball *ball) const
void setAttributesForBall(rti1516::AttributeHandleValueMap &attrVals, const Ball *ball)
std::wstring myFederateHandleString
Definition: ballController1516.h:179
virtual bool resignAndDestroyFederation()
virtual const std::wstring & federationName() const
BallMap myPendingBalls
Definition: ballController1516.h:173
Definition: ballController1516.h:21
static const std::wstring theFddFile
Definition: ballController1516.h:200
static const std::wstring theBallClassName
Definition: ballController1516.h:201
virtual void sendUpdates()
Definition: ballData.h:47
Definition: hlaBounceFedAmb13.h:23
static const std::wstring theXAttrName
Definition: ballController1516.h:204
virtual bool subscribe()
static const std::wstring theYAttrName
Definition: ballController1516.h:205
void confirmDivestiture(rti1516::ObjectInstanceHandle theObject, rti1516::AttributeHandleSet const &attributes)
Definition: objParams1516.h:14
rti1516::DimensionHandle myXDim
Definition: ballController1516.h:197
virtual void receiveUpdates()
virtual void requestNewBall(Ball *ball, const std::wstring name)
std::auto_ptr< rti1516::RTIambassador > myRtiAmbassador
Definition: ballController1516.h:175
void ballNotVisible(rti1516::ObjectInstanceHandle handle)
virtual void acquireBall(const std::wstring id)
rti1516::DimensionHandle myYDim
Definition: ballController1516.h:198
virtual bool isInteractionExtensionSupported() const
void nameReservationFailed(const std::wstring name)
void nameReservationSucceeded(const std::wstring name)
virtual bool unsubscribe()
static const std::wstring theSizeAttrName
Definition: ballController1516.h:203
bool createPublicationRegion(Ball *ball)
virtual void divestBall(const std::wstring id)
BallMap myUnnamedBalls
Definition: ballController1516.h:172
rti1516::AttributeHandle myColorAttr
Definition: ballController1516.h:189
virtual ~BallController1516()
virtual void deleteBall(const std::wstring id)
rti1516::ObjectClassHandle myBallClass
Definition: ballController1516.h:188
rti1516::AttributeHandle myYAttr
Definition: ballController1516.h:192
void setBallFromAttributes(Ball *ball, const rti1516::AttributeHandleValueMap &attrVals)
std::map< std::wstring, Ball * > BallMap
Definition: ballData.h:118
virtual bool subscribeWithRegion(int xLowerBound, int yLowerBound, int xUpperBound, int yUpperBound)
static const std::wstring theXDimName
Definition: ballController1516.h:209
rti1516::AttributeHandleSet myAllBallAttrs
Definition: ballController1516.h:195
rti1516::AttributeHandle myXAttr
Definition: ballController1516.h:191
virtual bool unsubscribeWithRegions(bool resubscribeWithoutRegion)
virtual bool createAndJoinFederation(const std::wstring &federation, const std::wstring &federateType, const std::wstring &federateName=std::wstring(), bool includeInterExt=false)
void assumeOwnership(rti1516::ObjectInstanceHandle theObject, rti1516::AttributeHandleSet const &attributes)
virtual const std::wstring & federateName() const
Handle DimensionHandle
Definition: RTItypes13.h:118
rti1516::AttributeHandle myDirectionAttr
Definition: ballController1516.h:194
void ballRemoved(rti1516::ObjectInstanceHandle handle)
void releaseOwnership(rti1516::ObjectInstanceHandle theObject, rti1516::AttributeHandleSet const &attributes)
void ballUpdated(rti1516::ObjectInstanceHandle handle, const rti1516::AttributeHandleValueMap &attrVals)
rti1516::AttributeHandle mySizeAttr
Definition: ballController1516.h:190
Definition: ballController.h:21
virtual const std::wstring & federateType() const
std::wstring myFederationName
Definition: ballController1516.h:181
void unsubscribeFromDefaultRegion(bool deleteDiscoveredBalls)
void subscribeToDefaultRegion()
void ownershipAcquired(rti1516::ObjectInstanceHandle theObject, rti1516::AttributeHandleSet const &attributes)
virtual bool isFederateNameSupported() const
ULong FederateHandle
Definition: RTItypes13.h:120
int myDdmXRangeConv
Definition: ballController1516.h:185
void ballDiscovered(ObjectParams1516 *objParams)
bool myIsSubscribedToDefaultRegion
Definition: ballController1516.h:183
std::wstring myFederateType
Definition: ballController1516.h:180
int myDdmYRangeConv
Definition: ballController1516.h:186
void markBallsOutOfScope()
HlaBounceFederateAmbassador * myFederateAmbassador
Definition: ballController1516.h:176
std::map< std::wstring, DdmRegion * > DdmRegionMap
Definition: regionData.h:59
static const std::wstring thePrivToDeleteAttrName
Definition: ballController1516.h:208
static const std::wstring theSpeedAttrName
Definition: ballController1516.h:206
virtual void setDimensions(int minX, int minY, int maxX, int maxY)
rti1516::AttributeHandle mySpeedAttr
Definition: ballController1516.h:193
ULong ObjectClassHandle
Definition: RTItypes13.h:104
virtual void deleteKnownBalls(bool deleteOwned, bool deleteOthers)
rti1516::FederateHandle myFederateHandle
Definition: ballController1516.h:178
void ballVisible(rti1516::ObjectInstanceHandle handle)
virtual const std::wstring & federateId() const
Handle AttributeHandle
Definition: RTItypes13.h:112
static const std::wstring theColorAttrName
Definition: ballController1516.h:202
rti1516::AttributeHandle myPrivToDeleteAttr
Definition: ballController1516.h:196
static const std::wstring theDirectionAttrName
Definition: ballController1516.h:207
static const std::wstring theYDimName
Definition: ballController1516.h:210

Document ID: Generated on Thu May 11 15:55:32 EDT 2023 from SVN revision 254743
Copyright © 2005-2020 MAK Technologies Inc. All Rights Reserved (www.mak.com)