org.wso2.mercury.state
Class RMSSequence

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

public class RMSSequence
extends java.lang.Object

this class is used to keep the RMS sequence. RMS Sequence is depends on four parameters SS - Sequence Started MIB - Messages in the buffer TMR - terminate message received LMR - last message received Here we assume either TMR or LMR occurs. Collectively these four state variables forms 16 possible states but only 7 states can realy exists.

External events that can change this state machine are CRR - Create Sequence Response Receive LMR - Last message receive TMR - Terminate message receive ACKALL - Receive Acknowledgments for all messages.

when those event occurs they change the sate accordingly seqence processor always go through this state table and do the appropriate tasks according to the state.


Field Summary
static long RETRANSMIT_TIME
           
static int STATE_0100
           
static int STATE_0101
           
static int STATE_0110
           
static int STATE_1000
           
static int STATE_1100
           
static int STATE_1101
           
static int STATE_1110
           
static int STATE_TERMINATE
           
static long TIMEOUT_TIME
           
 
Constructor Summary
RMSSequence(int state, org.apache.axis2.addressing.EndpointReference endPointReference)
           
 
Method Summary
 void addRMMessageContext(RMApplicationMessage message, org.apache.axis2.context.MessageContext messageContext)
           
 void applicationMessageReceivedFromClient(RMApplicationMessage message, org.apache.axis2.context.MessageContext messageContext)
           
 void createSequenceResponseReceived()
          create sequence message received event has occured do the necessary state changes accordingly.
 void doActions()
          sender worker invokes this method time to time and excecute the correct actions
 org.apache.axis2.addressing.EndpointReference getAckToEpr()
           
 Axis2Info getAxis2Info()
           
 MercuryErrorCallback getErrorCallback()
           
 long getLastAccessedTime()
           
 RMDSequence getOfferedRMDSequence()
           
 RMSSequenceDto getPersistanceDto()
           
 java.lang.String getSequenceID()
           
 java.lang.String getSequenceOffer()
           
 int getState()
           
 void invalidCreateSequenceResponseReceived()
           
 boolean isAnnonymous()
           
 boolean isNumberAcknowledged(long number, java.util.List acknowledgments)
           
 void lastMessageReceivedFromClient(RMApplicationMessage message, org.apache.axis2.context.MessageContext messageContext)
           
 void populatePersistnaceData(org.apache.axis2.context.MessageContext messageContext, RMSSequenceDto rmsSequenceDto)
           
 void removeRelationShips(org.apache.axis2.client.Options options)
           
 void save(long internalKeyID)
           
 void sendApplicationMessageResponse(org.apache.axis2.context.MessageContext inboundMessageContext, long inMessageNumber)
           
 void sendTerminateSequenceMessage(org.apache.axis2.context.MessageContext inboundMessageContext)
           
 void sequenceAcknowledgmentReceived(java.util.List acknowledgmentRanges)
           
 void setAckToEpr(org.apache.axis2.addressing.EndpointReference ackToEpr)
           
 void setAnnonymous(boolean annonymous)
           
 void setAxis2Info(Axis2Info axis2Info)
           
 void setErrorCallback(MercuryErrorCallback errorCallback)
           
 void setLastAccessedTime(long lastAccessedTime)
           
 void setOfferedRMDSequence(RMDSequence offeredRMDSequence)
           
 void setPersistanceDto(RMSSequenceDto persistanceDto)
           
 void setSequenceID(java.lang.String sequenceID)
           
 void setSequenceOffer(java.lang.String sequenceOffer)
           
 void setState(int state)
           
 void soapFaultOccured()
           
 void terminateMessageReceivedFromClient()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

RETRANSMIT_TIME

public static long RETRANSMIT_TIME

TIMEOUT_TIME

public static long TIMEOUT_TIME

STATE_0100

public static final int STATE_0100
See Also:
Constant Field Values

STATE_0101

public static final int STATE_0101
See Also:
Constant Field Values

STATE_0110

public static final int STATE_0110
See Also:
Constant Field Values

STATE_1110

public static final int STATE_1110
See Also:
Constant Field Values

STATE_1000

public static final int STATE_1000
See Also:
Constant Field Values

STATE_1100

public static final int STATE_1100
See Also:
Constant Field Values

STATE_1101

public static final int STATE_1101
See Also:
Constant Field Values

STATE_TERMINATE

public static final int STATE_TERMINATE
See Also:
Constant Field Values
Constructor Detail

RMSSequence

public RMSSequence(int state,
                   org.apache.axis2.addressing.EndpointReference endPointReference)
Method Detail

addRMMessageContext

public void addRMMessageContext(RMApplicationMessage message,
                                org.apache.axis2.context.MessageContext messageContext)
                         throws PersistenceException
Throws:
PersistenceException

doActions

public void doActions()
               throws org.apache.axis2.AxisFault,
                      RMMessageBuildingException
sender worker invokes this method time to time and excecute the correct actions

Throws:
org.apache.axis2.AxisFault
RMMessageBuildingException

createSequenceResponseReceived

public void createSequenceResponseReceived()
                                    throws PersistenceException
create sequence message received event has occured do the necessary state changes accordingly. this event is only relavant to the sequence started state.

Throws:
PersistenceException

removeRelationShips

public void removeRelationShips(org.apache.axis2.client.Options options)

sendApplicationMessageResponse

public void sendApplicationMessageResponse(org.apache.axis2.context.MessageContext inboundMessageContext,
                                           long inMessageNumber)
                                    throws org.apache.axis2.AxisFault,
                                           RMMessageBuildingException
Throws:
org.apache.axis2.AxisFault
RMMessageBuildingException

sequenceAcknowledgmentReceived

public void sequenceAcknowledgmentReceived(java.util.List acknowledgmentRanges)
                                    throws PersistenceException
Throws:
PersistenceException

isNumberAcknowledged

public boolean isNumberAcknowledged(long number,
                                    java.util.List acknowledgments)

applicationMessageReceivedFromClient

public void applicationMessageReceivedFromClient(RMApplicationMessage message,
                                                 org.apache.axis2.context.MessageContext messageContext)
                                          throws PersistenceException
Throws:
PersistenceException

lastMessageReceivedFromClient

public void lastMessageReceivedFromClient(RMApplicationMessage message,
                                          org.apache.axis2.context.MessageContext messageContext)
                                   throws PersistenceException
Throws:
PersistenceException

terminateMessageReceivedFromClient

public void terminateMessageReceivedFromClient()
                                        throws PersistenceException
Throws:
PersistenceException

sendTerminateSequenceMessage

public void sendTerminateSequenceMessage(org.apache.axis2.context.MessageContext inboundMessageContext)
                                  throws org.apache.axis2.AxisFault,
                                         RMMessageBuildingException
Throws:
org.apache.axis2.AxisFault
RMMessageBuildingException

save

public void save(long internalKeyID)
          throws PersistenceException
Throws:
PersistenceException

populatePersistnaceData

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

invalidCreateSequenceResponseReceived

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

soapFaultOccured

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

getSequenceID

public java.lang.String getSequenceID()

setSequenceID

public void setSequenceID(java.lang.String sequenceID)

getAckToEpr

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

setAckToEpr

public void setAckToEpr(org.apache.axis2.addressing.EndpointReference ackToEpr)

getState

public int getState()

setState

public void setState(int state)

getLastAccessedTime

public long getLastAccessedTime()

setLastAccessedTime

public void setLastAccessedTime(long lastAccessedTime)

getAxis2Info

public Axis2Info getAxis2Info()

setAxis2Info

public void setAxis2Info(Axis2Info axis2Info)

getSequenceOffer

public java.lang.String getSequenceOffer()

setSequenceOffer

public void setSequenceOffer(java.lang.String sequenceOffer)

getPersistanceDto

public RMSSequenceDto getPersistanceDto()

setPersistanceDto

public void setPersistanceDto(RMSSequenceDto persistanceDto)

isAnnonymous

public boolean isAnnonymous()

setAnnonymous

public void setAnnonymous(boolean annonymous)

getOfferedRMDSequence

public RMDSequence getOfferedRMDSequence()

setOfferedRMDSequence

public void setOfferedRMDSequence(RMDSequence offeredRMDSequence)

getErrorCallback

public MercuryErrorCallback getErrorCallback()

setErrorCallback

public void setErrorCallback(MercuryErrorCallback errorCallback)


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