pars 0.2.1
Loading...
Searching...
No Matches
pars::ev::enqueuer Class Reference

#include <enqueuer.h>

Public Member Functions

 enqueuer (dispatcher &d, runner &r)
 
template<internal_event_c event_t>
void queue_fire (event_t ev)
 
template<template< typename > typename kind_of, network_event_c event_t, network_event_c event2_t>
requires kind_c<kind_of>
void queue_fire (event_t ev, ev::metadata< kind_of, event2_t > md)
 
template<network_event_c event_t, net::tool_c tool_t>
void queue_fire (event_t ev, const int s_id, tool_t &t, const net::pipe &p)
 
template<network_event_c event_t, net::tool_c tool_t>
void queue_sent (event_t ev, int s_id, tool_t &t, net::pipe p)
 
template<net::tool_c tool_t>
void queue_received (nngxx::msg m, int s_id, tool_t &t, net::pipe p)
 

Detailed Description

Definition at line 42 of file enqueuer.h.

Constructor & Destructor Documentation

◆ enqueuer()

pars::ev::enqueuer::enqueuer ( dispatcher & d,
runner & r )
inline

Definition at line 45 of file enqueuer.h.

46 : dispatcher_m{d}
47 , runner_m{r}
48 {
49 }

Member Function Documentation

◆ queue_fire() [1/3]

template<internal_event_c event_t>
void pars::ev::enqueuer::queue_fire ( event_t ev)
inline

Definition at line 52 of file enqueuer.h.

53 {
54 dispatcher_m.queue_back(fired{std::move(ev), {}});
55 }
fired(event_t, metadata< fired, event_t >) -> fired< event_t >

Referenced by queue_fire(), pars::net::op::recv(), and pars::net::op::send().

Here is the caller graph for this function:

◆ queue_fire() [2/3]

template<network_event_c event_t, net::tool_c tool_t>
void pars::ev::enqueuer::queue_fire ( event_t ev,
const int s_id,
tool_t & t,
const net::pipe & p )
inline

Definition at line 66 of file enqueuer.h.

67 {
68 if constexpr (std::is_same_v<event_t, creating_pipe> ||
69 std::is_same_v<event_t, pipe_created> ||
70 std::is_same_v<event_t, pipe_removed>)
71 {
72 if (dispatcher_m.terminating())
73 {
74 p.close().or_abort();
75
76 return;
77 }
78
79 if constexpr (std::is_same_v<event_t, creating_pipe>)
80 runner_m.add_pipe(p);
81 else if constexpr (std::is_same_v<event_t, pipe_removed>)
82 runner_m.remove_pipe(p);
83
84 if (!runner_m.can_exec(s_id, spec<fired<event_t>>::hash))
85 return;
86 }
87
88 dispatcher_m.queue_back(fired{std::move(ev), {s_id, t, p}});
89 }

References clev::expected< void >::or_abort().

Here is the call graph for this function:

◆ queue_fire() [3/3]

template<template< typename > typename kind_of, network_event_c event_t, network_event_c event2_t>
requires kind_c<kind_of>
void pars::ev::enqueuer::queue_fire ( event_t ev,
ev::metadata< kind_of, event2_t > md )
inline

Definition at line 60 of file enqueuer.h.

61 {
62 queue_fire(ev, md.pipe().socket_id(), md.tool(), md.pipe());
63 }
void queue_fire(event_t ev)
Definition enqueuer.h:52

References queue_fire().

Here is the call graph for this function:

◆ queue_received()

template<net::tool_c tool_t>
void pars::ev::enqueuer::queue_received ( nngxx::msg m,
int s_id,
tool_t & t,
net::pipe p )
inline

Definition at line 98 of file enqueuer.h.

99 {
100 dispatcher_m.queue_back(received{std::move(m), {s_id, t, p}});
101 }
received(event_t, metadata< received, event_t >) -> received< event_t >

Referenced by pars::net::op::recv().

Here is the caller graph for this function:

◆ queue_sent()

template<network_event_c event_t, net::tool_c tool_t>
void pars::ev::enqueuer::queue_sent ( event_t ev,
int s_id,
tool_t & t,
net::pipe p )
inline

Definition at line 92 of file enqueuer.h.

93 {
94 dispatcher_m.queue_back(sent{std::move(ev), {s_id, t, p}});
95 }
sent(event_t, metadata< sent, event_t >) -> sent< event_t >

Referenced by pars::net::op::send().

Here is the caller graph for this function:

The documentation for this class was generated from the following file: