Core Library 1.7.0.0 Library containing core utilities and tools for threading, networking, logging, INI and CSV file management etc.

Public Member Functions | Private Attributes | List of all members
core_lib::asio::udp::SimpleMulticastSender Class Referencefinal

A simplified Multicast sender, which uses the class MessageHeader as the message header type. More...

`#include <SimpleMulticastSender.h>`

## Public Member Functions
| SimpleMulticastSender ()=delete
| Default constructor - deleted.
| SimpleMulticastSender (boost_iocontext_t &ioContext, const defs::connection_t &multicastConnection, const std::string &interfaceAddress="", bool enableLoopback=true, eMulticastTTL ttl=eMulticastTTL::sameSubnet, size_t sendBufferSize=DEFAULT_UDP_BUF_SIZE)
| Initialisation constructor. More...
| SimpleMulticastSender (const defs::connection_t &multicastConnection, const std::string &interfaceAddress="", bool enableLoopback=true, eMulticastTTL ttl=eMulticastTTL::sameSubnet, size_t sendBufferSize=DEFAULT_UDP_BUF_SIZE)
| Initialisation constructor. More...
| SimpleMulticastSender (const SimpleMulticastSender &)=delete
| Copy constructor - deleted.
SimpleMulticastSender & | operator= (const SimpleMulticastSender &)=delete
| Copy assignment operator - deleted.
| SimpleMulticastSender (SimpleMulticastSender &&)=delete
| Move constructor - deleted.
SimpleMulticastSender & | operator= (SimpleMulticastSender &&)=delete
| Move assignment operator - deleted.
| ~SimpleMulticastSender ()=default
| Default destructor.
defs::connection_t | MulticastConnection () const
| Retrieve multicast connection details. More...
std::string | InterfaceAddress () const
| Retrieve interface IP address. More...
bool | SendMessage (int32_t messageId, const defs::connection_t &responseAddress=defs::NULL_CONNECTION)
| Send a header-only message to the receiver. More...
bool | SendMessage (const defs::char_buffer_t &message, int32_t messageId, const defs::connection_t &responseAddress=defs::NULL_CONNECTION)
| Send a header plus message buffer to the receiver. More...
template<typename T , class A = serialize::archives::out_port_bin_t>
bool | SendMessage (const T &message, int32_t messageId, const defs::connection_t &responseAddress=defs::NULL_CONNECTION)
| Send a full message to the server. More...
bool | SendMessage (const defs::char_buffer_t &message)
| Send a message buffer to the receiver. More...

## Private Attributes
messages::MessageBuilder | m_messageBuilder {}
| Default message builder object of type core_lib::asio::messages::MessageBuilder.
MulticastTypedSender< messages::MessageBuilder > | m_multicastTypedSender
| Our actual typed Multicast sender object.

## Detailed Description

A simplified Multicast sender, which uses the class MessageHeader as the message header type.

## Constructor & Destructor Documentation

## ◆ SimpleMulticastSender() [1/2]

core_lib::asio::udp::SimpleMulticastSender::SimpleMulticastSender | ( | boost_iocontext_t & | ioContext,
|  | const defs::connection_t & | multicastConnection,
|  | const std::string & | interfaceAddress = `""`,
|  | bool | enableLoopback = `true`,
|  | eMulticastTTL | ttl = `eMulticastTTL::sameSubnet`,
|  | size_t | sendBufferSize = `DEFAULT_UDP_BUF_SIZE`
| ) |  |

Initialisation constructor.

Parameters

  [in] | ioContext | - External boost IO context to manage ASIO.
  [in] | multicastConnection | - Connection object describing target multicast group address and port.
  [in] | interfaceAddress | - Optional interface IP address for outgoing network messages.
  [in] | enableLoopback | - Optional allow multicasts to loopback on same adapter.
  [in] | ttl | - Optional time-to-live for multicast messages.
  [in] | sendBufferSize | - Socket send option to control send buffer size.

Typically use this constructor when managing a pool of threads using an instance of core_lib::asio::IoContextThreadGroup in your application to manage a pool of std::threads. This means you can use a single thread pool and all ASIO operations will be executed using this thread pool managed by a single IO context. This is the recommended constructor.

## ◆ SimpleMulticastSender() [2/2]

core_lib::asio::udp::SimpleMulticastSender::SimpleMulticastSender | ( | const defs::connection_t & | multicastConnection,
|  | const std::string & | interfaceAddress = `""`,
|  | bool | enableLoopback = `true`,
|  | eMulticastTTL | ttl = `eMulticastTTL::sameSubnet`,
|  | size_t | sendBufferSize = `DEFAULT_UDP_BUF_SIZE`
| ) |  |
| explicit

Initialisation constructor.

Parameters

  [in] | multicastConnection | - Connection object describing target multicast group address and port.
  [in] | interfaceAddress | - Optional interface IP address for outgoing network messages.
  [in] | enableLoopback | - Optional allow multicasts to loopback on same adapter.
  [in] | ttl | - Optional time-to-live for multicast messages.
  [in] | sendBufferSize | - Socket send option to control send buffer size.

Typically use this constructor when managing a pool of threads using an instance of core_lib::asio::IoContextThreadGroup in your application to manage a pool of std::threads. This means you can use a single thread pool and all ASIO operations will be executed using this thread pool managed by a single IO context. This is the recommended constructor.

## Member Function Documentation

## ◆ InterfaceAddress()

std::string core_lib::asio::udp::SimpleMulticastSender::InterfaceAddress | ( |  | ) | const

Retrieve interface IP address.

Returns
  - Interface IP address.

## ◆ MulticastConnection()

auto core_lib::asio::udp::SimpleMulticastSender::MulticastConnection | ( |  | ) | const

Retrieve multicast connection details.

Returns
  - Connection object describing target multicast group address and port.

## ◆ SendMessage() [1/4]

bool core_lib::asio::udp::SimpleMulticastSender::SendMessage | ( | int32_t | messageId,
|  | const defs::connection_t & | responseAddress = `defs::NULL_CONNECTION`
| ) |  |

Send a header-only message to the receiver.

Parameters

  [in] | messageId | - Unique message ID to insert into message header.
  [in] | responseAddress | - (Optional) The address and port where the receiver should send the response, the default value will mean the response address will point to this client socket.

Returns
  Returns the success state of the send as a boolean.

## ◆ SendMessage() [2/4]

bool core_lib::asio::udp::SimpleMulticastSender::SendMessage | ( | const defs::char_buffer_t & | message,
|  | int32_t | messageId,
|  | const defs::connection_t & | responseAddress = `defs::NULL_CONNECTION`
| ) |  |

Send a header plus message buffer to the receiver.

Parameters

  [in] | message | - The message buffer.
  [in] | messageId | - Unique message ID to insert into message header.
  [in] | responseAddress | - (Optional) The address and port where the receiver should send the response, the default value will mean the response address will point to this client socket.

Returns
  Returns the success state of the send as a boolean.

## ◆ SendMessage() [3/4]

template<typename T , class A = serialize::archives::out_port_bin_t>

bool core_lib::asio::udp::SimpleMulticastSender::SendMessage | ( | const T & | message,
|  | int32_t | messageId,
|  | const defs::connection_t & | responseAddress = `defs::NULL_CONNECTION`
| ) |  |
| inline

Send a full message to the server.

Parameters

  [in] | message | - The message of type T to send behind the header serialized to an boost::serialization-compatible archive of type A.
  [in] | messageId | - Unique message ID to insert into message header.
  [in] | responseAddress | - (Optional) The address and port where the receiver should send the response, the default value will mean the response address will point to this client socket.

Returns
  Returns the success state of the send as a boolean.

## ◆ SendMessage() [4/4]

bool core_lib::asio::udp::SimpleMulticastSender::SendMessage | ( | const defs::char_buffer_t & | message | ) |

Send a message buffer to the receiver.

Parameters

  [in] | message | - The message buffer.

Returns
  Returns the success state of the send as a boolean.

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

- D:/Projects/CoreLibrary/Include/Asio/SimpleMulticastSender.h
- D:/Projects/CoreLibrary/Source/Asio/SimpleMulticastSender.cpp