31#ifndef DW_FRAMEWORK_CHANNEL_HPP_
32#define DW_FRAMEWORK_CHANNEL_HPP_
37#include <dw/core/context/Context.h>
39#include <dw/core/language/Function.hpp>
40#include <dw/core/container/BaseString.hpp>
70 virtual void getSyncObjs(dw::core::span<NvSciSyncObj>& syncObjs) = 0;
85 virtual void getWaitFences(
void* data, dw::core::span<NvSciSyncFence>& waitFences) = 0;
99 virtual void setSignalFences(
void* data, dw::core::span<const NvSciSyncFence> postFences) = 0;
107 auto* waiter =
dynamic_cast<SyncWaiter*
>(
this);
108 if (waiter ==
nullptr)
110 throw Exception(DW_BAD_CAST,
"ChannelObject::PacketPool: not a SyncWaiter");
118 if (signaler ==
nullptr)
120 throw Exception(DW_BAD_CAST,
"ChannelObject::PacketPool: not a SyncSignaler");
134 virtual dwStatus
wait(dwTime_t timeout) = 0;
168 virtual dwStatus
send(
void* data) = 0;
246 virtual dwStatus
connect(dwTime_t timeout) = 0;
virtual dwStatus recv(GenericData *data)=0
virtual dwStatus release(void *data)=0
virtual dwStatus wait(dwTime_t timeout)=0
virtual void setOnDataReady(void *opaque, OnDataReady onDataReady)=0
dw::core::Function< void()> OnDataReady
SyncWaiter & getSyncWaiter()
SyncSignaler & getSyncSignaler()
virtual dwStatus get(GenericData *data)=0
virtual dwStatus send(void *data)=0
virtual void getSyncObjs(dw::core::span< NvSciSyncObj > &syncObjs)=0
virtual void setSignalFences(void *data, dw::core::span< const NvSciSyncFence > postFences)=0
virtual void getWaitFences(void *data, dw::core::span< NvSciSyncFence > &waitFences)=0
virtual Producer * getProducer(GenericDataReference ref)=0
virtual const ChannelParams & getParams() const =0
virtual ~ChannelObject()=default
virtual Consumer * getConsumer(GenericDataReference ref)=0
virtual bool isConnected() const =0
virtual dwStatus connect(dwTime_t timeout)=0
virtual bool hasClients() const =0
static constexpr dwTime_t CHN_WAIT_TIMEOUT_US