Radix Relay
Hybrid mesh communications with Signal Protocol encryption
Loading...
Searching...
No Matches
radix_relay::nostr::request_tracker Class Reference

Tracks pending Nostr requests and matches them with responses. More...

#include <request_tracker.hpp>

Public Member Functions

 request_tracker (const std::shared_ptr< boost::asio::io_context > &io_context)
 Constructs a request tracker.
 
auto track (const std::string &event_id, std::function< void(const protocol::ok &)> callback, std::chrono::milliseconds timeout) -> void
 Tracks a request with callback-based completion.
 
auto has_pending (const std::string &event_id) const -> bool
 Checks if an event ID has a pending request.
 
auto cancel_all_pending () -> void
 Cancels all pending requests.
 
template<typename ResponseType >
auto resolve (const std::string &event_id, const ResponseType &response) -> void
 Resolves a pending request with a response.
 
template<typename ResponseType = protocol::ok>
auto async_track (std::string event_id, std::chrono::milliseconds timeout) -> boost::asio::awaitable< ResponseType >
 Tracks a request with coroutine-based completion.
 

Detailed Description

Tracks pending Nostr requests and matches them with responses.

Associates event IDs with callbacks or coroutine awaitables, implementing timeout handling for requests that don't receive responses.

Definition at line 20 of file request_tracker.hpp.

Constructor & Destructor Documentation

◆ request_tracker()

radix_relay::nostr::request_tracker::request_tracker ( const std::shared_ptr< boost::asio::io_context > &  io_context)
inlineexplicit

Constructs a request tracker.

Parameters
io_contextBoost.Asio io_context for timers

Definition at line 36 of file request_tracker.hpp.

Member Function Documentation

◆ async_track()

template<typename ResponseType = protocol::ok>
auto radix_relay::nostr::request_tracker::async_track ( std::string  event_id,
std::chrono::milliseconds  timeout 
) -> boost::asio::awaitable<ResponseType>
inline

Tracks a request with coroutine-based completion.

Template Parameters
ResponseTypeType of response to await (ok or eose)
Parameters
event_idEvent ID to track
timeoutMaximum time to wait for response
Returns
Awaitable that yields the response
Exceptions
std::runtime_erroron timeout

Definition at line 106 of file request_tracker.hpp.

◆ cancel_all_pending()

auto radix_relay::nostr::request_tracker::cancel_all_pending ( ) -> void
inline

Cancels all pending requests.

Definition at line 73 of file request_tracker.hpp.

◆ has_pending()

auto radix_relay::nostr::request_tracker::has_pending ( const std::string &  event_id) const -> bool
inline

Checks if an event ID has a pending request.

Parameters
event_idEvent ID to check
Returns
true if pending, false otherwise

Definition at line 68 of file request_tracker.hpp.

◆ resolve()

template<typename ResponseType >
auto radix_relay::nostr::request_tracker::resolve ( const std::string &  event_id,
const ResponseType &  response 
) -> void
inline

Resolves a pending request with a response.

Template Parameters
ResponseTypeType of response (ok or eose)
Parameters
event_idEvent ID to resolve
responseResponse data

Definition at line 86 of file request_tracker.hpp.

◆ track()

auto radix_relay::nostr::request_tracker::track ( const std::string &  event_id,
std::function< void(const protocol::ok &)>  callback,
std::chrono::milliseconds  timeout 
) -> void
inline

Tracks a request with callback-based completion.

Parameters
event_idEvent ID to track
callbackFunction to call when OK response received
timeoutMaximum time to wait for response

Definition at line 45 of file request_tracker.hpp.


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