15#ifndef ACTIONENGINE_DISTRIBUTED_PEERS_H_ 
   16#define ACTIONENGINE_DISTRIBUTED_PEERS_H_ 
   22#include <absl/base/nullability.h> 
   24#include "actionengine/distributed/sinks.h" 
   26namespace act::distributed {
 
   34  std::optional<std::string> value;
 
   35  std::optional<double> minute_qps;
 
   38using ServiceGetter = absl::AnyInvocable<absl::Status(
 
   39    GetRequest* absl_nonnull request, GetResponse* absl_nonnull response)>;
 
   43  virtual ~PeerPicker() = 
default;
 
   44  [[nodiscard]] 
virtual std::optional<ServiceGetter> PickPeer(
 
   45      std::string_view key) 
const = 0;
 
   48class NoPeers final : 
public PeerPicker {
 
   50  [[nodiscard]] std::optional<ServiceGetter> PickPeer(
 
   51      std::string_view )
 const override {