Changeset 9625 in orxonox.OLD for branches/proxy/src/lib/network/synchronizeable.cc
- Timestamp:
- Jul 30, 2006, 11:19:24 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/proxy/src/lib/network/synchronizeable.cc
r9606 r9625 55 55 /* make sure loadClassId is first synced var because this is read by networkStream */ 56 56 assert( syncVarList.size() == 0 ); 57 mLeafClassId = this->registerVarId( new SynchronizeableInt( (int*)&this->getLeafClassID(), (int*)&this->getLeafClassID(), "leafClassId" 58 59 this->registerVar( new SynchronizeableInt( &this->owner, &this->owner, "owner" ) );60 this->registerVar( new SynchronizeableString( &this->objectName, &this->objectName, "objectName" ) );57 mLeafClassId = this->registerVarId( new SynchronizeableInt( (int*)&this->getLeafClassID(), (int*)&this->getLeafClassID(), "leafClassId", PERMISSION_MASTER_SERVER) ); 58 59 this->registerVar( new SynchronizeableInt( &this->owner, &this->owner, "owner", PERMISSION_MASTER_SERVER ) ); 60 this->registerVar( new SynchronizeableString( &this->objectName, &this->objectName, "objectName", PERMISSION_MASTER_SERVER ) ); 61 61 } 62 62 … … 127 127 { 128 128 //make sure this user has his history 129 if ( sentStates.size() <= userId )129 if ( (int)sentStates.size() <= userId ) 130 130 sentStates.resize( userId+1 ); 131 131 … … 207 207 for ( SyncVarList::iterator it = syncVarList.begin(); it != syncVarList.end(); it++ ) 208 208 { 209 209 210 // DATA PERMISSIONS 210 211 // check if this synchronizeable has the permissions to write the data 211 212 213 #if 0 212 214 // MASTER_SERVER |====> * 213 215 if( SharedNetworkData::getInstance()->isMasterServer() && (*it)->checkPermission( PERMISSION_MASTER_SERVER )) … … 243 245 hasPermission = true; 244 246 247 else 248 hasPermission = false; 249 #endif 250 251 //////////////////////////////// 252 // Data SENDING Permissions 253 //////////////////////////////// 254 255 // Permission OWNER accept if: 256 // I am the owner 257 if( (*it)->checkPermission( PERMISSION_OWNER ) && this->owner == SharedNetworkData::getInstance()->getHostID()) 258 hasPermission = true; 259 // reciever != owner && owner is local 260 else if( (*it)->checkPermission( PERMISSION_OWNER ) && userId != this->owner && 261 (SharedNetworkData::getInstance()->isUserLocal(this->owner) || this->owner == SharedNetworkData::getInstance()->getHostID())) 262 hasPermission = true; 263 264 265 // Permission MASTER_SERVER accept if: 266 // im MASTER_SERVER 267 else if( (*it)->checkPermission( PERMISSION_MASTER_SERVER ) && SharedNetworkData::getInstance()->isMasterServer()) 268 hasPermission = true; 269 // im PROXY_SERVER && reciever == CLIENT 270 else if( (*it)->checkPermission( PERMISSION_MASTER_SERVER ) && SharedNetworkData::getInstance()->isProxyServerActive() && 271 SharedNetworkData::getInstance()->isUserClient( userId)) 272 hasPermission = true; 273 274 275 // Pemission SERVER accept if: 276 // i am server && reciever == CLIENT 277 else if( (*it)->checkPermission( PERMISSION_SERVER ) && !SharedNetworkData::getInstance()->isClient() && 278 SharedNetworkData::getInstance()->isUserClient( userId)) 279 hasPermission = true; 280 // i am SERVER && reciever == SERVER && reciever != owner && ( owner is local || i am owner) 281 else if( (*it)->checkPermission( PERMISSION_SERVER ) && !SharedNetworkData::getInstance()->isClient() && 282 userId != this->owner && 283 ( SharedNetworkData::getInstance()->isUserLocal( userId) || this->owner == SharedNetworkData::getInstance()->getHostID())) 284 hasPermission = true; 285 286 287 // Permission ALL accept if: 288 else if( (*it)->checkPermission( PERMISSION_ALL )) 289 hasPermission = true; 290 291 292 // or else refuse sending data 245 293 else 246 294 hasPermission = false; … … 308 356 { 309 357 //make sure this user has his history 310 if ( recvStates.size() <= userId )358 if ( (int)recvStates.size() <= userId ) 311 359 recvStates.resize( userId+1 ); 312 360 … … 367 415 368 416 369 // * <====| MASTER_SERVER 370 if( this->networkStream->isUserMasterServer( userId ) && (*it)->checkPermission( PERMISSION_MASTER_SERVER )) 371 hasPermission = true; 372 else if( this->networkStream->isUserMasterServer( userId ) && 373 this->owner != SharedNetworkData::getInstance()->getHostID() && (*it)->checkPermission( PERMISSION_OWNER )) 374 hasPermission = true; 375 376 // * <====| PROXY_SERVER 377 else if( this->networkStream->isUserProxyServerActive( userId ) && 378 this->owner != SharedNetworkData::getInstance()->getHostID() && (*it)->checkPermission( PERMISSION_OWNER )) 379 hasPermission = true; 380 // CLIENT <====| PROXY_SERVER 381 else if( this->networkStream->isUserProxyServerActive( userId ) && SharedNetworkData::getInstance()->isClient() 382 && (*it)->checkPermission( PERMISSION_MASTER_SERVER )) 383 hasPermission = true; 384 // MASTER_SERVER <====| PROXY_SERVER 385 else if( this->networkStream->isUserProxyServerActive( userId ) && SharedNetworkData::getInstance()->isMasterServer() && 386 !this->networkStream->isUserLocal( userId )) 387 hasPermission = true; 388 389 // * <====| OWNER 390 else if( this->owner == userId && (*it)->checkPermission( PERMISSION_OWNER )) 391 hasPermission = true; 392 393 // * <====| ALL 394 else if( (*it)->checkPermission( PERMISSION_ALL )) 395 hasPermission = true; 396 417 //////////////////////////////// 418 // Data RECIEVING Permissions 419 //////////////////////////////// 420 421 // i should never ever receive a state update from a synchronizeable, that belongs to me! If it does somethings wrong with the send rules 422 // assert( !((*it)->checkPermission( PERMISSION_OWNER ) && this->owner == SharedNetworkData::getInstance()->getHostID())); 423 424 425 // Permission OWNER accept if: 426 // sender == owner 427 if( (*it)->checkPermission( PERMISSION_OWNER ) && this->owner == userId) 428 hasPermission = true; 429 // sender == MASTER_SERVER 430 else if( (*it)->checkPermission( PERMISSION_OWNER ) && SharedNetworkData::getInstance()->isUserMasterServer( userId)) 431 hasPermission = true; 432 // sender == PROXY_SERVER 433 else if( (*it)->checkPermission( PERMISSION_OWNER ) && SharedNetworkData::getInstance()->isUserProxyServerActive( userId)) 434 hasPermission = true; 435 436 // Permission MASTER_SERVER accept if: 437 // sender == MASTER_SERVER 438 else if( (*it)->checkPermission( PERMISSION_MASTER_SERVER) && SharedNetworkData::getInstance()->isUserMasterServer( userId)) 439 hasPermission = true; 440 // sender == PROXY_SERVER && im not MASTER_SERVER && im not PROXY_SERVER 441 else if( (*it)->checkPermission( PERMISSION_MASTER_SERVER) && SharedNetworkData::getInstance()->isClient() && 442 SharedNetworkData::getInstance()->isUserProxyServerActive( userId)) 443 hasPermission = true; 444 445 // Permission SERVER accept if: 446 // sender == SERVER 447 else if( (*it)->checkPermission( PERMISSION_SERVER ) && !SharedNetworkData::getInstance()->isUserClient( userId) ) 448 hasPermission = true; 449 450 // Pemission ALL accept if: 451 else if( (*it)->checkPermission( PERMISSION_ALL )) 452 hasPermission = true; 453 454 // no rights to over-write local data 397 455 else 398 456 hasPermission = false; … … 466 524 void Synchronizeable::cleanUpUser( int userId ) 467 525 { 468 if ( recvStates.size() > userId )526 if ( (int)recvStates.size() > userId ) 469 527 { 470 528 for ( std::list<StateHistoryEntry*>::iterator it = recvStates[userId].begin(); it != recvStates[userId].end(); it++ ) … … 481 539 } 482 540 483 if ( sentStates.size() > userId )541 if ( (int)sentStates.size() > userId ) 484 542 { 485 543 … … 507 565 { 508 566 //make sure this user has his history 509 if ( recvStates.size() <= userId )567 if ( (int)recvStates.size() <= userId ) 510 568 recvStates.resize( userId+1 ); 511 569 … … 597 655 { 598 656 //make sure this user has his history 599 if ( sentStates.size() <= userId )657 if ( (int)sentStates.size() <= userId ) 600 658 sentStates.resize( userId+1 ); 601 659
Note: See TracChangeset
for help on using the changeset viewer.