if(log.isInfoEnabled()) log.info("exceded window_size (" + window_size +
if(log.isTraceEnabled()) log.trace("exceeded window_size (" + window_size +
    public void ack(long seqno) {        Long tmp = new Long(seqno);        Entry entry;        synchronized (msgs) {            msgs.remove(tmp);            retransmitter.remove(seqno);            if (use_sliding_window && queueing) {                if (msgs.size() < min_threshold) { // we fell below threshold, now we can resume adding msgs                        if(log.isInfoEnabled()) log.info("number of messages in table fell " +                                "under min_threshold (" + min_threshold + "): adding " +                                msg_queue.size() + " messages on queue");                    while (msgs.size() < window_size) {                        if ((entry = removeFromQueue()) != null)                            addMessage(entry.seqno, new Long(entry.seqno), entry.msg);                        else                            break;                    }                    if (msgs.size() + 1 > window_size) {                            if(log.isInfoEnabled()) log.info("exceded window_size (" + window_size +                                    ") again, will still queue");                        return; // still queueuing                    } else                        queueing = false; // allows add() to add messages again                        if(log.isInfoEnabled()) log.info("set queueing to false (table size=" + msgs.size() + ")");                }            }        }    }