package me.prettyprint.hector.api;
import me.prettyprint.cassandra.service.clock.MicrosecondsClockResolution;
import me.prettyprint.cassandra.service.clock.MicrosecondsSyncClockResolution;
import me.prettyprint.cassandra.service.clock.MillisecondsClockResolution;
import me.prettyprint.cassandra.service.clock.SecondsClockResolution;
import java.io.Serializable;
/**
* Clock interface to allow client define their own behavior for Clock Resolution.
*
* @see {@link SecondsClockResolution}
* @see {@link MillisecondsClockResolution}
* @see {@link MicrosecondsClockResolution}
* @see {@link MicrosecondsSyncClockResolution}
*
* @author Patricio Echague (pechague@gmail.com)
*/
public interface ClockResolution extends Serializable {
/**
* Provides a clock resolution with seconds granularity.
* @see {@link SecondsClockResolution}
*/
static final String SECONDS ="SECONDS";
/**
* Provides a clock resolution with milliseconds granularity.
* @see {@link MillisecondsClockResolution}
*/
static final String MILLISECONDS = "MILLISECONDS";
/**
* Provides a clock resolution with microseconds granularity.
* @see {@link MicrosecondsClockResolution}
*/
static final String MICROSECONDS = "MICROSECONDS";
/**
* Provides a clock resolution with microseconds granularity and assuring a unique timestamp
* within and across threads.
* @see {@link MicrosecondsSyncClockResolution}
*/
static final String MICROSECONDS_SYNC = "MICROSECONDS_SYNC";
/**
* Creates a timestamp.
*/
public long createClock();
}