/**
   * Create a new aggregator, which will send messages out the given queue.
   *
   * @param outgoing_message_q
   */
  public OutgoingBTHaveMessageAggregator(
      OutgoingMessageQueue outgoing_message_q, byte _bt_have_version, byte _az_have_version) {
    this.outgoing_message_q = outgoing_message_q;
    bt_have_version = _bt_have_version;
    az_have_version = _az_have_version;

    outgoing_message_q.registerQueueListener(added_message_listener);
  }
  /**
   * Create a new handler for outbound piece messages, reading piece data from the given disk
   * manager and transmitting the messages out the given message queue.
   *
   * @param disk_manager
   * @param outgoing_message_q
   */
  public OutgoingBTPieceMessageHandler(
      PEPeer _peer,
      OutgoingMessageQueue _outgoing_message_q,
      OutgoingBTPieceMessageHandlerAdapter _adapter,
      byte _piece_version) {
    peer = _peer;
    outgoing_message_queue = _outgoing_message_q;
    adapter = _adapter;
    piece_version = _piece_version;

    outgoing_message_queue.registerQueueListener(sent_message_listener);
  }