parameters: (self, ack)
return_statement: return (self._firstMissingFrag == self._totalFrags)
docstring: Based on the information in an acknowledgement from the other side,
          send more packets. Tihs could be iether due to flow control or
          retransmission.
docstring_summary: Based on the information in an acknowledgement from the other side,
          send more packets. Tihs could be iether due to flow control or
          retransmission.
docstring_tokens: Based on the information in an acknowledgement from the other side send more packets . Tihs could be iether due to flow control or retransmission .
function: def processReceivedAck(self, ack):
          """
          Based on the information in an acknowledgement from the other side,
          send more packets. Tihs could be iether due to flow control or
          retransmission.
          """
  
          """Process an ACK response from the other end for the message.
  
          This will often free up send slots, allowing more fragments to be sent
          to the server.
  
          @param ack:
              An AckResponse object from the server for the request. It may
              acknowledge all packets, in which case this method won't send
              anything.
          @return:
              Whether all fragments have been acknowledged by the server.
          """
          if self._sendBuffer is None:
              debug("OutboundMessage droppped ack because not sending")
              return False
  
          if ack.firstMissingFrag < self._firstMissingFrag:
              debug("OutboundMessage dropped stale ACK")
          elif ack.firstMissingFrag > self._totalFrags:
              debug("OutboundMessage dropped invalid ACK (shouldn't happen)")
          elif ack.firstMissingFrag > (self._firstMissingFrag +
                                       len(self._sentTimes)):
              debug("OutboundMessage dropped ACK that advanced too far " +
                    "(shouldn't happen)")
          else:
              self._sentTimes.advance(ack.firstMissingFrag -
                                      self._firstMissingFrag)
              self._firstMissingFrag = ack.firstMissingFrag
              self._numAcked = ack.firstMissingFrag
              for i, acked in enumerate(ack.stagingVector.iterBits()):
                  if acked:
                      self._sentTimes[i + 1] = self._ACKED
                      self._numAcked += 1
          self.send()
          return (self._firstMissingFrag == self._totalFrags)
function_tokens: def processReceivedAck ( self , ack ) : """Process an ACK response from the other end for the message.
  
          This will often free up send slots, allowing more fragments to be sent
          to the server.
  
          @param ack:
              An AckResponse object from the server for the request. It may
              acknowledge all packets, in which case this method won't send
              anything.
          @return:
              Whether all fragments have been acknowledged by the server.
          """ if self . _sendBuffer is None : debug ( "OutboundMessage droppped ack because not sending" ) return False if ack . firstMissingFrag < self . _firstMissingFrag : debug ( "OutboundMessage dropped stale ACK" ) elif ack . firstMissingFrag > self . _totalFrags : debug ( "OutboundMessage dropped invalid ACK (shouldn't happen)" ) elif ack . firstMissingFrag > ( self . _firstMissingFrag + len ( self . _sentTimes ) ) : debug ( "OutboundMessage dropped ACK that advanced too far " + "(shouldn't happen)" ) else : self . _sentTimes . advance ( ack . firstMissingFrag - self . _firstMissingFrag ) self . _firstMissingFrag = ack . firstMissingFrag self . _numAcked = ack . firstMissingFrag for i , acked in enumerate ( ack . stagingVector . iterBits ( ) ) : if acked : self . _sentTimes [ i + 1 ] = self . _ACKED self . _numAcked += 1 self . send ( ) return ( self . _firstMissingFrag == self . _totalFrags )