14 #include <unordered_map>
19 #include <XLink/XLinkPublicDefines.h>
20 #include <XLink/XLinkTime.h>
39 constexpr
static int STREAM_OPEN_RETRIES = 5;
40 constexpr
static std::chrono::milliseconds WAIT_FOR_STREAM_RETRY{50};
44 streamId_t streamId{INVALID_STREAM_ID};
47 XLinkStream(
const std::shared_ptr<XLinkConnection> conn,
const std::string& name, std::size_t maxWriteSize);
55 void write(
const void*
data, std::size_t
size);
56 void write(
const std::uint8_t*
data, std::size_t
size);
57 void write(
const std::vector<std::uint8_t>&
data);
58 std::vector<std::uint8_t> read();
59 std::vector<std::uint8_t> read(XLinkTimespec& timestampReceived);
60 void read(std::vector<std::uint8_t>&
data);
61 void read(std::vector<std::uint8_t>&
data, XLinkTimespec& timestampReceived);
63 void writeSplit(
const void*
data, std::size_t
size, std::size_t
split);
64 void writeSplit(
const std::vector<uint8_t>&
data, std::size_t
split);
68 bool write(
const void*
data, std::size_t
size, std::chrono::milliseconds timeout);
69 bool write(
const std::uint8_t*
data, std::size_t
size, std::chrono::milliseconds timeout);
70 bool write(
const std::vector<std::uint8_t>&
data, std::chrono::milliseconds timeout);
71 bool read(std::vector<std::uint8_t>&
data, std::chrono::milliseconds timeout);
72 bool readMove(
StreamPacketDesc& packet,
const std::chrono::milliseconds timeout);
76 [[deprecated(
"use readMove()")]] streamPacketDesc_t* readRaw();
78 [[deprecated(
"use readMove(packet, timeout)")]]
bool readRaw(streamPacketDesc_t*& pPacket, std::chrono::milliseconds timeout);
80 [[deprecated]]
void readRawRelease();
82 streamId_t getStreamId()
const;
86 const XLinkError_t
status = X_LINK_ERROR;
89 using std::runtime_error::runtime_error;
91 XLinkError(XLinkError_t statusID, std::string stream,
const std::string& message)
92 : runtime_error(message),
status(statusID), streamName(
std::move(stream)) {}