COMMS
Template library intended to help with implementation of communication protocols.
Namespaces | Functions
dispatch.h File Reference

Contains extra logic to help with dispatching message types and objects. More...

#include <type_traits>
#include "comms/CompileControl.h"
#include "comms/Message.h"
#include "comms/details/dispatch_impl.h"
#include "comms/util/type_traits.h"
#include "comms/details/tag.h"

Go to the source code of this file.

Namespaces

 comms
 Main namespace for all classes / functions of COMMS library.
 

Functions

template<typename TAllMessages , typename TId , typename TMsg , typename THandler >
auto comms::dispatchMsg (TId &&id, std::size_t index, TMsg &msg, THandler &handler) -> details::MessageInterfaceDispatchRetType< typename std::decay< decltype(handler)>::type >
 Dispatch message object into appropriate handle() function in the provided handler using either "polymorphic" or "static binary search" behavior. More...
 
template<typename TAllMessages , typename TId , typename TMsg , typename THandler >
auto comms::dispatchMsg (TId &&id, TMsg &msg, THandler &handler) -> details::MessageInterfaceDispatchRetType< typename std::decay< decltype(handler)>::type >
 Dispatch message object into appropriate handle() function in the provided handler using either "polymorphic" or "static binary search" behavior. More...
 
template<typename TAllMessages , typename TMsg , typename THandler >
auto comms::dispatchMsg (TMsg &msg, THandler &handler) -> details::MessageInterfaceDispatchRetType< typename std::decay< decltype(handler)>::type >
 Dispatch message object into appropriate handle() function in the provided handler using either "polymorphic" or "static binary search" behavior. More...
 
template<typename TMsg , typename THandler >
constexpr bool comms::dispatchMsgIsDirect ()
 Compile time check whether the message object can use its own polymorphic dispatch() (see Polymorphic Dispatch Message for Handling) when dispatchMsg() is invoked. More...
 
template<typename TMsg , typename THandler >
constexpr bool comms::dispatchMsgIsDirect (TMsg &&msg, THandler &&handler)
 Similar to other dispatchMsgIsDirect(), but can help in deducing template arguments. More...
 
template<typename TAllMessages , typename TMsg , typename THandler >
constexpr bool comms::dispatchMsgIsPolymorphic ()
 Compile time check whether the dispatchMsg() will use "polymorphic" (including "direct") dispatch for provided tuple of messages and handler. More...
 
template<typename TAllMessages , typename TMsg , typename THandler >
constexpr bool comms::dispatchMsgIsPolymorphic (TMsg &&msg, THandler &&handler)
 Similar to other dispatchMsgIsPolymorphic(), but can help in deducing template arguments. More...
 
template<typename TAllMessages , typename TMsg , typename THandler >
constexpr bool comms::dispatchMsgIsStaticBinSearch ()
 Compile time check whether the dispatchMsg() will use "static binary search" dispatch for provided tuple of messages and handler. More...
 
template<typename TAllMessages , typename TMsg , typename THandler >
constexpr bool comms::dispatchMsgIsStaticBinSearch (TMsg &&msg, THandler &&handler)
 Similar to other dispatchMsgIsStaticBinSearch(), but can help in deducing template arguments. More...
 
template<typename TAllMessages , typename TId , typename TMsg , typename THandler >
auto comms::dispatchMsgLinearSwitch (TId &&id, std::size_t index, TMsg &msg, THandler &handler) -> details::MessageInterfaceDispatchRetType< typename std::decay< decltype(handler)>::type >
 Dispatch message object into appropriate handle() function in the provided handler using linear switch behavior. More...
 
template<typename TAllMessages , typename TId , typename TMsg , typename THandler >
auto comms::dispatchMsgLinearSwitch (TId &&id, TMsg &msg, THandler &handler) -> details::MessageInterfaceDispatchRetType< typename std::decay< decltype(handler)>::type >
 Dispatch message object into appropriate handle() function in the provided handler using linear switch behavior. More...
 
template<typename TAllMessages , typename TMsg , typename THandler >
auto comms::dispatchMsgLinearSwitch (TMsg &msg, THandler &handler) -> details::MessageInterfaceDispatchRetType< typename std::decay< decltype(handler)>::type >
 Dispatch message object into appropriate handle() function in the provided handler using linear switch behavior. More...
 
template<typename TAllMessages , typename TId , typename TMsg , typename THandler >
auto comms::dispatchMsgPolymorphic (TId &&id, std::size_t index, TMsg &msg, THandler &handler) -> details::MessageInterfaceDispatchRetType< typename std::decay< decltype(handler)>::type >
 Dispatch message object into appropriate handle() function in the provided handler using polymorphic behavior. More...
 
template<typename TAllMessages , typename TId , typename TMsg , typename THandler >
auto comms::dispatchMsgPolymorphic (TId &&id, TMsg &msg, THandler &handler) -> details::MessageInterfaceDispatchRetType< typename std::decay< decltype(handler)>::type >
 Dispatch message object into appropriate handle() function in the provided handler using polymorphic behavior. More...
 
template<typename TAllMessages , typename TMsg , typename THandler >
auto comms::dispatchMsgPolymorphic (TMsg &msg, THandler &handler) -> details::MessageInterfaceDispatchRetType< typename std::decay< decltype(handler)>::type >
 Dispatch message object into appropriate handle() function in the provided handler using polymorphic behavior. More...
 
template<typename TAllMessages , typename TId , typename TMsg , typename THandler >
auto comms::dispatchMsgStaticBinSearch (TId &&id, std::size_t index, TMsg &msg, THandler &handler) -> details::MessageInterfaceDispatchRetType< typename std::decay< decltype(handler)>::type >
 Dispatch message object into appropriate handle() function in the provided handler using static binary search behavior. More...
 
template<typename TAllMessages , typename TId , typename TMsg , typename THandler >
auto comms::dispatchMsgStaticBinSearch (TId &&id, TMsg &msg, THandler &handler) -> details::MessageInterfaceDispatchRetType< typename std::decay< decltype(handler)>::type >
 Dispatch message object into appropriate handle() function in the provided handler using static binary search behavior. More...
 
template<typename TAllMessages , typename TMsg , typename THandler >
auto comms::dispatchMsgStaticBinSearch (TMsg &msg, THandler &handler) -> details::MessageInterfaceDispatchRetType< typename std::decay< decltype(handler)>::type >
 Dispatch message object into appropriate handle() function in the provided handler using static binary search behavior. More...
 
template<typename TAllMessages , typename TId , typename THandler >
bool comms::dispatchMsgType (TId &&id, std::size_t index, THandler &handler)
 Dispatch message id into appropriate handle() function in the provided handler using either "polymorphic" or "static binary search" behavior. More...
 
template<typename TAllMessages , typename TId , typename THandler >
bool comms::dispatchMsgType (TId &&id, THandler &handler)
 Dispatch message id into appropriate handle() function in the provided handler using either "polymorphic" or "static binary search" behavior. More...
 
template<typename TAllMessages , typename TId >
std::size_t comms::dispatchMsgTypeCountStaticBinSearch (TId &&id)
 Count number of message types in the provided tuple that have the requested numeric ID. More...
 
template<typename TAllMessages >
constexpr bool comms::dispatchMsgTypeIsPolymorphic ()
 Compile time check whether the dispatchMsgType() will use "polymorphic" dispatch for provided tuple of messages. More...
 
template<typename TAllMessages >
constexpr bool comms::dispatchMsgTypeIsStaticBinSearch ()
 Compile time check whether the dispatchMsgType() or dispatchMsgType() will use "static binary search" dispatch for provided tuple of messages. More...
 
template<typename TAllMessages , typename TId , typename THandler >
bool comms::dispatchMsgTypeLinearSwitch (TId &&id, std::size_t index, THandler &handler)
 Dispatch message id into appropriate handle() function in the provided handler using linear switch behavior. More...
 
template<typename TAllMessages , typename TId , typename THandler >
bool comms::dispatchMsgTypeLinearSwitch (TId &&id, THandler &handler)
 Dispatch message id into appropriate handle() function in the provided handler using linear switch behavior. More...
 
template<typename TAllMessages , typename TId , typename THandler >
bool comms::dispatchMsgTypePolymorphic (TId &&id, std::size_t index, THandler &handler)
 Dispatch message id into appropriate handle() function in the provided handler using polymorphic behavior. More...
 
template<typename TAllMessages , typename TId , typename THandler >
bool comms::dispatchMsgTypePolymorphic (TId &&id, THandler &handler)
 Dispatch message id into appropriate handle() function in the provided handler using polymorphic behavior. More...
 
template<typename TAllMessages , typename TId , typename THandler >
bool comms::dispatchMsgTypeStaticBinSearch (TId &&id, std::size_t index, THandler &handler)
 Dispatch message id into appropriate handle() function in the provided handler using static binary search behavior. More...
 
template<typename TAllMessages , typename TId , typename THandler >
bool comms::dispatchMsgTypeStaticBinSearch (TId &&id, THandler &handler)
 Dispatch message id into appropriate handle() function in the provided handler using static binary search behavior. More...
 

Detailed Description

Contains extra logic to help with dispatching message types and objects.