Changeset 7495 for code/trunk/src/libraries/network/FunctionCallManager.cc
- Timestamp:
- Sep 28, 2010, 9:48:32 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk/src/libraries/network/FunctionCallManager.cc
r6417 r7495 29 29 #include "FunctionCallManager.h" 30 30 #include "packet/FunctionCalls.h" 31 #include "core/GameMode.h" 31 32 32 33 namespace orxonox { 33 34 34 std::map<uint32_t, packet::FunctionCalls*> FunctionCallManager::clientMap_; 35 std::map<uint32_t, packet::FunctionCalls*> FunctionCallManager::sClientMap_; 36 std::vector<FunctionCall> FunctionCallManager::sIncomingFunctionCallBuffer_; 35 37 36 38 // Static calls … … 38 40 void FunctionCallManager::addCallStatic(uint32_t functionID, uint32_t clientID) 39 41 { 40 if( clientMap_.find(clientID)==clientMap_.end())42 if(sClientMap_.find(clientID)==sClientMap_.end()) 41 43 { 42 FunctionCallManager:: clientMap_[clientID] = new packet::FunctionCalls;43 FunctionCallManager:: clientMap_[clientID]->setClientID(clientID);44 FunctionCallManager::sClientMap_[clientID] = new packet::FunctionCalls; 45 FunctionCallManager::sClientMap_[clientID]->setClientID(clientID); 44 46 } 45 FunctionCallManager:: clientMap_[clientID]->addCallStatic(functionID);47 FunctionCallManager::sClientMap_[clientID]->addCallStatic(functionID); 46 48 } 47 49 void FunctionCallManager::addCallStatic(uint32_t functionID, uint32_t clientID, const MultiType& mt1) 48 50 { 49 if( clientMap_.find(clientID)==clientMap_.end())51 if(sClientMap_.find(clientID)==sClientMap_.end()) 50 52 { 51 FunctionCallManager:: clientMap_[clientID] = new packet::FunctionCalls;52 FunctionCallManager:: clientMap_[clientID]->setClientID(clientID);53 FunctionCallManager::sClientMap_[clientID] = new packet::FunctionCalls; 54 FunctionCallManager::sClientMap_[clientID]->setClientID(clientID); 53 55 } 54 FunctionCallManager:: clientMap_[clientID]->addCallStatic(functionID, &mt1);56 FunctionCallManager:: sClientMap_[clientID]->addCallStatic(functionID, &mt1); 55 57 } 56 58 void FunctionCallManager::addCallStatic(uint32_t functionID, uint32_t clientID, const MultiType& mt1, const MultiType& mt2) 57 59 { 58 if( clientMap_.find(clientID)==clientMap_.end())60 if(sClientMap_.find(clientID)==sClientMap_.end()) 59 61 { 60 FunctionCallManager:: clientMap_[clientID] = new packet::FunctionCalls;61 FunctionCallManager:: clientMap_[clientID]->setClientID(clientID);62 FunctionCallManager::sClientMap_[clientID] = new packet::FunctionCalls; 63 FunctionCallManager::sClientMap_[clientID]->setClientID(clientID); 62 64 } 63 FunctionCallManager:: clientMap_[clientID]->addCallStatic(functionID, &mt1, &mt2);65 FunctionCallManager:: sClientMap_[clientID]->addCallStatic(functionID, &mt1, &mt2); 64 66 } 65 67 void FunctionCallManager::addCallStatic(uint32_t functionID, uint32_t clientID, const MultiType& mt1, const MultiType& mt2, const MultiType& mt3) 66 68 { 67 if( clientMap_.find(clientID)==clientMap_.end())69 if(sClientMap_.find(clientID)==sClientMap_.end()) 68 70 { 69 FunctionCallManager:: clientMap_[clientID] = new packet::FunctionCalls;70 FunctionCallManager:: clientMap_[clientID]->setClientID(clientID);71 FunctionCallManager::sClientMap_[clientID] = new packet::FunctionCalls; 72 FunctionCallManager::sClientMap_[clientID]->setClientID(clientID); 71 73 } 72 FunctionCallManager:: clientMap_[clientID]->addCallStatic(functionID, &mt1, &mt2, &mt3);74 FunctionCallManager:: sClientMap_[clientID]->addCallStatic(functionID, &mt1, &mt2, &mt3); 73 75 } 74 76 void FunctionCallManager::addCallStatic(uint32_t functionID, uint32_t clientID, const MultiType& mt1, const MultiType& mt2, const MultiType& mt3, const MultiType& mt4) 75 77 { 76 if( clientMap_.find(clientID)==clientMap_.end())78 if(sClientMap_.find(clientID)==sClientMap_.end()) 77 79 { 78 FunctionCallManager:: clientMap_[clientID] = new packet::FunctionCalls;79 FunctionCallManager:: clientMap_[clientID]->setClientID(clientID);80 FunctionCallManager::sClientMap_[clientID] = new packet::FunctionCalls; 81 FunctionCallManager::sClientMap_[clientID]->setClientID(clientID); 80 82 } 81 FunctionCallManager:: clientMap_[clientID]->addCallStatic(functionID, &mt1, &mt2, &mt3, &mt4);83 FunctionCallManager:: sClientMap_[clientID]->addCallStatic(functionID, &mt1, &mt2, &mt3, &mt4); 82 84 } 83 85 void FunctionCallManager::addCallStatic(uint32_t functionID, uint32_t clientID, const MultiType& mt1, const MultiType& mt2, const MultiType& mt3, const MultiType& mt4, const MultiType& mt5) 84 86 { 85 if( clientMap_.find(clientID)==clientMap_.end())87 if(sClientMap_.find(clientID)==sClientMap_.end()) 86 88 { 87 FunctionCallManager:: clientMap_[clientID] = new packet::FunctionCalls;88 FunctionCallManager:: clientMap_[clientID]->setClientID(clientID);89 FunctionCallManager::sClientMap_[clientID] = new packet::FunctionCalls; 90 FunctionCallManager::sClientMap_[clientID]->setClientID(clientID); 89 91 } 90 FunctionCallManager:: clientMap_[clientID]->addCallStatic(functionID, &mt1, &mt2, &mt3, &mt4, &mt5);92 FunctionCallManager:: sClientMap_[clientID]->addCallStatic(functionID, &mt1, &mt2, &mt3, &mt4, &mt5); 91 93 } 92 94 … … 96 98 void FunctionCallManager::addCallMember(uint32_t functionID, uint32_t objectID, uint32_t clientID) 97 99 { 98 if( clientMap_.find(clientID)==clientMap_.end())100 if(sClientMap_.find(clientID)==sClientMap_.end()) 99 101 { 100 FunctionCallManager:: clientMap_[clientID] = new packet::FunctionCalls;101 FunctionCallManager:: clientMap_[clientID]->setClientID(clientID);102 FunctionCallManager::sClientMap_[clientID] = new packet::FunctionCalls; 103 FunctionCallManager::sClientMap_[clientID]->setClientID(clientID); 102 104 } 103 FunctionCallManager:: clientMap_[clientID]->addCallMember(functionID, objectID);105 FunctionCallManager::sClientMap_[clientID]->addCallMember(functionID, objectID); 104 106 } 105 107 void FunctionCallManager::addCallMember(uint32_t functionID, uint32_t objectID, uint32_t clientID, const MultiType& mt1) 106 108 { 107 if( clientMap_.find(clientID)==clientMap_.end())109 if(sClientMap_.find(clientID)==sClientMap_.end()) 108 110 { 109 FunctionCallManager:: clientMap_[clientID] = new packet::FunctionCalls;110 FunctionCallManager:: clientMap_[clientID]->setClientID(clientID);111 FunctionCallManager::sClientMap_[clientID] = new packet::FunctionCalls; 112 FunctionCallManager::sClientMap_[clientID]->setClientID(clientID); 111 113 } 112 FunctionCallManager:: clientMap_[clientID]->addCallMember(functionID, objectID, &mt1);114 FunctionCallManager::sClientMap_[clientID]->addCallMember(functionID, objectID, &mt1); 113 115 } 114 116 void FunctionCallManager::addCallMember(uint32_t functionID, uint32_t objectID, uint32_t clientID, const MultiType& mt1, const MultiType& mt2) 115 117 { 116 if( clientMap_.find(clientID)==clientMap_.end())118 if(sClientMap_.find(clientID)==sClientMap_.end()) 117 119 { 118 FunctionCallManager:: clientMap_[clientID] = new packet::FunctionCalls;119 FunctionCallManager:: clientMap_[clientID]->setClientID(clientID);120 FunctionCallManager::sClientMap_[clientID] = new packet::FunctionCalls; 121 FunctionCallManager::sClientMap_[clientID]->setClientID(clientID); 120 122 } 121 FunctionCallManager:: clientMap_[clientID]->addCallMember(functionID, objectID, &mt1, &mt2);123 FunctionCallManager::sClientMap_[clientID]->addCallMember(functionID, objectID, &mt1, &mt2); 122 124 } 123 125 void FunctionCallManager::addCallMember(uint32_t functionID, uint32_t objectID, uint32_t clientID, const MultiType& mt1, const MultiType& mt2, const MultiType& mt3) 124 126 { 125 if( clientMap_.find(clientID)==clientMap_.end())127 if(sClientMap_.find(clientID)==sClientMap_.end()) 126 128 { 127 FunctionCallManager:: clientMap_[clientID] = new packet::FunctionCalls;128 FunctionCallManager:: clientMap_[clientID]->setClientID(clientID);129 FunctionCallManager::sClientMap_[clientID] = new packet::FunctionCalls; 130 FunctionCallManager::sClientMap_[clientID]->setClientID(clientID); 129 131 } 130 FunctionCallManager:: clientMap_[clientID]->addCallMember(functionID, objectID, &mt1, &mt2, &mt3);132 FunctionCallManager::sClientMap_[clientID]->addCallMember(functionID, objectID, &mt1, &mt2, &mt3); 131 133 } 132 134 void FunctionCallManager::addCallMember(uint32_t functionID, uint32_t objectID, uint32_t clientID, const MultiType& mt1, const MultiType& mt2, const MultiType& mt3, const MultiType& mt4) 133 135 { 134 if( clientMap_.find(clientID)==clientMap_.end())136 if(sClientMap_.find(clientID)==sClientMap_.end()) 135 137 { 136 FunctionCallManager:: clientMap_[clientID] = new packet::FunctionCalls;137 FunctionCallManager:: clientMap_[clientID]->setClientID(clientID);138 FunctionCallManager::sClientMap_[clientID] = new packet::FunctionCalls; 139 FunctionCallManager::sClientMap_[clientID]->setClientID(clientID); 138 140 } 139 FunctionCallManager:: clientMap_[clientID]->addCallMember(functionID, objectID, &mt1, &mt2, &mt3, &mt4);141 FunctionCallManager::sClientMap_[clientID]->addCallMember(functionID, objectID, &mt1, &mt2, &mt3, &mt4); 140 142 } 141 143 void FunctionCallManager::addCallMember(uint32_t functionID, uint32_t objectID, uint32_t clientID, const MultiType& mt1, const MultiType& mt2, const MultiType& mt3, const MultiType& mt4, const MultiType& mt5) 142 144 { 143 if( clientMap_.find(clientID)==clientMap_.end())145 if(sClientMap_.find(clientID)==sClientMap_.end()) 144 146 { 145 FunctionCallManager:: clientMap_[clientID] = new packet::FunctionCalls;146 FunctionCallManager:: clientMap_[clientID]->setClientID(clientID);147 FunctionCallManager::sClientMap_[clientID] = new packet::FunctionCalls; 148 FunctionCallManager::sClientMap_[clientID]->setClientID(clientID); 147 149 } 148 FunctionCallManager:: clientMap_[clientID]->addCallMember(functionID, objectID, &mt1, &mt2, &mt3, &mt4, &mt5);150 FunctionCallManager::sClientMap_[clientID]->addCallMember(functionID, objectID, &mt1, &mt2, &mt3, &mt4, &mt5); 149 151 } 150 152 … … 154 156 { 155 157 std::map<uint32_t, packet::FunctionCalls*>::iterator it; 156 for (it = FunctionCallManager:: clientMap_.begin(); it != FunctionCallManager::clientMap_.end(); it++)158 for (it = FunctionCallManager::sClientMap_.begin(); it != FunctionCallManager::sClientMap_.end(); ++it ) 157 159 { 158 assert(!FunctionCallManager:: clientMap_.empty());160 assert(!FunctionCallManager::sClientMap_.empty()); 159 161 it->second->send(); 160 162 } 161 FunctionCallManager::clientMap_.clear(); 163 FunctionCallManager::sClientMap_.clear(); 164 } 165 166 void FunctionCallManager::bufferIncomingFunctionCall(const orxonox::FunctionCall& fctCall) 167 { 168 if( !GameMode::isMaster() ) 169 FunctionCallManager::sIncomingFunctionCallBuffer_.push_back( fctCall ); 170 } 171 172 void FunctionCallManager::processBufferedFunctionCalls() 173 { 174 std::vector<FunctionCall>::iterator it = FunctionCallManager::sIncomingFunctionCallBuffer_.begin(); 175 while( it!=FunctionCallManager::sIncomingFunctionCallBuffer_.end() ) 176 { 177 if( it->execute() ) 178 FunctionCallManager::sIncomingFunctionCallBuffer_.erase(it); 179 else 180 ++it; 181 } 162 182 } 163 183
Note: See TracChangeset
for help on using the changeset viewer.