/** * Returns <code>true</code> if there are messages that will timeout before * <code>now</code>. * @param now the timeout for messages waiting to be sent * @return <code>true</code> if there are messages that will timeout before * <code>now</code> */ public boolean mustSendNow(long now) { return getNextUrgentTime(Long.MAX_VALUE, now) <= now; }
public void testUrgentTimeEmpty() { PeerMessageQueue pmq = new PeerMessageQueue(); assertEquals(Long.MAX_VALUE, pmq.getNextUrgentTime(Long.MAX_VALUE, System.currentTimeMillis())); }
public void testUrgentTime() { PeerMessageQueue pmq = new PeerMessageQueue(); //Constructor might take some time, so grab a range long start = System.currentTimeMillis(); MessageItem item = new MessageItem(new byte[1024], null, false, null, (short) 0, false, false); long end = System.currentTimeMillis(); pmq.queueAndEstimateSize(item, 1024); //The timeout for item should be within (start + 100) and (end + 100) long urgentTime = pmq.getNextUrgentTime(Long.MAX_VALUE, System.currentTimeMillis()); if(!((urgentTime >= (start + 100)) && (urgentTime <= (end + 100)))) { fail("Timeout not in expected range. Expected: " + (start + 100) + "->" + (end + 100) + ", actual: " + urgentTime); } }
boolean canSend = cur != null && pf.canSend(cur); if(canSend) { // New messages are only sent on cur. long l = messageQueue.getNextUrgentTime(t, 0); // Need an accurate value even if in the past. if(t >= now && l < now && logMINOR) Logger.minor(this, "Next urgent time from message queue less than now");
public void testUrgentTimeQueuedWrong() { PeerMessageQueue pmq = new PeerMessageQueue(); //Constructor might take some time, so grab a range long start = System.currentTimeMillis(); MessageItem itemUrgent = new MessageItem(new byte[1024], null, false, null, (short) 0, false, false); long end = System.currentTimeMillis(); //Sleep for a little while to get a later timeout try { Thread.sleep(1); } catch (InterruptedException e) { } MessageItem itemNonUrgent = new MessageItem(new byte[1024], null, false, null, (short) 0, false, false); //Queue the least urgent item first to get the wrong order pmq.queueAndEstimateSize(itemNonUrgent, 1024); pmq.queueAndEstimateSize(itemUrgent, 1024); //getNextUrgentTime() should return the timeout of itemUrgent, which is within (start + 100) //and (end + 100) long urgentTime = pmq.getNextUrgentTime(Long.MAX_VALUE, System.currentTimeMillis()); if(!((urgentTime >= (start + 100)) && (urgentTime <= (end + 100)))) { fail("Timeout not in expected range. Expected: " + (start + 100) + "->" + (end + 100) + ", actual: " + urgentTime); } }