import akka.actor.ActorSelection;
import akka.actor.ActorSystem;
import akka.actor.Props;
+import akka.event.LoggingAdapter;
+
+import java.util.Map;
/**
* The RaftActorContext contains that portion of the RaftActors state that
*/
void setLastApplied(long lastApplied);
+ /**
+ *
+ * @param replicatedLog
+ */
+ public void setReplicatedLog(ReplicatedLog replicatedLog);
+
/**
* @return A representation of the log
*/
* @return The ActorSystem associated with this context
*/
ActorSystem getActorSystem();
+
+ /**
+ * Get the logger to be used for logging messages
+ *
+ * @return
+ */
+ LoggingAdapter getLogger();
+
+ /**
+ * 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 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
+ */
+ public 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
+ */
+ public ConfigParams getConfigParams();
}