org.apache.sandesha.server
Class ServerStorageManager

java.lang.Object
  extended byorg.apache.sandesha.server.ServerStorageManager
All Implemented Interfaces:
IStorageManager

public class ServerStorageManager
extends java.lang.Object
implements IStorageManager

ServerStorageManager is the access point for the SandeshaQueue from server side.

Author:
Chamikara Jayalath, Jaliya Ekanayaka

Field Summary
protected static Log log
           
 
Constructor Summary
ServerStorageManager()
           
 
Method Summary
 void addAcknowledgement(RMMessageContext rmMessageContext)
           
 void addCreateSequenceRequest(RMMessageContext rmMessageContext)
           
 void addCreateSequenceResponse(RMMessageContext rmMessageContext)
           
 void addIncomingSequence(java.lang.String sequenceId)
           
 void addOffer(java.lang.String msgID, java.lang.String offerID)
           
 void addOutgoingSequence(java.lang.String sequenceId)
           
 void addRequestedSequence(java.lang.String seqId)
           
 void addSendMsgNo(java.lang.String seqId, long msgNo)
           
 void addSequence(java.lang.String sequenceId)
          Will be used to add a new Sequence Hash to the In Queue.
 RMMessageContext checkForResponseMessage(java.lang.String sequenceId, java.lang.String requestMsgId)
           
 void clearStorage()
           
 java.lang.String getAcksTo(java.lang.String seqId)
           
 java.lang.String getKeyFromOutgoingSeqId(java.lang.String seqId)
           
 long getLastIncomingMsgNo(java.lang.String seqId)
           
 java.util.Map getListOfMessageNumbers(java.lang.String sequenceID)
          This gives a sorted(by keys) map of messageIds present for a sequence.
 long getNextMessageNumber(java.lang.String sequenceID)
           
 RMMessageContext getNextMessageToProcess(java.lang.Object seq)
          A very important method.
 RMMessageContext getNextMessageToSend()
          This is used to get a random message from the out queue Basically server sender will use this.
 java.lang.Object getNextSeqToProcess()
           
 java.lang.String getOffer(java.lang.String msgID)
           
 java.lang.String getOutgoingSeqenceIdOfIncomingMsg(RMMessageContext msg)
           
 java.lang.String getOutgoingSeqOfMsg(java.lang.String msgId)
           
 boolean hasLastIncomingMsgReceived(java.lang.String seqId)
           
 void init()
           
 void insertFault(RMMessageContext rmMsgCtx)
           
 void insertIncomingMessage(RMMessageContext rmMessageContext)
           
 void insertOutgoingMessage(RMMessageContext msg)
           
 void insertTerminateSeqMessage(RMMessageContext terminateSeqMessage)
           
 boolean isMessageExist(java.lang.String sequenceID, long messageNumber)
           
 boolean isRequestedSeqPresent(java.lang.String seqId)
           
 boolean isResponseSequenceExist(java.lang.String sequenceID)
           
 boolean isSentMsg(java.lang.String seqId, long msgNo)
           
 boolean isSequenceComplete(java.lang.String seqId)
           
 boolean isSequenceExist(java.lang.String sequenceID)
          Used to find out weather the sequence with this id has already been created.
 void removeCallback()
           
 void sendAck(java.lang.String sequenceId)
           
 void setAcknowledged(java.lang.String seqID, long msgNumber)
           
 void setAckReceived(java.lang.String seqId, long msgNo)
           
 void setAcksTo(java.lang.String seqId, java.lang.String acksTo)
           
 boolean setApprovedOutSequence(java.lang.String createSeqId, java.lang.String newOutSequenceId)
           
 void setCallback(Callback cb)
           
 void setTemporaryOutSequence(java.lang.String sequenceId, java.lang.String outSequenceId)
           
 void setTerminateReceived(java.lang.String seqId)
           
 void setTerminateSend(java.lang.String seqId)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

protected static Log log
Constructor Detail

ServerStorageManager

public ServerStorageManager()
Method Detail

setTerminateSend

public void setTerminateSend(java.lang.String seqId)
Specified by:
setTerminateSend in interface IStorageManager

setTerminateReceived

public void setTerminateReceived(java.lang.String seqId)
Specified by:
setTerminateReceived in interface IStorageManager

getNextMessageToProcess

public RMMessageContext getNextMessageToProcess(java.lang.Object seq)
A very important method. Makes life easy for the thread or thread pool that is using this. Every thread just have to create an instance of ServerStorageManager and keep calling getNextMessageToProcess() and processing messages. The method will try to give the messages from the same sequence id. But if that doesnt hv processable messages it will go for a new sequence.

Specified by:
getNextMessageToProcess in interface IStorageManager

setAcknowledged

public void setAcknowledged(java.lang.String seqID,
                            long msgNumber)
Specified by:
setAcknowledged in interface IStorageManager

init

public void init()
Specified by:
init in interface IStorageManager

isSequenceExist

public boolean isSequenceExist(java.lang.String sequenceID)
Used to find out weather the sequence with this id has already been created.

Specified by:
isSequenceExist in interface IStorageManager

isResponseSequenceExist

public boolean isResponseSequenceExist(java.lang.String sequenceID)
Specified by:
isResponseSequenceExist in interface IStorageManager

getNextSeqToProcess

public java.lang.Object getNextSeqToProcess()
Specified by:
getNextSeqToProcess in interface IStorageManager

getNextMessageToSend

public RMMessageContext getNextMessageToSend()
This is used to get a random message from the out queue Basically server sender will use this.

Specified by:
getNextMessageToSend in interface IStorageManager

addSequence

public void addSequence(java.lang.String sequenceId)
Will be used to add a new Sequence Hash to the In Queue.

Specified by:
addSequence in interface IStorageManager

getListOfMessageNumbers

public java.util.Map getListOfMessageNumbers(java.lang.String sequenceID)
This gives a sorted(by keys) map of messageIds present for a sequence. This will be used to send Acks.

Specified by:
getListOfMessageNumbers in interface IStorageManager

isMessageExist

public boolean isMessageExist(java.lang.String sequenceID,
                              long messageNumber)
Specified by:
isMessageExist in interface IStorageManager

addCreateSequenceResponse

public void addCreateSequenceResponse(RMMessageContext rmMessageContext)
Specified by:
addCreateSequenceResponse in interface IStorageManager

addCreateSequenceRequest

public void addCreateSequenceRequest(RMMessageContext rmMessageContext)
Specified by:
addCreateSequenceRequest in interface IStorageManager

addAcknowledgement

public void addAcknowledgement(RMMessageContext rmMessageContext)
Specified by:
addAcknowledgement in interface IStorageManager

setTemporaryOutSequence

public void setTemporaryOutSequence(java.lang.String sequenceId,
                                    java.lang.String outSequenceId)
Specified by:
setTemporaryOutSequence in interface IStorageManager

setApprovedOutSequence

public boolean setApprovedOutSequence(java.lang.String createSeqId,
                                      java.lang.String newOutSequenceId)
Specified by:
setApprovedOutSequence in interface IStorageManager

getNextMessageNumber

public long getNextMessageNumber(java.lang.String sequenceID)
Specified by:
getNextMessageNumber in interface IStorageManager

insertOutgoingMessage

public void insertOutgoingMessage(RMMessageContext msg)
Specified by:
insertOutgoingMessage in interface IStorageManager

insertIncomingMessage

public void insertIncomingMessage(RMMessageContext rmMessageContext)
Specified by:
insertIncomingMessage in interface IStorageManager

checkForResponseMessage

public RMMessageContext checkForResponseMessage(java.lang.String sequenceId,
                                                java.lang.String requestMsgId)
Specified by:
checkForResponseMessage in interface IStorageManager

insertTerminateSeqMessage

public void insertTerminateSeqMessage(RMMessageContext terminateSeqMessage)
Specified by:
insertTerminateSeqMessage in interface IStorageManager

setAckReceived

public void setAckReceived(java.lang.String seqId,
                           long msgNo)
Specified by:
setAckReceived in interface IStorageManager

insertFault

public void insertFault(RMMessageContext rmMsgCtx)
Specified by:
insertFault in interface IStorageManager

addSendMsgNo

public void addSendMsgNo(java.lang.String seqId,
                         long msgNo)
Specified by:
addSendMsgNo in interface IStorageManager

isSentMsg

public boolean isSentMsg(java.lang.String seqId,
                         long msgNo)
Specified by:
isSentMsg in interface IStorageManager

addOutgoingSequence

public void addOutgoingSequence(java.lang.String sequenceId)
Specified by:
addOutgoingSequence in interface IStorageManager

addIncomingSequence

public void addIncomingSequence(java.lang.String sequenceId)
Specified by:
addIncomingSequence in interface IStorageManager

getOutgoingSeqOfMsg

public java.lang.String getOutgoingSeqOfMsg(java.lang.String msgId)
Specified by:
getOutgoingSeqOfMsg in interface IStorageManager

addRequestedSequence

public void addRequestedSequence(java.lang.String seqId)
Specified by:
addRequestedSequence in interface IStorageManager

isRequestedSeqPresent

public boolean isRequestedSeqPresent(java.lang.String seqId)
Specified by:
isRequestedSeqPresent in interface IStorageManager

getOutgoingSeqenceIdOfIncomingMsg

public java.lang.String getOutgoingSeqenceIdOfIncomingMsg(RMMessageContext msg)
Specified by:
getOutgoingSeqenceIdOfIncomingMsg in interface IStorageManager

getLastIncomingMsgNo

public long getLastIncomingMsgNo(java.lang.String seqId)
Specified by:
getLastIncomingMsgNo in interface IStorageManager

hasLastIncomingMsgReceived

public boolean hasLastIncomingMsgReceived(java.lang.String seqId)
Specified by:
hasLastIncomingMsgReceived in interface IStorageManager

getKeyFromOutgoingSeqId

public java.lang.String getKeyFromOutgoingSeqId(java.lang.String seqId)
Specified by:
getKeyFromOutgoingSeqId in interface IStorageManager

setAcksTo

public void setAcksTo(java.lang.String seqId,
                      java.lang.String acksTo)
Specified by:
setAcksTo in interface IStorageManager

getAcksTo

public java.lang.String getAcksTo(java.lang.String seqId)
Specified by:
getAcksTo in interface IStorageManager

setCallback

public void setCallback(Callback cb)
Specified by:
setCallback in interface IStorageManager

removeCallback

public void removeCallback()
Specified by:
removeCallback in interface IStorageManager

addOffer

public void addOffer(java.lang.String msgID,
                     java.lang.String offerID)
Specified by:
addOffer in interface IStorageManager

getOffer

public java.lang.String getOffer(java.lang.String msgID)
Specified by:
getOffer in interface IStorageManager

clearStorage

public void clearStorage()
Specified by:
clearStorage in interface IStorageManager

isSequenceComplete

public boolean isSequenceComplete(java.lang.String seqId)
Specified by:
isSequenceComplete in interface IStorageManager

sendAck

public void sendAck(java.lang.String sequenceId)
Specified by:
sendAck in interface IStorageManager