/******************************************************************************* * Copyright (c) quickfixengine.org All rights reserved. * * This file is part of the QuickFIX FIX Engine * * This file may be distributed under the terms of the quickfixengine.org * license as defined by quickfixengine.org and appearing in the file * LICENSE included in the packaging of this file. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. * * See http://www.quickfixengine.org/LICENSE for licensing information. * * Contact ask@quickfixengine.org if any conditions of this licensing * are not clear to you. ******************************************************************************/ package quickfix; import java.util.Collection; import java.util.Date; import java.io.IOException; /** * Used by a Session to store and retrieve messages for resend purposes. * * @see quickfix.Session */ public interface MessageStore { /** * Adds a raw fix messages to the store with the given sequence number. * (Most implementations just append the message data to the store so be * careful about assuming random access behavior.) * * @param sequence * the sequence number * @param message * the raw FIX message string * @return true is successful, false otherwise * @throws IOException * IO error */ boolean set(int sequence, String message) throws IOException; /** * Get messages within sequence number range (inclusive). Used for message * resend requests. * * @param startSequence * the starting message sequence number. * @param endSequence * the ending message sequence number. * @param messages * the retrieved messages (out parameter) * @throws IOException * IO error */ void get(int startSequence, int endSequence, Collection<String> messages) throws IOException; int getNextSenderMsgSeqNum() throws IOException; int getNextTargetMsgSeqNum() throws IOException; void setNextSenderMsgSeqNum(int next) throws IOException; void setNextTargetMsgSeqNum(int next) throws IOException; void incrNextSenderMsgSeqNum() throws IOException; void incrNextTargetMsgSeqNum() throws IOException; /** * Get the session creation time. * * @return the session creation time. * @throws IOException * IO error */ Date getCreationTime() throws IOException; /** * Reset the message store. Sequence numbers are set back to 1 and stored * messages are erased. The session creation time is also set to the time of * the reset. * * @throws IOException * IO error */ void reset() throws IOException; /** * Refresh session state from a <em>shared</em> state storage (e.g. database, * file, ...). Refresh will not work for message stores without shared state * (e.g., MemoryStore). These stores should log an session error, at a minimum, * or throw an exception. */ void refresh() throws IOException; }