Loading...
Searching...
No Matches
midi_ci::InitiatorPropertyExchangeCache Class Reference

Accumulates message chunks that have been sent by another device in response to a transaction initiated by a local device. More...

Public Member Functions

 InitiatorPropertyExchangeCache ()
 
 ~InitiatorPropertyExchangeCache ()
 
 InitiatorPropertyExchangeCache (InitiatorPropertyExchangeCache &&) noexcept
 
InitiatorPropertyExchangeCacheoperator= (InitiatorPropertyExchangeCache &&) noexcept
 
std::optional< Token64primeCache (uint8_t maxSimultaneousRequests, std::function< void(const PropertyExchangeResult &)> onDone)
 Picks an unused request ID, and prepares the cache for that ID to accumulate message chunks.
 
bool terminate (Token64)
 Terminates/cancels an ongoing transaction.
 
std::optional< Token64getTokenForRequestId (RequestID) const
 If there's a transaction ongoing with the given request id, returns the token uniquely identifying that transaction, otherwise returns nullopt.
 
std::optional< RequestIDgetRequestIdForToken (Token64) const
 If the token refers to an ongoing transaction, returns the request id of that transaction.
 
void addChunk (RequestID, const Message::DynamicSizePropertyExchange &chunk)
 Adds a message chunk for the provided transaction id.
 
void notify (RequestID, Span< const std::byte > header)
 Updates the transaction state based on the contents of the provided notification.
 
std::vector< Token64getOngoingTransactions () const
 Returns all ongoing transactions.
 

Detailed Description

Accumulates message chunks that have been sent by another device in response to a transaction initiated by a local device.

Constructor & Destructor Documentation

◆ InitiatorPropertyExchangeCache() [1/2]

midi_ci::InitiatorPropertyExchangeCache::InitiatorPropertyExchangeCache ( )

◆ ~InitiatorPropertyExchangeCache()

midi_ci::InitiatorPropertyExchangeCache::~InitiatorPropertyExchangeCache ( )

◆ InitiatorPropertyExchangeCache() [2/2]

midi_ci::InitiatorPropertyExchangeCache::InitiatorPropertyExchangeCache ( InitiatorPropertyExchangeCache && )
noexcept

Member Function Documentation

◆ operator=()

InitiatorPropertyExchangeCache & midi_ci::InitiatorPropertyExchangeCache::operator= ( InitiatorPropertyExchangeCache && )
noexcept

◆ primeCache()

std::optional< Token64 > midi_ci::InitiatorPropertyExchangeCache::primeCache ( uint8_t maxSimultaneousRequests,
std::function< void(const PropertyExchangeResult &)> onDone )

Picks an unused request ID, and prepares the cache for that ID to accumulate message chunks.

Incoming chunks added with addChunk are generated by another device acting as a responder.

References primeCache().

Referenced by primeCache().

◆ terminate()

bool midi_ci::InitiatorPropertyExchangeCache::terminate ( Token64 )

Terminates/cancels an ongoing transaction.

Returns true if the termination had an effect (i.e. the transaction was still ongoing), or false otherwise (the transaction already ended or never started).

References terminate().

Referenced by terminate().

◆ getTokenForRequestId()

std::optional< Token64 > midi_ci::InitiatorPropertyExchangeCache::getTokenForRequestId ( RequestID ) const

If there's a transaction ongoing with the given request id, returns the token uniquely identifying that transaction, otherwise returns nullopt.

References getTokenForRequestId().

Referenced by getTokenForRequestId().

◆ getRequestIdForToken()

std::optional< RequestID > midi_ci::InitiatorPropertyExchangeCache::getRequestIdForToken ( Token64 ) const

If the token refers to an ongoing transaction, returns the request id of that transaction.

Otherwise, returns an invalid request id.

References getRequestIdForToken().

Referenced by getRequestIdForToken().

◆ addChunk()

void midi_ci::InitiatorPropertyExchangeCache::addChunk ( RequestID ,
const Message::DynamicSizePropertyExchange & chunk )

Adds a message chunk for the provided transaction id.

References addChunk().

Referenced by addChunk().

◆ notify()

void midi_ci::InitiatorPropertyExchangeCache::notify ( RequestID ,
Span< const std::byte > header )

Updates the transaction state based on the contents of the provided notification.

References notify().

Referenced by notify().

◆ getOngoingTransactions()

std::vector< Token64 > midi_ci::InitiatorPropertyExchangeCache::getOngoingTransactions ( ) const

Returns all ongoing transactions.

References getOngoingTransactions().

Referenced by getOngoingTransactions().

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram