ReplicaNet and RNLobby  1
DataBlock_NData.h
1 /* START_LICENSE_HEADER
2 
3 Copyright (C) 2000 Martin Piper, original design and program code
4 Copyright (C) 2001 Replica Software
5 
6 This program file is copyright (C) Replica Software and can only be used under license.
7 For more information visit: http://www.replicanet.com/
8 Or email: info@replicanet.com
9 
10 END_LICENSE_HEADER */
11 #include "RNPlatform/Inc/MemoryTracking.h"
12 #ifndef __DATABLOCK_NDATA_H__
13 #define __DATABLOCK_NDATA_H__
14 
15 #include "RNReplicaNet/Inc/DataBlock.h"
16 #include "RNPlatform/Inc/RegistryManagerMap.h"
17 
18 namespace RNReplicaNet
19 {
20 
25 class DataBlock_NData : public DataBlock
26 {
27 public:
28  RN_CLASS_MINIMAL_RTTI();
33 
37  virtual ~DataBlock_NData();
38 
39  virtual void Poll(DataBlockReason *reason,const bool discardOlderIncluded = false,const unsigned int discardOrder = 0);
40 
41  virtual void ParseMessage(MessageHelper *message);
42 
49  static DataBlock_NData *Register(void *const data,const int size);
50 
56  void RegisterInClassPointer(void *const data,const int size)
57  {
58  mData = data;
59  mSize = size;
60  }
61 
67  void SetDefaultData(const void *data);
68 
69  bool IsAttached(void *data);
70 
71  void SetEndianTest(const bool test = true);
72 
73  bool GetEndianTest(void) const;
74 
75  virtual void OwnerChanged(const int sessionID);
76 
77 protected: // User defined DataBlocks have access to these variables.
78  void FreeSessionBlocks(void);
79  void *mData;
80  int mSize;
81 
83  {
84  SessionBlock_NData(int datasize);
85 
86  virtual ~SessionBlock_NData();
87 
88  unsigned int mDiscardOrder;
89  void *mTestData;
90 
91  // Forced updates
92  // This works off local time, not network time
93  SysTimeType mLastUpdateSentLocalTime;
94  int mNumForcedUpdates;
95  };
96 
98 
99  void *mDefaultData;
100  bool mDisableEndian;
101 };
102 
103 } // namespace RNReplicaNet
104 
105 /* _RO_DO_REGISTERBLOCK_NDATA_VAR macro starts here */
106 #define _RO_DO_REGISTERBLOCK_NDATA_VAR(x) \
107  {\
108  RNReplicaNet::DataBlock_NData *datablock = 0; \
109  datablock = RNReplicaNet::DataBlock_NData::Register(&(basepoint->x),sizeof(basepoint->x)); \
110  _RO_DO_SETDATABLOCKVARIABLENAME(x);
111 /* _RO_DO_REGISTERBLOCK_NDATA_VAR macro ends here */
112 
113 /* _RO_DO_REGISTERBLOCK_NDATA_VARAT macro starts here */
114 #define _RO_DO_REGISTERBLOCK_NDATA_VARAT(x) \
115  {\
116  RNReplicaNet::DataBlock_NData *datablock = 0; \
117  datablock = RNReplicaNet::DataBlock_NData::Register((basepoint->x),sizeof(basepoint->x)); \
118  _RO_DO_SETDATABLOCKVARIABLENAME(x);
119 /* _RO_DO_REGISTERBLOCK_NDATA_VARAT macro ends here */
120 
121 /* _RO_DO_REGISTERBLOCK_NDATA_DISABLEENDIANTEST macro starts here */
122 #define _RO_DO_REGISTERBLOCK_NDATA_DISABLEENDIANTEST() \
123  datablock->SetEndianTest(false);
124 /* _RO_DO_REGISTERBLOCK_NDATA_DISABLEENDIANTEST macro ends here */
125 
126 
127 #endif
Definition: DataBlock.h:357
virtual void Poll(DataBlockReason *reason, const bool discardOlderIncluded=false, const unsigned int discardOrder=0)
static DataBlock_NData * Register(void *const data, const int size)
Definition: MessageHelper.h:35
Definition: DataBlock_NData.h:25
Definition: RegistryManagerMap.h:25
virtual void ParseMessage(MessageHelper *message)
void RegisterInClassPointer(void *const data, const int size)
Definition: DataBlock_NData.h:56
virtual void OwnerChanged(const int sessionID)
Definition: DataBlock.h:47
void SetDefaultData(const void *data)