Changeset 46d6469 in network-game for common/MessageProcessor.cpp
- Timestamp:
- Jul 26, 2013, 6:28:39 PM (12 years ago)
- Branches:
- master
- Children:
- 9fe1807
- Parents:
- 411c1ae
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
common/MessageProcessor.cpp
r411c1ae r46d6469 13 13 14 14 int MessageProcessor::sendMessage(NETWORK_MSG *msg, int sock, struct sockaddr_in *dest) { 15 cout << "Sending message of type " << msg->type << endl; 16 15 17 msg->id = ++lastUsedId; 16 18 MessageContainer message(*msg, *dest); 17 19 sentMessages[msg->id][dest->sin_addr.s_addr] = message; 18 20 19 cout << "Sending message" << endl; 20 cout << "id: " << msg->id << endl; 21 cout << "type: " << msg->type << endl; 22 cout << "buffer: " << msg->buffer << endl; 21 sentMessages[msg->id][dest->sin_addr.s_addr] = message; 23 22 24 23 int ret = sendto(sock, (char*)msg, sizeof(NETWORK_MSG), 0, (struct sockaddr *)dest, sizeof(struct sockaddr_in)); 25 26 cout << "Send a message of type " << msg->type << endl;27 24 28 25 return ret; … … 38 35 return ret; 39 36 40 cout << "Received message" << endl;41 42 37 // add id to the NETWORK_MSG struct 43 38 if (msg->type == MSG_TYPE_ACK) { 44 cout << "Received ack" << endl; 45 if (!sentMessages[msg->id][source->sin_addr.s_addr].isAcked) { 46 cout << "Received new ack" << endl; 47 sentMessages[msg->id][source->sin_addr.s_addr].isAcked = true; 48 sentMessages[msg->id][source->sin_addr.s_addr].timeAcked = getCurrentMillis(); 39 if (!sentMessages[msg->id][source->sin_addr.s_addr].getAcked()) { 40 sentMessages[msg->id][source->sin_addr.s_addr].setAcked(true); 41 sentMessages[msg->id][source->sin_addr.s_addr].setTimeAcked(getCurrentMillis()); 49 42 } 50 43 … … 52 45 }else { 53 46 bool isDuplicate = false; 54 55 cout << "Received real message" << endl;56 cout << "id: " << msg->id << endl;57 cout << "type: " << msg->type << endl;58 cout << "buffer: " << msg->buffer << endl;59 47 60 48 if (ackedMessages.find(msg->id) != ackedMessages.end()) … … 84 72 sentMsg = it->second; 85 73 for (it2 = sentMsg.begin(); it2 != sentMsg.end(); it2++) { 86 sendto(sock, (char*)&it2->second.msg, sizeof(NETWORK_MSG), 0, (struct sockaddr *)&it2->first, sizeof(struct sockaddr_in)); 74 if (!(it2->second.getAcked())) { 75 sendto(sock, it2->second.getMessage(), sizeof(NETWORK_MSG), 0, (struct sockaddr *)&it2->first, sizeof(struct sockaddr_in)); 76 } 87 77 } 88 78 } … … 95 85 while (it != sentMessages.end()) { 96 86 it2 = it->second.begin(); 97 while (it2 != it->second. begin()) {98 if (it2->second. isAcked) {99 if ((getCurrentMillis() - it2->second. timeAcked) > 1000)87 while (it2 != it->second.end()) { 88 if (it2->second.getAcked()) { 89 if ((getCurrentMillis() - it2->second.getTimeAcked()) > 1000) 100 90 it->second.erase(it2++); 101 91 else … … 114 104 115 105 while (it3 != ackedMessages.end()) { 116 if ((getCurrentMillis() - it3->second) > 500) {106 if ((getCurrentMillis() - it3->second) > 500) 117 107 ackedMessages.erase(it3++); 118 cout << "Deleting ack record" << endl; 119 }else 108 else 120 109 it3++; 121 110 }
Note:
See TracChangeset
for help on using the changeset viewer.