Changeset 2990 for code/branches/netp3/src/network/synchronisable
- Timestamp:
- May 19, 2009, 9:35:10 PM (16 years ago)
- Location:
- code/branches/netp3
- Files:
-
- 7 edited
- 1 copied
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/NetworkCallback.h
- Property svn:mergeinfo changed (with no actual effect on merging)
-
code/branches/netp3/src/network/synchronisable/NetworkCallbackManager.cc
r2662 r2990 32 32 33 33 namespace orxonox{ 34 34 35 35 std::set<NetworkCallbackBase*> NetworkCallbackManager::callbackSet_; 36 36 std::queue<NetworkCallbackBase*> NetworkCallbackManager::triggeredCallbacks_; … … 60 60 while( triggeredCallbacks_.empty()==false ) 61 61 { 62 triggeredCallbacks_.front()->call(); 62 //make sure callback hasn't been deleted before 63 if ( callbackSet_.find(triggeredCallbacks_.front()) != callbackSet_.end() ) 64 triggeredCallbacks_.front()->call(); 63 65 triggeredCallbacks_.pop(); 64 66 } -
code/branches/netp3/src/network/synchronisable/Synchronisable.cc
- Property svn:mergeinfo changed
/code/branches/netp2/src/network/synchronisable/Synchronisable.cc (added) merged: 2836
r2911 r2990 66 66 objectID=OBJECTID_UNKNOWN; 67 67 classID = static_cast<uint32_t>(-1); 68 68 69 // set dataSize to 0 70 this->dataSize_ = 0; 69 71 // set standard priority 70 72 this->setPriority( priority::normal ); … … 96 98 // delete callback function objects 97 99 if(!Identifier::isCreatingHierarchy()){ 98 for(std:: list<SynchronisableVariableBase*>::iterator it = syncList.begin(); it!=syncList.end(); it++)100 for(std::vector<SynchronisableVariableBase*>::iterator it = syncList.begin(); it!=syncList.end(); it++) 99 101 delete (*it); 100 102 if (this->objectMode_ != 0x0 && (Host::running() && Host::isServer())) … … 236 238 * @return true: if !doSync or if everything was successfully saved 237 239 */ 238 boolSynchronisable::getData(uint8_t*& mem, int32_t id, uint8_t mode){240 uint32_t Synchronisable::getData(uint8_t*& mem, int32_t id, uint8_t mode){ 239 241 if(mode==0x0) 240 242 mode=state_; 241 243 //if this tick is we dont synchronise, then abort now 242 244 if(!doSync(id, mode)) 243 return true;245 return 0; 244 246 uint32_t tempsize = 0; 245 247 if (this->classID==0) … … 250 252 251 253 assert(this->classID==this->getIdentifier()->getNetworkID()); 252 std::list<SynchronisableVariableBase*>::iterator i; 253 uint32_t size; 254 size=getSize(id, mode); 254 std::vector<SynchronisableVariableBase*>::iterator i; 255 255 256 256 // start copy header 257 257 SynchronisableHeader header(mem); 258 header.setDataSize( size ); 258 mem += SynchronisableHeader::getSize(); 259 // end copy header 260 261 262 COUT(5) << "Synchronisable getting data from objectID: " << objectID << " classID: " << classID << std::endl; 263 // copy to location 264 for(i=syncList.begin(); i!=syncList.end(); ++i){ 265 tempsize += (*i)->getData( mem, mode ); 266 //tempsize += (*i)->getSize( mode ); 267 } 268 269 tempsize += SynchronisableHeader::getSize(); 259 270 header.setObjectID( this->objectID ); 260 271 header.setCreatorID( this->creatorID ); 261 272 header.setClassID( this->classID ); 262 273 header.setDataAvailable( true ); 263 tempsize += SynchronisableHeader::getSize(); 264 mem += SynchronisableHeader::getSize(); 265 // end copy header 266 267 268 COUT(5) << "Synchronisable getting data from objectID: " << objectID << " classID: " << classID << " length: " << size << std::endl; 269 // copy to location 270 for(i=syncList.begin(); i!=syncList.end(); ++i){ 271 (*i)->getData( mem, mode ); 272 tempsize += (*i)->getSize( mode ); 273 } 274 header.setDataSize( tempsize ); 275 276 #ifndef NDEBUG 277 uint32_t size; 278 size=getSize(id, mode); 274 279 assert(tempsize==size); 275 return true; 280 #endif 281 return tempsize; 276 282 } 277 283 … … 286 292 if(mode==0x0) 287 293 mode=state_; 288 std:: list<SynchronisableVariableBase *>::iterator i;294 std::vector<SynchronisableVariableBase *>::iterator i; 289 295 if(syncList.empty()){ 290 296 assert(0); … … 325 331 uint32_t Synchronisable::getSize(int32_t id, uint8_t mode){ 326 332 int tsize=SynchronisableHeader::getSize(); 327 if (mode==0x0)333 if (mode==0x0) 328 334 mode=state_; 329 if (!doSync(id, mode))335 if (!doSync(id, mode)) 330 336 return 0; 331 std::list<SynchronisableVariableBase*>::iterator i; 332 for(i=syncList.begin(); i!=syncList.end(); i++){ 337 assert( mode==state_ ); 338 tsize += this->dataSize_; 339 std::vector<SynchronisableVariableBase*>::iterator i; 340 for(i=stringList.begin(); i!=stringList.end(); ++i){ 333 341 tsize += (*i)->getSize( mode ); 334 342 } - Property svn:mergeinfo changed
-
code/branches/netp3/src/network/synchronisable/Synchronisable.h
- Property svn:mergeinfo changed
/code/branches/netp2/src/network/synchronisable/Synchronisable.h (added) merged: 2836,2937,2940
r2911 r2990 33 33 34 34 #include <list> 35 #include <vector> 35 36 #include <map> 36 37 #include <queue> 37 38 #include <cassert> 39 #include <string> 38 40 #include "util/Math.h" 39 41 #include "util/mbool.h" … … 120 122 public: 121 123 friend class packet::Gamestate; 122 // friend class Server;123 124 virtual ~Synchronisable(); 124 125 … … 139 140 Synchronisable(BaseObject* creator); 140 141 template <class T> void registerVariable(T& variable, uint8_t mode=0x1, NetworkCallbackBase *cb=0, bool bidirectional=false); 141 template <class T> void unregisterVariable(T& var);142 //template <class T> void unregisterVariable(T& var); 142 143 void setObjectMode(uint8_t mode); 143 144 void setPriority(unsigned int freq){ objectFrequency_ = freq; } … … 145 146 146 147 private: 147 boolgetData(uint8_t*& men, int32_t id, uint8_t mode=0x0);148 uint32_t getData(uint8_t*& men, int32_t id, uint8_t mode=0x0); 148 149 uint32_t getSize(int32_t id, uint8_t mode=0x0); 149 150 bool updateData(uint8_t*& mem, uint8_t mode=0x0, bool forceCallback=false); … … 155 156 uint32_t classID; 156 157 157 std::list<SynchronisableVariableBase*> syncList; 158 std::vector<SynchronisableVariableBase*> syncList; 159 std::vector<SynchronisableVariableBase*> stringList; 160 uint32_t dataSize_; //size of all variables except strings 158 161 static uint8_t state_; // detemines wheter we are server (default) or client 159 162 bool backsync_; // if true the variables with mode > 1 will be synchronised to server (client -> server) … … 164 167 }; 165 168 166 template <class T> void Synchronisable::registerVariable(T& variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional)167 {168 if (bidirectional)169 syncList.push_back(new SynchronisableVariableBidirectional<const T>(variable, mode, cb));170 else171 syncList.push_back(new SynchronisableVariable<const T>(variable, mode, cb));172 }173 174 template <class T> void Synchronisable::unregisterVariable(T& var){175 std::list<SynchronisableVariableBase*>::iterator it = syncList.begin();176 while(it!=syncList.end()){177 if( ((*it)->getReference()) == &var ){178 delete (*it);179 syncList.erase(it);180 return;181 }182 else183 it++;184 }185 bool unregistered_nonexistent_variable = false;186 assert(unregistered_nonexistent_variable); //if we reach this point something went wrong:187 // the variable has not been registered before188 }189 190 169 // ================= Specialisation declarations 170 171 // template <> _NetworkExport void Synchronisable::registerVariable( const std::string& variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional); 172 template <> _NetworkExport void Synchronisable::registerVariable( std::string& variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional); 191 173 template <> _NetworkExport void Synchronisable::registerVariable( const ColourValue& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional); 192 174 template <> _NetworkExport void Synchronisable::registerVariable( ColourValue& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional); … … 200 182 template <> _NetworkExport void Synchronisable::registerVariable( const Quaternion& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional); 201 183 template <> _NetworkExport void Synchronisable::registerVariable( Quaternion& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional); 184 185 template <class T> void Synchronisable::registerVariable(T& variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional) 186 { 187 if (bidirectional) 188 { 189 syncList.push_back(new SynchronisableVariableBidirectional<const T>(variable, mode, cb)); 190 this->dataSize_ += syncList.back()->getSize(state_); 191 } 192 else 193 { 194 syncList.push_back(new SynchronisableVariable<const T>(variable, mode, cb)); 195 if ( this->state_ == mode ) 196 this->dataSize_ += syncList.back()->getSize(state_); 197 } 198 } 199 200 201 202 // template <class T> void Synchronisable::unregisterVariable(T& var){ 203 // std::vector<SynchronisableVariableBase*>::iterator it = syncList.begin(); 204 // while(it!=syncList.end()){ 205 // if( ((*it)->getReference()) == &var ){ 206 // delete (*it); 207 // syncList.erase(it); 208 // return; 209 // } 210 // else 211 // it++; 212 // } 213 // bool unregistered_nonexistent_variable = false; 214 // assert(unregistered_nonexistent_variable); //if we reach this point something went wrong: 215 // // the variable has not been registered before 216 // } 217 218 202 219 } 203 220 - Property svn:mergeinfo changed
-
code/branches/netp3/src/network/synchronisable/SynchronisableSpecialisations.cc
r2662 r2990 29 29 30 30 #include "network/synchronisable/Synchronisable.h" 31 #include <string> 31 32 32 33 // ================ template spezialisation … … 34 35 35 36 namespace orxonox{ 37 38 // template <> void Synchronisable::registerVariable( const std::string& variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional) 39 // { 40 // if (bidirectional) 41 // syncList.push_back(new SynchronisableVariableBidirectional<const std::string>(variable, mode, cb)); 42 // else 43 // syncList.push_back(new SynchronisableVariable<const std::string>(variable, mode, cb)); 44 // stringList.push_back(syncList.back()); 45 // } 46 47 template <> void Synchronisable::registerVariable( std::string& variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional) 48 { 49 if (bidirectional) 50 syncList.push_back(new SynchronisableVariableBidirectional<const std::string>(variable, mode, cb)); 51 else 52 syncList.push_back(new SynchronisableVariable<const std::string>(variable, mode, cb)); 53 stringList.push_back(syncList.back()); 54 } 36 55 37 56 template <> void Synchronisable::registerVariable( const ColourValue& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional) … … 52 71 registerVariable(variable.y, mode, cb, bidirectional); 53 72 } 54 template <> void Synchronisable::registerVariable( Vector2& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional)55 {56 registerVariable( (const ColourValue&)variable, mode, cb, bidirectional);57 }73 // template <> void Synchronisable::registerVariable( Vector2& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional) 74 // { 75 // registerVariable( (const ColourValue&)variable, mode, cb, bidirectional); 76 // } 58 77 59 78 template <> void Synchronisable::registerVariable( const Vector3& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional) -
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.