001: package org.objectweb.celtix.ws.rm.persistence;
002:
003: import java.math.BigInteger;
004: import java.util.Collection;
005: import java.util.Map;
006:
007: import org.objectweb.celtix.ws.rm.Identifier;
008:
009: public interface RMStore {
010:
011: /**
012: * Initialises the store.
013: * @param params the store initialisation parameters
014: */
015: void init(Map<String, String> params);
016:
017: /**
018: * Create a source sequence in the persistent store, with the sequence attributes as specified in the
019: * <code>RMSourceSequence</code> object.
020: * @param seq the sequence
021: */
022: void createSourceSequence(RMSourceSequence seq);
023:
024: /**
025: * Create a destination sequence in the persistent store, with the sequence attributes as specified in the
026: * <code>RMSDestinationSequence</code> object.
027: * @param seq the sequence
028: */
029: void createDestinationSequence(RMDestinationSequence seq);
030:
031: /**
032: * Remove the source sequence with the specified identifier from persistent store.
033: * @param seq the sequence
034: */
035: void removeSourceSequence(Identifier seq);
036:
037: /**
038: * Remove the destination sequence with the specified identifier from persistent store.
039: * @param seq the sequence
040: */
041: void removeDestinationSequence(Identifier seq);
042:
043: /**
044: * Retrieves all sequences managed by the identified RM source endpoint
045: * from persistent store.
046: *
047: * @param endpointIdentifier the identifier for the source
048: * @return the collection of sequences
049: */
050: Collection<RMSourceSequence> getSourceSequences(
051: String endpointIdentifier);
052:
053: /**
054: * Retrieves all sequences managed by the identified RM destination endpoint
055: * from persistent store.
056: *
057: * @param endpointIdentifier the identifier for the destination
058: * @return the collection of sequences
059: */
060: Collection<RMDestinationSequence> getDestinationSequences(
061: String endpointIdentifier);
062:
063: /**
064: * Retrieves the outbound/inbound messages stored for the source/destination sequence with
065: * the given identifier.
066: * @param sid the source sequence identifier
067: * @param outbound true if the message is outbound
068: * @return the collection of messages
069: * *
070: */
071: Collection<RMMessage> getMessages(Identifier sid, boolean outbound);
072:
073: /**
074: * Called by an RM source upon processing an outbound message. The <code>RMMessage</code>
075: * parameter is null for non application (RM protocol) messages.
076: *
077: * @param seq the source sequence
078: * @param msg the outgoing message
079: */
080: void persistOutgoing(RMSourceSequence seq, RMMessage msg);
081:
082: /**
083: * Called by an RM source upon processing an outbound message. The <code>RMMessage</code>
084: * parameter is null for non application (RM protocol) messages.
085: *
086: * @param seq the destination sequence
087: * @param msg the incoming message
088: */
089: void persistIncoming(RMDestinationSequence seq, RMMessage msg);
090:
091: /**
092: * Removes the messages with the given message numbers and identifiers from the store of
093: * outbound/inbound messages.
094: *
095: * @param sid the identifier of the source sequence
096: * @param messageNr the collection of message numbers
097: * @param outbound true if the message is outbound
098: */
099: void removeMessages(Identifier sid,
100: Collection<BigInteger> messageNrs, boolean outbound);
101: }
|