Changeset 4dbac87 in network-game for common


Ignore:
Timestamp:
Jul 17, 2013, 1:48:16 AM (11 years ago)
Author:
dportnoy <dmp1488@…>
Branches:
master
Children:
855f153
Parents:
6b641af
Message:

MessageProcessor keeps track messages it has acked, so it doesn't send acks to multiple copies of the same message

Location:
common
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • common/MessageProcessor.cpp

    r6b641af r4dbac87  
    4848      return -1; // don't do any further processing
    4949   }else {
    50       if (ret > -1) {
    51          cout << "Received message" << endl;
    52          cout << "id: " << msg->id << endl;
    53          cout << "type: " << msg->type << endl;
    54          cout << "buffer: " << msg->buffer << endl;
    55       }
     50      cout << "Received message" << endl;
     51      cout << "id: " << msg->id << endl;
     52      cout << "type: " << msg->type << endl;
     53      cout << "buffer: " << msg->buffer << endl;
    5654
    57       NETWORK_MSG ack;
    58       ack.id = msg->id;
    59       ack.type = MSG_TYPE_ACK;
     55      if (ackedMessages.find(msg->id) != ackedMessages.end()) {
     56         ackedMessages[msg->id] = getCurrentMillis();
    6057
    61       sendto(sock, (char*)&ack, sizeof(NETWORK_MSG), 0, (struct sockaddr *)source, sizeof(struct sockaddr_in));
     58         NETWORK_MSG ack;
     59         ack.id = msg->id;
     60         ack.type = MSG_TYPE_ACK;
     61
     62         sendto(sock, (char*)&ack, sizeof(NETWORK_MSG), 0, (struct sockaddr *)source, sizeof(struct sockaddr_in));
     63      }else
     64         cout << "Got duplicate ack" << endl;
    6265   }
    6366
     
    9194         it++;
    9295   }
     96
     97   map<unsigned int, unsigned long long>::iterator it2 = ackedMessages.begin();
     98
     99   while (it2 != ackedMessages.end()) {
     100      if ((getCurrentMillis() - it2->second) > 500)
     101         ackedMessages.erase(it2++);
     102      else
     103         it2++;
     104   }
    93105}
  • common/MessageProcessor.h

    r6b641af r4dbac87  
    7979   int lastUsedId;
    8080   map<int, MessageContainer> sentMessages;
     81   map<unsigned int, unsigned long long> ackedMessages;
    8182};
    8283
Note: See TracChangeset for help on using the changeset viewer.