Ignore chains and states default directories.
[rhynodge.git] / src / main / java / net / pterodactylus / reactor / State.java
index 9e2face..278032e 100644 (file)
@@ -25,6 +25,14 @@ package net.pterodactylus.reactor;
 public interface State {
 
        /**
+        * Returns the time when this state was retrieved.
+        *
+        * @return The time when this state was retrieved (in millseconds since Jan
+        *         1, 1970 UTC)
+        */
+       long time();
+
+       /**
         * Whether the state was successfully retrieved. This method should only
         * return {@code true} if a meaningful result could be retrieved; if e. g. a
         * service is currently not reachable, this method should return false
@@ -36,6 +44,25 @@ public interface State {
        boolean success();
 
        /**
+        * Returns the number of consecutive failures. This method only returns a
+        * meaningful number iff {@link #success()} returns {@code false}. If
+        * {@link #success()} returns {@code false} for the first time after
+        * returning {@code true} and this method is called after {@link #success()}
+        * it will return {@code 1}.
+        *
+        * @return The number of consecutive failures
+        */
+       int failCount();
+
+       /**
+        * Sets the fail count of this state.
+        *
+        * @param failCount
+        *            The fail count of this state
+        */
+       void setFailCount(int failCount);
+
+       /**
         * If {@link #success()} returns {@code false}, this method may return a
         * {@link Throwable} to give some details for the reason why retrieving the
         * state was not possible. For example, network-based {@link Query}s might