/** * Queue a new have message for aggregated sending. * * @param piece_number of the have message * @param force if true, send this and any other pending haves right away */ public void queueHaveMessage(int piece_number, boolean force) { if (destroyed) return; try { pending_haves_mon.enter(); pending_haves.add(new Integer(piece_number)); if (force) { sendPendingHaves(); } else { int pending_bytes = pending_haves.size() * 9; if (pending_bytes >= outgoing_message_q.getMssSize()) { // System.out.println("enough pending haves for a full packet!"); // there's enough pending bytes to fill a packet payload sendPendingHaves(); } } } finally { pending_haves_mon.exit(); } }