32 const std::string
name{
""};
34 std::unordered_map<
CallbackId, std::function<void(std::string, std::shared_ptr<ADatatype>)>>
callbacks;
41 DataOutputQueue(
const std::shared_ptr<XLinkConnection> conn,
const std::string& streamName,
unsigned int maxSize = 16,
bool blocking =
true);
132 std::shared_ptr<ADatatype> val =
nullptr;
133 if(
queue.front(val) &&
dynamic_cast<T*
>(val.get())) {
145 return !
queue.empty();
156 std::shared_ptr<ADatatype> val =
nullptr;
157 if(!
queue.tryPop(val))
return nullptr;
158 return std::dynamic_pointer_cast<T>(val);
167 return tryGet<ADatatype>();
176 std::shared_ptr<T>
get() {
178 std::shared_ptr<ADatatype> val =
nullptr;
179 if(!
queue.waitAndPop(val)) {
182 return std::dynamic_pointer_cast<T>(val);
190 std::shared_ptr<ADatatype>
get() {
191 return get<ADatatype>();
202 std::shared_ptr<ADatatype> val =
nullptr;
203 if(!
queue.front(val))
return nullptr;
204 return std::dynamic_pointer_cast<T>(val);
212 std::shared_ptr<ADatatype>
front() {
213 return front<ADatatype>();
223 template <
class T,
typename Rep,
typename Period>
224 std::shared_ptr<T>
get(std::chrono::duration<Rep, Period> timeout,
bool& hasTimedout) {
226 std::shared_ptr<ADatatype> val =
nullptr;
227 if(!
queue.tryWaitAndPop(val, timeout)) {
232 return std::dynamic_pointer_cast<T>(val);
242 template <
typename Rep,
typename Period>
243 std::shared_ptr<ADatatype>
get(std::chrono::duration<Rep, Period> timeout,
bool& hasTimedout) {
244 return get<ADatatype>(timeout, hasTimedout);
256 std::vector<std::shared_ptr<T>> messages;
257 queue.consumeAll([&messages](std::shared_ptr<ADatatype>& msg) {
260 messages.push_back(std::dynamic_pointer_cast<T>(std::move(msg)));
272 return tryGetAll<ADatatype>();
282 std::vector<std::shared_ptr<T>>
getAll() {
285 std::vector<std::shared_ptr<T>> messages;
286 queue.waitAndConsumeAll([&messages](std::shared_ptr<ADatatype>& msg) {
289 messages.push_back(std::dynamic_pointer_cast<T>(std::move(msg)));
301 std::vector<std::shared_ptr<ADatatype>>
getAll() {
302 return getAll<ADatatype>();
312 template <
class T,
typename Rep,
typename Period>
313 std::vector<std::shared_ptr<T>>
getAll(std::chrono::duration<Rep, Period> timeout,
bool& hasTimedout) {
316 std::vector<std::shared_ptr<T>> messages;
317 hasTimedout = !
queue.waitAndConsumeAll(
318 [&messages](std::shared_ptr<ADatatype>& msg) {
321 messages.push_back(std::dynamic_pointer_cast<T>(std::move(msg)));
335 template <
typename Rep,
typename Period>
336 std::vector<std::shared_ptr<ADatatype>>
getAll(std::chrono::duration<Rep, Period> timeout,
bool& hasTimedout) {
337 return getAll<ADatatype>(timeout, hasTimedout);
354 const std::string& streamName,
355 unsigned int maxSize = 16,
356 bool blocking =
true,
428 void send(
const std::shared_ptr<RawBuffer>& rawMsg);
435 void send(
const std::shared_ptr<ADatatype>& msg);
451 bool send(
const std::shared_ptr<RawBuffer>& rawMsg, std::chrono::milliseconds timeout);
460 bool send(
const std::shared_ptr<ADatatype>& msg, std::chrono::milliseconds timeout);
469 bool send(
const ADatatype& msg, std::chrono::milliseconds timeout);