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...

#include <juce_CIPropertyExchangeCache.h>

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.

◆ 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).

◆ 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.

◆ 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.

◆ addChunk()

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

Adds a message chunk for the provided transaction id.

◆ notify()

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

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

◆ getOngoingTransactions()

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

Returns all ongoing transactions.


The documentation for this class was generated from the following file:
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram