- Timestamp:
- May 19, 2009, 9:35:10 PM (16 years ago)
- Location:
- code/branches/netp3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/netp3
- Property svn:mergeinfo changed
/code/branches/netp2 (added) merged: 2835-2836,2861,2937-2938,2940-2941,2943-2945,2947-2949,2951,2953,2964-2965,2974-2976
- Property svn:mergeinfo changed
-
code/branches/netp3/src/network/synchronisable/SynchronisableVariable.h
r2896 r2990 21 21 * 22 22 * Author: 23 * Oliver Scheuss , (C) 200823 * Oliver Scheuss 24 24 * Co-authors: 25 25 * ... … … 35 35 #include <string> 36 36 #include <cassert> 37 #include "util/Math.h" 37 #include "util/Serialise.h" 38 #include "core/Core.h" 39 #include "core/CoreIncludes.h" 38 40 #include "network/synchronisable/NetworkCallback.h" 39 41 #include "network/synchronisable/NetworkCallbackManager.h" … … 55 57 { 56 58 public: 57 virtual voidgetData(uint8_t*& mem, uint8_t mode)=0;59 virtual uint32_t getData(uint8_t*& mem, uint8_t mode)=0; 58 60 virtual void putData(uint8_t*& mem, uint8_t mode, bool forceCallback = false)=0; 59 61 virtual uint32_t getSize(uint8_t mode)=0; … … 74 76 75 77 virtual inline uint8_t getMode(){ return mode_; } 76 virtual inline voidgetData(uint8_t*& mem, uint8_t mode);78 virtual inline uint32_t getData(uint8_t*& mem, uint8_t mode); 77 79 virtual inline void putData(uint8_t*& mem, uint8_t mode, bool forceCallback = false); 78 80 virtual inline uint32_t getSize(uint8_t mode); 79 81 virtual inline void* getReference(){ return (void *)&this->variable_; } 80 82 protected: 81 82 void setAndIncrease(uint8_t*& mem);83 void getAndIncrease(uint8_t*& mem);84 83 // inline bool checkEquality(uint8_t* mem); 84 // inline void loadAndIncrease(uint8_t*& mem); 85 // inline void saveAndIncrease(uint8_t*& mem); 86 // inline uint32_t returnSize(); 85 87 86 88 T& variable_; … … 97 99 98 100 virtual inline uint8_t getMode(){ return 0x3; } //this basically is a hack ^^ 99 virtual voidgetData(uint8_t*& mem, uint8_t mode);101 virtual inline uint32_t getData(uint8_t*& mem, uint8_t mode); 100 102 virtual void putData(uint8_t*& mem, uint8_t mode, bool forceCallback = false); 101 virtual uint32_t getSize(uint8_t mode);103 virtual inline uint32_t getSize(uint8_t mode); 102 104 private: 103 105 T varBuffer_; … … 119 121 } 120 122 121 template <class T> voidSynchronisableVariable<T>::getData(uint8_t*& mem, uint8_t mode)123 template <class T> inline uint32_t SynchronisableVariable<T>::getData(uint8_t*& mem, uint8_t mode) 122 124 { 123 125 if ( state_ == this->mode_ ) 124 getAndIncrease( mem ); 126 { 127 saveAndIncrease( this->variable_, mem ); 128 return returnSize( this->variable_ ); 129 } 130 else 131 return 0; 125 132 // mem += SynchronisableVariable<T>::getSize(); 126 133 } … … 135 142 if ( this->callback_ != 0 ) 136 143 { 137 if( forceCallback || !checkEquality( mem ) )144 if( forceCallback || !checkEquality( this->variable_, mem ) ) 138 145 callback = true; 139 146 } 140 147 // write the data 141 setAndIncrease( mem ); 142 // mem += SynchronisableVariable<T>::getSize(); 148 loadAndIncrease( this->variable_, mem ); 143 149 // now do a callback if neccessary 144 150 if ( callback ) 145 151 NetworkCallbackManager::triggerCallback( this->callback_ ); 146 //this->callback_->call(); 147 } 148 149 template <class T> uint32_t SynchronisableVariable<T>::getSize(uint8_t mode) 152 } 153 154 template <class T> inline uint32_t SynchronisableVariable<T>::getSize(uint8_t mode) 150 155 { 151 156 if ( mode == this->mode_ ) 152 return returnSize( );157 return returnSize( this->variable_ ); 153 158 else 154 159 return 0; 155 160 } 156 161 157 template <> _NetworkExport uint32_t SynchronisableVariable<const bool>::returnSize();158 template <> _NetworkExport void SynchronisableVariable<const bool>:: setAndIncrease(uint8_t*& mem);159 template <> _NetworkExport void SynchronisableVariable<const bool>:: getAndIncrease(uint8_t*& mem);162 /*template <> _NetworkExport uint32_t SynchronisableVariable<const bool>::returnSize(); 163 template <> _NetworkExport void SynchronisableVariable<const bool>::loadAndIncrease(uint8_t*& mem); 164 template <> _NetworkExport void SynchronisableVariable<const bool>::saveAndIncrease(uint8_t*& mem); 160 165 template <> _NetworkExport bool SynchronisableVariable<const bool>::checkEquality(uint8_t* mem); 161 166 template <> _NetworkExport uint32_t SynchronisableVariable<const unsigned char>::returnSize(); 162 template <> _NetworkExport void SynchronisableVariable<const unsigned char>:: setAndIncrease(uint8_t*& mem);163 template <> _NetworkExport void SynchronisableVariable<const unsigned char>:: getAndIncrease(uint8_t*& mem);167 template <> _NetworkExport void SynchronisableVariable<const unsigned char>::loadAndIncrease(uint8_t*& mem); 168 template <> _NetworkExport void SynchronisableVariable<const unsigned char>::saveAndIncrease(uint8_t*& mem); 164 169 template <> _NetworkExport bool SynchronisableVariable<const unsigned char>::checkEquality(uint8_t* mem); 165 170 template <> _NetworkExport uint32_t SynchronisableVariable<const short>::returnSize(); 166 template <> _NetworkExport void SynchronisableVariable<const short>:: setAndIncrease(uint8_t*& mem);167 template <> _NetworkExport void SynchronisableVariable<const short>:: getAndIncrease(uint8_t*& mem);171 template <> _NetworkExport void SynchronisableVariable<const short>::loadAndIncrease(uint8_t*& mem); 172 template <> _NetworkExport void SynchronisableVariable<const short>::saveAndIncrease(uint8_t*& mem); 168 173 template <> _NetworkExport bool SynchronisableVariable<const short>::checkEquality(uint8_t* mem); 169 174 template <> _NetworkExport uint32_t SynchronisableVariable<const unsigned short>::returnSize(); 170 template <> _NetworkExport void SynchronisableVariable<const unsigned short>:: setAndIncrease(uint8_t*& mem);171 template <> _NetworkExport void SynchronisableVariable<const unsigned short>:: getAndIncrease(uint8_t*& mem);175 template <> _NetworkExport void SynchronisableVariable<const unsigned short>::loadAndIncrease(uint8_t*& mem); 176 template <> _NetworkExport void SynchronisableVariable<const unsigned short>::saveAndIncrease(uint8_t*& mem); 172 177 template <> _NetworkExport bool SynchronisableVariable<const unsigned short>::checkEquality(uint8_t* mem); 173 178 template <> _NetworkExport uint32_t SynchronisableVariable<const int>::returnSize(); 174 template <> _NetworkExport void SynchronisableVariable<const int>:: setAndIncrease(uint8_t*& mem);175 template <> _NetworkExport void SynchronisableVariable<const int>:: getAndIncrease(uint8_t*& mem);179 template <> _NetworkExport void SynchronisableVariable<const int>::loadAndIncrease(uint8_t*& mem); 180 template <> _NetworkExport void SynchronisableVariable<const int>::saveAndIncrease(uint8_t*& mem); 176 181 template <> _NetworkExport bool SynchronisableVariable<const int>::checkEquality(uint8_t* mem); 177 182 template <> _NetworkExport uint32_t SynchronisableVariable<const unsigned int>::returnSize(); 178 template <> _NetworkExport void SynchronisableVariable<const unsigned int>:: setAndIncrease(uint8_t*& mem);179 template <> _NetworkExport void SynchronisableVariable<const unsigned int>:: getAndIncrease(uint8_t*& mem);183 template <> _NetworkExport void SynchronisableVariable<const unsigned int>::loadAndIncrease(uint8_t*& mem); 184 template <> _NetworkExport void SynchronisableVariable<const unsigned int>::saveAndIncrease(uint8_t*& mem); 180 185 template <> _NetworkExport bool SynchronisableVariable<const unsigned int>::checkEquality(uint8_t* mem); 181 186 template <> _NetworkExport uint32_t SynchronisableVariable<const long>::returnSize(); 182 template <> _NetworkExport void SynchronisableVariable<const long>:: setAndIncrease(uint8_t*& mem);183 template <> _NetworkExport void SynchronisableVariable<const long>:: getAndIncrease(uint8_t*& mem);187 template <> _NetworkExport void SynchronisableVariable<const long>::loadAndIncrease(uint8_t*& mem); 188 template <> _NetworkExport void SynchronisableVariable<const long>::saveAndIncrease(uint8_t*& mem); 184 189 template <> _NetworkExport bool SynchronisableVariable<const long>::checkEquality(uint8_t* mem); 185 190 template <> _NetworkExport uint32_t SynchronisableVariable<const unsigned long>::returnSize(); 186 template <> _NetworkExport void SynchronisableVariable<const unsigned long>:: setAndIncrease(uint8_t*& mem);187 template <> _NetworkExport void SynchronisableVariable<const unsigned long>:: getAndIncrease(uint8_t*& mem);191 template <> _NetworkExport void SynchronisableVariable<const unsigned long>::loadAndIncrease(uint8_t*& mem); 192 template <> _NetworkExport void SynchronisableVariable<const unsigned long>::saveAndIncrease(uint8_t*& mem); 188 193 template <> _NetworkExport bool SynchronisableVariable<const unsigned long>::checkEquality(uint8_t* mem); 189 194 template <> _NetworkExport uint32_t SynchronisableVariable<const long long>::returnSize(); 190 template <> _NetworkExport void SynchronisableVariable<const long long>:: setAndIncrease(uint8_t*& mem);191 template <> _NetworkExport void SynchronisableVariable<const long long>:: getAndIncrease(uint8_t*& mem);195 template <> _NetworkExport void SynchronisableVariable<const long long>::loadAndIncrease(uint8_t*& mem); 196 template <> _NetworkExport void SynchronisableVariable<const long long>::saveAndIncrease(uint8_t*& mem); 192 197 template <> _NetworkExport bool SynchronisableVariable<const long long>::checkEquality(uint8_t* mem); 193 198 template <> _NetworkExport uint32_t SynchronisableVariable<const unsigned long long>::returnSize(); 194 template <> _NetworkExport void SynchronisableVariable<const unsigned long long>:: setAndIncrease(uint8_t*& mem);195 template <> _NetworkExport void SynchronisableVariable<const unsigned long long>:: getAndIncrease(uint8_t*& mem);199 template <> _NetworkExport void SynchronisableVariable<const unsigned long long>::loadAndIncrease(uint8_t*& mem); 200 template <> _NetworkExport void SynchronisableVariable<const unsigned long long>::saveAndIncrease(uint8_t*& mem); 196 201 template <> _NetworkExport bool SynchronisableVariable<const unsigned long long>::checkEquality(uint8_t* mem); 197 202 template <> _NetworkExport uint32_t SynchronisableVariable<const float>::returnSize(); 198 template <> _NetworkExport void SynchronisableVariable<const float>:: setAndIncrease(uint8_t*& mem);199 template <> _NetworkExport void SynchronisableVariable<const float>:: getAndIncrease(uint8_t*& mem);203 template <> _NetworkExport void SynchronisableVariable<const float>::loadAndIncrease(uint8_t*& mem); 204 template <> _NetworkExport void SynchronisableVariable<const float>::saveAndIncrease(uint8_t*& mem); 200 205 template <> _NetworkExport bool SynchronisableVariable<const float>::checkEquality(uint8_t* mem); 201 206 template <> _NetworkExport uint32_t SynchronisableVariable<const double>::returnSize(); 202 template <> _NetworkExport void SynchronisableVariable<const double>:: setAndIncrease(uint8_t*& mem);203 template <> _NetworkExport void SynchronisableVariable<const double>:: getAndIncrease(uint8_t*& mem);207 template <> _NetworkExport void SynchronisableVariable<const double>::loadAndIncrease(uint8_t*& mem); 208 template <> _NetworkExport void SynchronisableVariable<const double>::saveAndIncrease(uint8_t*& mem); 204 209 template <> _NetworkExport bool SynchronisableVariable<const double>::checkEquality(uint8_t* mem); 205 210 template <> _NetworkExport uint32_t SynchronisableVariable<const long double>::returnSize(); 206 template <> _NetworkExport void SynchronisableVariable<const long double>:: setAndIncrease(uint8_t*& mem);207 template <> _NetworkExport void SynchronisableVariable<const long double>:: getAndIncrease(uint8_t*& mem);211 template <> _NetworkExport void SynchronisableVariable<const long double>::loadAndIncrease(uint8_t*& mem); 212 template <> _NetworkExport void SynchronisableVariable<const long double>::saveAndIncrease(uint8_t*& mem); 208 213 template <> _NetworkExport bool SynchronisableVariable<const long double>::checkEquality(uint8_t* mem); 209 214 template <> _NetworkExport uint32_t SynchronisableVariable<const std::string>::returnSize(); 210 template <> _NetworkExport void SynchronisableVariable<const std::string>:: setAndIncrease(uint8_t*& mem);211 template <> _NetworkExport void SynchronisableVariable<const std::string>:: getAndIncrease(uint8_t*& mem);215 template <> _NetworkExport void SynchronisableVariable<const std::string>::loadAndIncrease(uint8_t*& mem); 216 template <> _NetworkExport void SynchronisableVariable<const std::string>::saveAndIncrease(uint8_t*& mem); 212 217 template <> _NetworkExport bool SynchronisableVariable<const std::string>::checkEquality(uint8_t* mem); 213 218 template <> _NetworkExport uint32_t SynchronisableVariable<const Degree>::returnSize(); 214 template <> _NetworkExport void SynchronisableVariable<const Degree>:: setAndIncrease(uint8_t*& mem);215 template <> _NetworkExport void SynchronisableVariable<const Degree>:: getAndIncrease(uint8_t*& mem);216 template <> _NetworkExport bool SynchronisableVariable<const Degree>::checkEquality(uint8_t* mem); 219 template <> _NetworkExport void SynchronisableVariable<const Degree>::loadAndIncrease(uint8_t*& mem); 220 template <> _NetworkExport void SynchronisableVariable<const Degree>::saveAndIncrease(uint8_t*& mem); 221 template <> _NetworkExport bool SynchronisableVariable<const Degree>::checkEquality(uint8_t* mem);*/ 217 222 218 223 … … 229 234 } 230 235 231 template <class T> voidSynchronisableVariableBidirectional<T>::getData(uint8_t*& mem, uint8_t mode)236 template <class T> uint32_t SynchronisableVariableBidirectional<T>::getData(uint8_t*& mem, uint8_t mode) 232 237 { 233 238 if ( this->mode_ == mode ) … … 243 248 mem += sizeof(this->varReference_); 244 249 // now write the content 245 SynchronisableVariable<T>::getAndIncrease(mem );250 saveAndIncrease( this->variable_, mem ); 246 251 // mem += SynchronisableVariable<T>::getSize(); 252 return SynchronisableVariableBidirectional::getSize(mode); 247 253 } 248 254 … … 260 266 else{ 261 267 // apply data 262 mem += sizeof(varReference_); 263 if ( SynchronisableVariableBidirectional<T>::checkEquality( mem )==true ) 268 if ( checkEquality( this->variable_, mem+sizeof(varReference_) )==true ) 264 269 { 265 mem += SynchronisableVariable<T>::getSize( mode );270 mem += getSize( mode ); 266 271 return; 267 272 } 268 273 else 269 274 { 275 mem += sizeof(varReference_); 270 276 memcpy((void*)&this->varBuffer_, &this->variable_, sizeof(T)); 271 277 if ( this->callback_ != 0 ) … … 285 291 this->varReference_ = *static_cast<uint8_t*>(mem); 286 292 mem += sizeof(varReference_); 287 if ( SynchronisableVariable<T>::checkEquality(mem ) == false )293 if ( checkEquality( this->variable_, mem ) == false ) 288 294 { 289 295 // value changed so remark for callback … … 294 300 } 295 301 // now write the data 296 SynchronisableVariable<T>::setAndIncrease(mem);302 loadAndIncrease(this->variable_, mem); 297 303 // now do a callback if neccessary 298 304 if ( callback ) … … 301 307 } 302 308 303 template <class T> uint32_t SynchronisableVariableBidirectional<T>::getSize(uint8_t mode)304 { 305 return SynchronisableVariable<T>::returnSize() + sizeof(varReference_);309 template <class T> inline uint32_t SynchronisableVariableBidirectional<T>::getSize(uint8_t mode) 310 { 311 return returnSize( this->variable_ ) + sizeof(varReference_); 306 312 } 307 313 … … 309 315 } 310 316 317 //#include "network/synchronisable/SynchronisableVariableSpecialisations.h" 311 318 312 319 #endif
Note: See TracChangeset
for help on using the changeset viewer.