1 26 package org.objectweb.joram.mom.proxies; 27 28 import java.io.Serializable ; 29 30 import org.objectweb.joram.shared.excepts.MomException; 31 import org.objectweb.joram.shared.client.AbstractJmsReply; 32 import org.objectweb.joram.shared.client.AbstractJmsRequest; 33 import org.objectweb.joram.shared.client.MomExceptionReply; 34 import org.objectweb.joram.shared.client.CnxCloseRequest; 35 36 39 public class ReliableConnectionContext implements ConnectionContext, Serializable { 40 41 private int key; 42 43 private long inputCounter; 44 45 private long outputCounter; 46 47 private AckedQueue queue; 48 49 private int heartBeat; 50 51 private ProxyImpl proxyImpl; 52 53 private boolean closed; 54 55 ReliableConnectionContext(ProxyImpl proxyImpl, int key, int heartBeat) { 56 this.key = key; 57 this.heartBeat = heartBeat; 58 this.proxyImpl = proxyImpl; 59 inputCounter = -1; 60 outputCounter = 0; 61 queue = new AckedQueue(); 62 closed = false; 63 } 64 65 public int getKey() { 66 return key; 67 } 68 69 public AckedQueue getQueue() { 70 return queue; 71 } 72 73 public int getHeartBeat() { 74 return heartBeat; 75 } 76 77 public long getInputCounter() { 78 return inputCounter; 79 } 80 81 public AbstractJmsRequest getRequest(Object obj) { 82 ProxyMessage msg = (ProxyMessage)obj; 83 inputCounter = msg.getId(); 84 AbstractJmsRequest request = (AbstractJmsRequest) msg.getObject(); 85 queue.ack(msg.getAckId()); 86 if (request instanceof CnxCloseRequest) { 87 closed = true; 88 } 89 return request; 90 } 91 92 public void pushReply(AbstractJmsReply reply) { 93 ProxyMessage msg = new ProxyMessage(outputCounter, inputCounter, reply); 94 queue.push(msg); 95 outputCounter++; 96 } 97 98 public void pushError(MomException exc) { 99 queue.push(new ProxyMessage(-1, -1, new MomExceptionReply(exc))); 100 } 101 102 public boolean isClosed() { 103 return closed; 104 } 105 } 106 | Popular Tags |