org.objectweb.joram.client.jms.connection
Class RequestMultiplexer

java.lang.Object
  extended by org.objectweb.joram.client.jms.connection.RequestMultiplexer

public class RequestMultiplexer
extends java.lang.Object


Nested Class Summary
private  class RequestMultiplexer.Closer
           
private  class RequestMultiplexer.DemultiplexerDaemon
           
private  class RequestMultiplexer.HeartBeatTask
          Timer task responsible for sending a ping message to the server if no request has been sent during the specified timeout ('cnxPendingTimer' from the factory parameters).
(package private)  class RequestMultiplexer.onExceptionRunner
           
private static class RequestMultiplexer.Status
           
 
Field Summary
private  RequestChannel channel
           
private  Connection cnx
           
private  RequestMultiplexer.DemultiplexerDaemon demtpx
           
private  javax.jms.ExceptionListener exceptionListener
           
private  RequestMultiplexer.HeartBeatTask heartBeatTask
          The task responsible for keeping the connection alive.
private  long lastRequestDate
          The date of the last request
private static org.objectweb.util.monolog.api.Logger logger
           
private  int requestCounter
           
 java.util.Hashtable requestsTable
           
private  int status
           
private  java.util.Timer timer
           
 
Constructor Summary
RequestMultiplexer(Connection cnx, RequestChannel channel, long heartBeat)
           
 
Method Summary
private  void abortReply(AbstractJmsReply reply)
           
 void abortRequest(int requestId)
          Not synchronized because it would possibly deadlock with some reply listeners (actually requestors).
 void cleanup()
          Used by: 1- close() 2- the connector layer (OutboundConnection.cleanup())
 void close()
          Not synchronized because it would possibly deadlock with some reply listeners (actually requestors).
 void closing()
           
 void deny(ConsumerMessages messages)
           
private  ReplyListener doAbortRequest(int requestId)
           
 java.lang.String getDemultiplexerDaemonName()
           
 javax.jms.ExceptionListener getExceptionListener()
           
 boolean isClosed()
           
private  void onException(java.lang.Exception exc)
           
private  void route(AbstractJmsReply reply)
          Not synchronized because it may be called by the demultiplexer during a concurrent close.
 void schedule(java.util.TimerTask task, long period)
           
 void sendRequest(AbstractJmsRequest request)
           
 void sendRequest(AbstractJmsRequest request, ReplyListener listener)
           
 void setDemultiplexerDaemonName(java.lang.String name)
           
 void setExceptionListener(javax.jms.ExceptionListener exceptionListener)
           
 void setMultiThreadSync(int delay, int threshold)
           
private  void setStatus(int status)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

private static org.objectweb.util.monolog.api.Logger logger

cnx

private Connection cnx

status

private volatile int status

channel

private RequestChannel channel

requestsTable

public java.util.Hashtable requestsTable

requestCounter

private int requestCounter

demtpx

private RequestMultiplexer.DemultiplexerDaemon demtpx

timer

private java.util.Timer timer

heartBeatTask

private RequestMultiplexer.HeartBeatTask heartBeatTask
The task responsible for keeping the connection alive.


exceptionListener

private javax.jms.ExceptionListener exceptionListener

lastRequestDate

private volatile long lastRequestDate
The date of the last request

Constructor Detail

RequestMultiplexer

public RequestMultiplexer(Connection cnx,
                          RequestChannel channel,
                          long heartBeat)
                   throws javax.jms.JMSException
Throws:
javax.jms.JMSException
Method Detail

setStatus

private void setStatus(int status)

isClosed

public boolean isClosed()

closing

public void closing()

setExceptionListener

public void setExceptionListener(javax.jms.ExceptionListener exceptionListener)

getExceptionListener

public javax.jms.ExceptionListener getExceptionListener()

sendRequest

public void sendRequest(AbstractJmsRequest request)
                 throws javax.jms.JMSException
Throws:
javax.jms.JMSException

sendRequest

public void sendRequest(AbstractJmsRequest request,
                        ReplyListener listener)
                 throws javax.jms.JMSException
Throws:
javax.jms.JMSException

setMultiThreadSync

public void setMultiThreadSync(int delay,
                               int threshold)

close

public void close()
Not synchronized because it would possibly deadlock with some reply listeners (actually requestors).


cleanup

public void cleanup()
Used by: 1- close() 2- the connector layer (OutboundConnection.cleanup())


abortRequest

public void abortRequest(int requestId)
Not synchronized because it would possibly deadlock with some reply listeners (actually requestors).


doAbortRequest

private ReplyListener doAbortRequest(int requestId)

route

private void route(AbstractJmsReply reply)
Not synchronized because it may be called by the demultiplexer during a concurrent close. It would deadlock as the close waits for the demultiplexer to stop.


abortReply

private void abortReply(AbstractJmsReply reply)

deny

public void deny(ConsumerMessages messages)

onException

private void onException(java.lang.Exception exc)

schedule

public void schedule(java.util.TimerTask task,
                     long period)

setDemultiplexerDaemonName

public void setDemultiplexerDaemonName(java.lang.String name)

getDemultiplexerDaemonName

public java.lang.String getDemultiplexerDaemonName()


Copyright © 2010 ScalAgent D.T.. All Rights Reserved.