A special mailbox that handles responses to a message. More...
#include <Awaiter.h>

Public Member Functions | |
| Awaiter (Endpoint *endpoint, uint64_t requestIdentifier) | |
| Construct a new ResponseAwaiter object. More... | |
| Awaiter (const T &value) | |
| Construct an awaiter with a cached value. More... | |
| Awaiter (Awaiter &&other) | |
| Move an Awaiter object. More... | |
| uint64_t | GetIdentifier () const |
| Get request identifier. More... | |
| T | GetResponse () |
| Get the response value. Will throw an exception if called before the response is received. More... | |
| bool | HasException () |
| Checks whether the result of the processing has ended with an exception. More... | |
| virtual bool | ReceiveMessage (const Node *sender, const data::Message *message) override |
| Delivery point of all messages. More... | |
| bool | WaitForResponse (const std::chrono::milliseconds &timeout) |
| Wait for the response to become available or util the timeout period ellapses. More... | |
Public Member Functions inherited from swarmio::Mailbox | |
| virtual void | Disconnect () |
| Disconnect this Mailbox from the Endpoint. More... | |
| Endpoint * | GetEndpoint () |
| Get the associated Endpoint. More... | |
| Mailbox (const Mailbox &)=delete | |
| Remove copy constructor. More... | |
| virtual void | MailboxWasConnected () noexcept |
| Called when the mailbox is attached to an already running endpoint or if the attached endpoint has just started. More... | |
| virtual void | MailboxWillBeDisconnected () noexcept |
| Called right before the mailbox is disconnected from its endpoint or if the attached endpoint is about to stop. More... | |
| virtual void | NodeDidJoin (const Node *node) noexcept |
| Called when a new Node has joined the group. More... | |
| virtual void | NodeWasDiscovered (const Node *node) noexcept |
| Called when a new Node has been discovered. More... | |
| virtual void | NodeWillLeave (const Node *node) noexcept |
| Called when a Node signals that it will leave. More... | |
| Mailbox & | operator= (const Mailbox &)=delete |
| Remove assignment operator. More... | |
| virtual | ~Mailbox () |
| Destroy the Mailbox object. More... | |
Protected Member Functions | |
| virtual T | ExtractResponse (const Node *node, const data::Message *message)=0 |
| Called when a response for the original message has been received. More... | |
| virtual bool | IsFinished () |
| Check whether the last message has been received. More... | |
Protected Member Functions inherited from swarmio::Mailbox | |
| void | FinishConstruction () |
| Called when the last constructor has finished its job. More... | |
| void | FinishMovingTo (Mailbox *other) |
| Called when message handling should be passed onto the new instance. More... | |
| Mailbox () | |
| Construct a disconnected Mailbox. More... | |
| Mailbox (Endpoint *endpoint) | |
| Construct a new Mailbox object. More... | |
| Mailbox (Mailbox &&other) | |
| Move a Mailbox object. More... | |
Private Attributes | |
| std::condition_variable | _conditionVariable |
| Condition variable to signal when the response arrives. More... | |
| std::exception_ptr | _exception = nullptr |
| The exception that was thrown while processing the response. More... | |
| std::mutex | _mutex |
| Mutex for the condition variable. More... | |
| uint64_t | _requestIdentifier |
| Request identifier. More... | |
| T | _response |
| The value of the response. More... | |
| bool | _valid |
| Set to true after the initial response has been received. More... | |
A special mailbox that handles responses to a message.
| T | Return value type |
|
inline |
|
inline |
|
inline |
|
protectedpure virtual |
Called when a response for the original message has been received.
| node | Sender node |
| message | Message |
Implemented in swarmio::services::keyvalue::ValueAwaiter, swarmio::services::ping::TimingAwaiter, swarmio::services::telemetry::UpdateAwaiter, swarmio::services::discovery::DiscoveryAwaiter, and swarmio::services::ErrorAwaiter.
|
inline |
|
inline |
|
inline |
Checks whether the result of the processing has ended with an exception.
|
inlineprotectedvirtual |
Check whether the last message has been received.
Reimplemented in swarmio::services::telemetry::UpdateAwaiter.
|
inlineoverridevirtual |
Delivery point of all messages.
| sender | The node that has sent the message |
| message | The message itself |
Reimplemented from swarmio::Mailbox.
|
inline |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |