20#include <unordered_map>
55 PacketSize packetMaxSize = DefaultMaxPacketSize);
71 PacketSize packetMaxSize = DefaultMaxPacketSize);
97 void sendA(
const void* data,
size_t dataSize);
105 void sendB(
const void* data,
size_t dataSize);
137 using MulticastClientPtr = std::unique_ptr<
OnixS::
Networking::MulticastClient>;
138 class AsyncSecondarySender;
142 static
void destruct(MulticastClientPtr& client);
143 static
void send(MulticastClientPtr& client, const
void* data,
size_t dataSize);
144 void validateDataSize(
size_t dataSize) const;
146 MulticastClientPtr& getFeed(
NetFeedRole::Enum role) noexcept;
147 const MulticastClientPtr& getFeed(
NetFeedRole::Enum role) const noexcept;
154 MulticastClientPtr feedA_;
155 MulticastClientPtr feedB_;
156 std::unique_ptr<AsyncSecondarySender> asyncSecondarySender_;
206 std::unordered_map<NetFeedType::Enum, MulticastTargetPtr> targets_;
#define ONIXS_CME_MDH_TESTING_NAMESPACE_END
#define ONIXS_CME_MDH_TESTING_NAMESPACE_BEGIN
#define ONIXS_CMEMDH_EXPORTED
#define ONIXS_CMEMDH_NODISCARD
The collection of parameters defining feed connection.
Collection of parameters affecting recovery feeds behavior.
Collection of parameters affecting real-time feeds behavior.
~MulticastSender()
Releases all configured multicast targets.
MulticastSender(const MulticastSender &)=delete
MulticastSender & operator=(const MulticastSender &)=delete
Threading::Event send(NetFeedType::Enum target, const void *data, size_t dataSize)
Sends a datagram to the requested network feed type.
MulticastSender(const FeedSettings &feedSettings, Messaging::TimeSpan arbitrageDelay=Messaging::TimeSpan{}, ReplayDelayer &delayPolicy=CombinedReplayDelayer::service())
Initializes multicast targets from the feed settings.
MulticastTargetPtr & getTarget(NetFeedType::Enum target)
Returns the multicast target configured for the requested network feed type.
~MulticastTarget()
Leaves joined multicast groups and releases owned multicast clients.
void sendB(const void *data, size_t dataSize)
Sends a datagram to feed B when feed B is configured.
NetFeedRole::Enum secondaryFeed() const noexcept
Returns the feed role used as the secondary feed.
void sendA(const void *data, size_t dataSize)
Sends a datagram to feed A when feed A is configured.
NetFeedRole::Enum primaryFeed() const noexcept
Returns the feed role used as the primary feed.
void sendSecondary(const void *data, size_t dataSize)
Sends a datagram immediately to the secondary feed when it is configured.
bool hasSecondary() const noexcept
Indicates whether the configured layout has a secondary feed.
Threading::Event send(const void *data, size_t dataSize)
Sends a datagram to the primary feed and sends to the secondary feed when it is configured.
static constexpr PacketSize DefaultMaxPacketSize
Default maximum datagram payload size accepted by a directly constructed multicast target.
void sendPrimary(const void *data, size_t dataSize)
Sends a datagram to the primary feed.
MulticastTarget(const RealtimeFeedSettings &feedSettings, Messaging::TimeSpan arbitrageDelay=Messaging::TimeSpan{}, ReplayDelayer &delayPolicy=CombinedReplayDelayer::service(), PacketSize packetMaxSize=DefaultMaxPacketSize)
Initializes the target from realtime multicast feed settings.
MulticastTarget(const MulticastRecoveryFeedSettings &feedSettings, Messaging::TimeSpan arbitrageDelay=Messaging::TimeSpan{}, ReplayDelayer &delayPolicy=CombinedReplayDelayer::service(), PacketSize packetMaxSize=DefaultMaxPacketSize)
Initializes the target from multicast recovery feed settings.
std::unique_ptr< MulticastTarget > MulticastTargetPtr
SharedFuture< void > Event
Completion signal for an asynchronous operation that does not produce a value.
Messaging::UInt16 PacketSize
Integral type for measuring packets.
static ReplayDelayer & service()
Returns the instance reference.
Feed roles (primary, secondary).
Enum
List of known feed roles.
@ A
Identifies primary feed (A).
Enum
Feed types based on type of market data service.