Program Listing for File utility.hpp

Return to documentation for file (network/utility.hpp)

#ifndef FELIX_NETWORK_UTILITY_HPP
#define FELIX_NETWORK_UTILITY_HPP

#include <memory>

#include "bus.hpp"
#include "config.hpp"
#include "publisher.hpp"
#include "receiver.hpp"

namespace network::utility {
  enum class EventLoopType {
    netio_next,
    netio3_native,
    netio3_asio,
  };

  [[nodiscard]] EventLoopType get_eventloop_type(NetworkMode mode);

  [[nodiscard]] std::unique_ptr<Publisher> create_buffered_publisher(
    NetworkMode network_mode,
    const std::string& ip,
    uint32_t port,
    unsigned int netio_pn,
    unsigned int netio_ps,
    unsigned int netio_to,
    std::uint32_t max_chunk_size,
    const std::string& publisher_info,
    std::chrono::milliseconds mon_frequency);

  [[nodiscard]] std::unique_ptr<Publisher> create_zero_copy_publisher(
    NetworkMode network_mode,
    const std::string& ip,
    uint32_t port,
    unsigned int netio_pn,
    unsigned int netio_ps,
    std::uint32_t max_chunk_size,
    uint64_t dma_buffer_vaddr,
    size_t dma_size,
    const std::string& publisher_info,
    std::chrono::milliseconds mon_frequency);

  [[nodiscard]] std::unique_ptr<Receiver> create_buffered_receiver(
    NetworkMode network_mode,
    const std::string& ip,
    uint32_t port,
    unsigned int netio_pn,
    unsigned int netio_ps,
    const std::string& receiver_info);

  [[nodiscard]] std::unique_ptr<Receiver> create_unbuffered_receiver(
    NetworkMode network_mode,
    const std::string& ip,
    uint32_t port,
    unsigned int netio_pn,
    unsigned int netio_ps,
    const std::string& receiver_info);
}  // namespace network::utility

#endif