DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
WIBEthTransmitter.hpp File Reference
#include "dpdklibs/sender/CallbackGate.hpp"
#include "dpdklibs/sender/TxEngine.hpp"
#include "dpdklibs/wibeth/WIBEthPacketBuilder.hpp"
#include <array>
#include <atomic>
#include <cstddef>
#include <cstdint>
#include <functional>
#include <map>
#include <memory>
#include <mutex>
#include <string>
#include <utility>
#include <vector>
Include dependency graph for WIBEthTransmitter.hpp:

Go to the source code of this file.

Classes

class  dunedaq::dpdklibs::sender::WIBEthTransmitter< Backend >
struct  dunedaq::dpdklibs::sender::WIBEthTransmitter< Backend >::StreamStats

Namespaces

namespace  dunedaq
 The DUNE-DAQ namespace.
namespace  dunedaq::dpdklibs
namespace  dunedaq::dpdklibs::sender

Detailed Description

WIBEth transmitter core: per-stream sequencing and accounting, DataMoveCallbackRegistry callback registration, callback-lifetime gating, and the post-transmit observer hook. Templated on the TX Backend (TxEngine.hpp concept) and, at the registration call site, on the registry and configuration-pointer types. The complete transmission callback is therefore unit-testable without EAL, a NIC, or an OKS database, while the plugin instantiates it against the datahandlinglibs registry.

Lifecycle contract (see CallbackGate.hpp):

  • register_streams() registers one gate-capturing lambda per stream, at most once per process, then arms the gate. The pinned registry has no unregister or replace operation. A later call after a tombstone (configure after scrap on the same instance) only re-arms.
  • tombstone() drains every in-flight dispatch and blocks new ones. Call it before releasing any resource the Backend uses. The destructor tombstones, so a registry that outlives this object dispatches to a drop: the lambdas capture the gate, not the transmitter.

Payload contract: PayloadT provides a data member convertible to const void* addressing at least one complete WIBEthFrame. fdreadoutlibs::types::DUNEWIBEthTypeAdapter satisfies this.

This is part of the DUNE DAQ , copyright 2020. Licensing/copyright details are in the COPYING file that you should have received with this code.

Definition in file WIBEthTransmitter.hpp.