import akka.actor.ActorSelection;
import akka.actor.ActorSystem;
import akka.actor.Props;
-import akka.event.LoggingAdapter;
-
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Supplier;
import java.util.Map;
+import org.slf4j.Logger;
/**
* The RaftActorContext contains that portion of the RaftActors state that
*/
void setLastApplied(long lastApplied);
+ /**
+ *
+ * @param replicatedLog
+ */
+ void setReplicatedLog(ReplicatedLog replicatedLog);
+
/**
* @return A representation of the log
*/
ActorSystem getActorSystem();
/**
+ * Get the logger to be used for logging messages
*
* @return
*/
- LoggingAdapter getLogger();
+ Logger getLogger();
/**
- * Get a mapping of peer id's their addresses
+ * Get a mapping of peerId's to their addresses
+ *
* @return
+ *
*/
Map<String, String> getPeerAddresses();
/**
+ * Get the address of the peer as a String. This is the same format in
+ * which a consumer would provide the address
*
* @param peerId
- * @return
+ * @return The address of the peer or null if the address has not yet been
+ * resolved
*/
String getPeerAddress(String peerId);
+
+ /**
+ * Add to actor peers
+ * @param name
+ * @param address
+ */
+ void addToPeers(String name, String address);
+
+ /**
+ *
+ * @param name
+ */
+ void removePeer(String name);
+
+ /**
+ * Given a peerId return the corresponding actor
+ * <p>
+ *
+ *
+ * @param peerId
+ * @return The actorSelection corresponding to the peer or null if the
+ * address has not yet been resolved
+ */
+ ActorSelection getPeerActorSelection(String peerId);
+
+ /**
+ * Set Peer Address can be called at a later time to change the address of
+ * a known peer.
+ *
+ * <p>
+ * Throws an IllegalStateException if the peer is unknown
+ *
+ * @param peerId
+ * @param peerAddress
+ */
+ void setPeerAddress(String peerId, String peerAddress);
+
+ /**
+ * @return ConfigParams
+ */
+ ConfigParams getConfigParams();
+
+ SnapshotManager getSnapshotManager();
+
+ boolean hasFollowers();
+
+ long getTotalMemory();
+
+ @VisibleForTesting
+ void setTotalMemoryRetriever(Supplier<Long> retriever);
+
}