9#ifndef BOOST_REDIS_EXEC_FSM_HPP
10#define BOOST_REDIS_EXEC_FSM_HPP
12#include <boost/redis/detail/multiplexer.hpp>
14#include <boost/asio/cancellation_type.hpp>
15#include <boost/system/error_code.hpp>
22namespace boost::redis::detail {
25enum class exec_action_type
36 exec_action_type type_;
37 system::error_code ec_;
38 std::size_t bytes_read_;
41 exec_action(exec_action_type type) noexcept
45 exec_action(system::error_code ec, std::size_t bytes_read = 0u) noexcept
46 : type_{exec_action_type::done}
48 , bytes_read_{bytes_read}
51 exec_action_type type()
const {
return type_; }
52 system::error_code error()
const {
return ec_; }
53 std::size_t bytes_read()
const {
return bytes_read_; }
58 multiplexer* mpx_{
nullptr};
59 std::shared_ptr<multiplexer::elem> elem_;
62 exec_fsm(multiplexer& mpx, std::shared_ptr<multiplexer::elem> elem) noexcept
64 , elem_(std::move(elem))
67 exec_action resume(
bool connection_is_open, asio::cancellation_type_t cancel_state);