All Downloads are FREE. Search and download functionalities are using the official Maven repository.

quickfix.SystemTimeSource Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 * 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 [email protected] if any conditions of this licensing
 * are not clear to you.
 ******************************************************************************/

package quickfix;

import java.time.LocalDateTime;

/**
 * Interface for obtaining system time. A system time source should be used
 * instead of direct system time to facilitate unit testing.
 */
public interface SystemTimeSource {

    /**
     * Obtain the current time.
     *
     * Do NOT use this for measuring elapsed time but use
     * {@link #getTimeFromNanos()} instead.
     *
     * @return current (possible simulated) time
     */
    long getTime();

    /**
     * Obtain the current nano time.
     *
     * This should ONLY be used to measure elapsed time. Use {@link #getTime()}
     * for getting the current system time.
     *
     * @return current (possible simulated) nano time.
     */
    long getTimeFromNanos();

    /**
     * Obtain current LocalDateTime.
     *
     * @return current (possible simulated) time up to nanosecond precision.
     */
    LocalDateTime getNow();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy