//
// Copyright 2019 Ettus Research, a National Instruments Brand
//
// SPDX-License-Identifier: GPL-3.0-or-later
//

#pragma once

#include <uhdlib/transport/io_service.hpp>
#include <uhdlib/transport/link_if.hpp>
#include <tuple>

namespace uhd { namespace transport {

enum class link_type_t { CTRL = 0, ASYNC_MSG, TX_DATA, RX_DATA };

//! Contains all information regarding a link interface
using both_links_t = std::tuple<uhd::transport::send_link_if::sptr,
    size_t, // num_send_frames
    uhd::transport::recv_link_if::sptr,
    size_t, // num_recv_frames
    bool, // lossy_xport
    bool>; // packet flow control

/*!
 * Parameters for link creation.
 */
struct link_params_t
{
    size_t recv_frame_size = 0;
    size_t send_frame_size = 0;
    size_t num_recv_frames = 0;
    size_t num_send_frames = 0;
    size_t recv_buff_size  = 0;
    size_t send_buff_size  = 0;
};


}} // namespace uhd::transport