Changeset 46d6469 in network-game for common/MessageProcessor.cpp


Ignore:
Timestamp:
Jul 26, 2013, 6:28:39 PM (12 years ago)
Author:
dportnoy <dmp1488@…>
Branches:
master
Children:
9fe1807
Parents:
411c1ae
Message:

Some bug fixes for MessageProcessor. MessageContainer is now in its own files.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • common/MessageProcessor.cpp

    r411c1ae r46d6469  
    1313
    1414int MessageProcessor::sendMessage(NETWORK_MSG *msg, int sock, struct sockaddr_in *dest) {
     15   cout << "Sending message of type " << msg->type << endl;
     16
    1517   msg->id = ++lastUsedId;
    1618   MessageContainer message(*msg, *dest);
    1719   sentMessages[msg->id][dest->sin_addr.s_addr] = message;
    1820
    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;
    2322
    2423   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;
    2724
    2825   return ret;
     
    3835      return ret;
    3936
    40    cout << "Received message" << endl;
    41 
    4237   // add id to the NETWORK_MSG struct
    4338   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());
    4942      }
    5043
     
    5245   }else {
    5346      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;
    5947
    6048      if (ackedMessages.find(msg->id) != ackedMessages.end())
     
    8472      sentMsg = it->second;
    8573      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         }
    8777      }
    8878   }
     
    9585   while (it != sentMessages.end()) {
    9686      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)
    10090               it->second.erase(it2++);
    10191            else
     
    114104
    115105   while (it3 != ackedMessages.end()) {
    116       if ((getCurrentMillis() - it3->second) > 500) {
     106      if ((getCurrentMillis() - it3->second) > 500)
    117107         ackedMessages.erase(it3++);
    118          cout << "Deleting ack record" << endl;
    119       }else
     108      else
    120109         it3++;
    121110   }
Note: See TracChangeset for help on using the changeset viewer.