49 job(std::size_t j_id,
int s_id, std::size_t h, std::any ke)
53 , event_kind_m{std::move(ke)}
65 template<
template<
typename>
typename kind_of,
event_c event_t>
67 std::is_same_v<event_t, nngxx::msg>)
70 return std::any_cast<kind_of<event_t>>(std::move(event_kind_m));
73 template<
template<
typename>
typename kind_of,
event_c event_t>
75 !std::is_same_v<event_t, nngxx::msg>)
89 std::size_t
id()
const {
return id_m; }
93 std::size_t
spec_hash()
const {
return spec_hash_m; }
95 auto format_to(std::format_context& ctx)
const ->
decltype(ctx.out())
97 return std::format_to(ctx.out(),
"spec:0x{:X}",
spec_hash());
105 std::size_t spec_hash_m;
106 std::any event_kind_m;
109template<
template<
typename>
typename kind_of, event_c event_t>
110 requires kind_c<kind_of>
111static std::size_t compute_spec_hash(
const kind_of<event_t>& ke)
113 if constexpr (std::is_same_v<kind_of<event_t>, received<nngxx::msg>>)
114 return ke.msg_hash();
116 return spec<kind_of<event_t>>::hash;
119template<
template<
typename>
typename kind_of, event_c event_t>
120 requires kind_c<kind_of>
121static job make_job(std::size_t j_id, kind_of<event_t> ke)
123 auto h = compute_spec_hash(ke);
125 return job(j_id, ke.md().socket_id(), h,
126 std::make_any<kind_of<event_t>>(std::move(ke)));
received< event_t > event()
job & operator=(job &&j)=default
auto format_to(std::format_context &ctx) const -> decltype(ctx.out())
job & operator=(const job &)=delete
job(std::size_t j_id, int s_id, std::size_t h, std::any ke)
kind_of< event_t > event()
void set_id(std::size_t id)
std::size_t spec_hash() const
constexpr auto is_same_kind_v
static event_t to_event(const nngxx::msg &m)