1 package com.ubermq.jms.common.overflow; 2 3 import com.ubermq.jms.common.datagram.*; 4 import com.ubermq.kernel.*; 5 import com.ubermq.kernel.overflow.*; 6 import javax.jms.*; 7 8 16 public class TTLOverflowHandler 17 extends ExponentialBackoff 18 { 19 public TTLOverflowHandler() {super();} 20 public TTLOverflowHandler(long initial, 21 int factor, 22 long max, 23 boolean shouldFail) 24 { 25 super(initial, factor, max, shouldFail); 26 } 27 28 public IOverflowHandler getRetryHandler() 29 { 30 return new TTLOverflowHandler(Math.min(maximumTimeout, timeout * factor), 31 factor, 32 maximumTimeout, 33 shouldFailIfMaximumReached); 34 } 35 36 41 public int overflow(IDatagram d) 42 { 43 if (d instanceof IMessageDatagram) 44 { 45 int ttl = ((Integer )((IMessageDatagram)d).getStandardProperty(IMessageDatagram.STDPROP_TTL)).intValue(); 46 int dmode = ((Integer )((IMessageDatagram)d).getStandardProperty(IMessageDatagram.STDPROP_DELIVERYMODE)).intValue(); 47 if (dmode == DeliveryMode.NON_PERSISTENT || 48 (ttl > 0 && this.timeout >= ttl)) 49 return IOverflowHandler.ACTION_IGNORE; 50 } 51 52 return super.overflow(d); 53 } 54 } 55 | Popular Tags |