org.wso2.mercury.state
Class InvokerBuffer

java.lang.Object
  extended by org.wso2.mercury.state.InvokerBuffer

public class InvokerBuffer
extends java.lang.Object

this provides the exactly one inorder delivery used to buffer the incomming messages so that later it can invoke in correct order the state of the invoker buffer is determined by the following variables LMR - last message received MIB - messages in the buffer TMR - terminate message received

these three variables forms possible 8 states but states 001,100,101 can be considered as one complete sate.

External events that would change this state are LMR - last message receive TMR - terminate message receive AMR - application message receive SMA(SC) - send messages to application so that it finish messages.


Field Summary
static int STATE_000
           
static int STATE_010
           
static int STATE_011
           
static int STATE_110
           
static int STATE_111
           
static int STATE_COMPLETE
           
static long TIMEOUT_TIME
           
 
Constructor Summary
InvokerBuffer(int state)
           
 
Method Summary
 void applicatinMessageReceived(long messageNumber, MercuryMessageContext mercuryMessageContext, RMDSequenceDto rmdSequenceDto)
           
 void doActions()
           
 org.apache.axis2.addressing.EndpointReference getAcksTo()
           
 long getLastAccessTime()
           
 long getLastMessageNumber()
           
 long getLastMessageSendToApplication()
           
 java.util.Map getMessageBuffer()
           
 InvokerBufferDto getPersistanceDto()
           
 PersistenceManager getPersistanceManager()
           
 int getState()
           
 boolean isAnonymous()
           
 boolean isMessagesCompleted()
           
 void lastMessageReceived(long messageNumber, MercuryMessageContext mercuryMessageContext, RMDSequenceDto rmdSequenceDto)
           
 void loadInvokerBufferDetails(org.apache.axis2.context.MessageContext messageContext)
           
 void save(RMDSequenceDto rmdSequenceDto)
          saves both RMD Sequence and Invoker buffer objects at once.
 void setAcksTo(org.apache.axis2.addressing.EndpointReference acksTo)
           
 void setAnonymous(boolean anonymous)
           
 void setLastAccessTime(long lastAccessTime)
           
 void setLastMessageNumber(long lastMessageNumber)
           
 void setLastMessageSendToApplication(long lastMessageSendToApplication)
           
 void setMessageBuffer(java.util.Map messageBuffer)
           
 void setPersistanceDto(InvokerBufferDto persistanceDto)
           
 void setPersistanceManager(PersistenceManager persistenceManager)
           
 void setState(int state)
           
 void terminate()
          this method is called in an unexpected terminateion
 void terminateMessageReceived(RMDSequenceDto rmdSequenceDto)
           
 void waitUntilMessageInvoke(long messageNumber)
          this method is used to wait the client side thread in annonymous invocations until invoker message passes it.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

STATE_000

public static final int STATE_000
See Also:
Constant Field Values

STATE_010

public static final int STATE_010
See Also:
Constant Field Values

STATE_011

public static final int STATE_011
See Also:
Constant Field Values

STATE_111

public static final int STATE_111
See Also:
Constant Field Values

STATE_110

public static final int STATE_110
See Also:
Constant Field Values

STATE_COMPLETE

public static final int STATE_COMPLETE
See Also:
Constant Field Values

TIMEOUT_TIME

public static long TIMEOUT_TIME
Constructor Detail

InvokerBuffer

public InvokerBuffer(int state)
Method Detail

applicatinMessageReceived

public void applicatinMessageReceived(long messageNumber,
                                      MercuryMessageContext mercuryMessageContext,
                                      RMDSequenceDto rmdSequenceDto)
                               throws PersistenceException
Throws:
PersistenceException

lastMessageReceived

public void lastMessageReceived(long messageNumber,
                                MercuryMessageContext mercuryMessageContext,
                                RMDSequenceDto rmdSequenceDto)
                         throws PersistenceException
Throws:
PersistenceException

isMessagesCompleted

public boolean isMessagesCompleted()

doActions

public void doActions()
               throws org.apache.axis2.AxisFault
Throws:
org.apache.axis2.AxisFault

terminateMessageReceived

public void terminateMessageReceived(RMDSequenceDto rmdSequenceDto)
                              throws PersistenceException
Throws:
PersistenceException

save

public void save(RMDSequenceDto rmdSequenceDto)
          throws PersistenceException
saves both RMD Sequence and Invoker buffer objects at once.

Parameters:
rmdSequenceDto -
Throws:
PersistenceException

loadInvokerBufferDetails

public void loadInvokerBufferDetails(org.apache.axis2.context.MessageContext messageContext)
                              throws PersistenceException,
                                     org.apache.axis2.AxisFault
Throws:
PersistenceException
org.apache.axis2.AxisFault

waitUntilMessageInvoke

public void waitUntilMessageInvoke(long messageNumber)
this method is used to wait the client side thread in annonymous invocations until invoker message passes it.


terminate

public void terminate()
this method is called in an unexpected terminateion


getState

public int getState()

setState

public void setState(int state)

getMessageBuffer

public java.util.Map getMessageBuffer()

setMessageBuffer

public void setMessageBuffer(java.util.Map messageBuffer)

getLastAccessTime

public long getLastAccessTime()

setLastAccessTime

public void setLastAccessTime(long lastAccessTime)

getPersistanceManager

public PersistenceManager getPersistanceManager()

setPersistanceManager

public void setPersistanceManager(PersistenceManager persistenceManager)

getLastMessageNumber

public long getLastMessageNumber()

setLastMessageNumber

public void setLastMessageNumber(long lastMessageNumber)

getLastMessageSendToApplication

public long getLastMessageSendToApplication()

getPersistanceDto

public InvokerBufferDto getPersistanceDto()

setPersistanceDto

public void setPersistanceDto(InvokerBufferDto persistanceDto)

setLastMessageSendToApplication

public void setLastMessageSendToApplication(long lastMessageSendToApplication)

isAnonymous

public boolean isAnonymous()

setAnonymous

public void setAnonymous(boolean anonymous)

getAcksTo

public org.apache.axis2.addressing.EndpointReference getAcksTo()

setAcksTo

public void setAcksTo(org.apache.axis2.addressing.EndpointReference acksTo)


~~~~~~~~~~~~~~~~~~~ Mercury ~~~~~~~~~~~~~~~~~~~~~