+
+ /**
+ * 'Birth'
+ */
+ struct GNUNET_TIME_Absolute birth;
+
+ /**
+ * How many times a PeerID was put in this sampler.
+ */
+ uint32_t num_peers;
+
+ /**
+ * How many times this sampler changed the peer_id.
+ */
+ uint32_t num_change;
+
+ /**
+ * The file name this sampler element should log to
+ */
+ #ifdef TO_FILE
+ char *file_name;
+ #endif /* TO_FILE */
+};
+
+/**
+ * Callback that is called from _get_rand_peer() when the PeerID is ready.
+ *
+ * @param cls the closure given alongside this function.
+ * @param id the PeerID that was returned
+ */
+typedef void
+(*RPS_sampler_rand_peer_ready_cont) (void *cls,
+ const struct GNUNET_PeerIdentity *id);
+
+
+/**
+ * Closure for #sampler_mod_get_rand_peer() and #sampler_get_rand_peer
+ */
+struct GetPeerCls
+{
+ /**
+ * DLL
+ */
+ struct GetPeerCls *next;
+
+ /**
+ * DLL
+ */
+ struct GetPeerCls *prev;
+
+ /**
+ * The sampler this function operates on.
+ */
+ struct RPS_Sampler *sampler;
+
+ /**
+ * The task for this function.
+ */
+ struct GNUNET_SCHEDULER_Task *get_peer_task;
+
+ /**
+ * The callback
+ */
+ RPS_sampler_rand_peer_ready_cont cont;
+
+ /**
+ * The closure to the callback @e cont
+ */
+ void *cont_cls;
+
+ /**
+ * The address of the id to be stored at
+ */
+ struct GNUNET_PeerIdentity *id;