sample_peer.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #pragma once
  2. #include <functional>
  3. #include "rotor.hpp"
  4. #include "net/messages.h"
  5. namespace syncspirit::test {
  6. namespace r = rotor;
  7. namespace message = syncspirit::net::message;
  8. struct sample_peer_t : r::actor_base_t {
  9. using configure_callback_t = std::function<void(r::plugin::plugin_base_t &)>;
  10. using request_ptr_t = r::intrusive_ptr_t<message::block_request_t>;
  11. struct response_t {
  12. size_t block_index;
  13. std::string data;
  14. };
  15. static const constexpr size_t next_block = 1000000;
  16. using responses_t = std::list<response_t>;
  17. using requests_t = std::list<request_ptr_t>;
  18. using r::actor_base_t::actor_base_t;
  19. void configure(r::plugin::plugin_base_t &plugin) noexcept override;
  20. void on_start_reading(message::start_reading_t &) noexcept;
  21. void on_block_request(message::block_request_t &req) noexcept;
  22. void push_response(const std::string& data, size_t index = next_block) noexcept;
  23. responses_t responses;
  24. size_t start_reading = 0;
  25. configure_callback_t configure_callback;
  26. requests_t requests;
  27. };
  28. }