no pointers, just bytes buffers of fixed size

This commit is contained in:
2025-11-05 09:25:01 +01:00
parent 70c04af034
commit e5cb019143
2 changed files with 86 additions and 146 deletions

View File

@@ -2,7 +2,7 @@
#define asynStreamGeneratorDriver_H
#include "asynPortDriver.h"
#include <epicsRingPointer.h>
#include <epicsRingBytes.h>
#include <librdkafka/rdkafka.h>
/*******************************************************************************
@@ -62,8 +62,9 @@ struct __attribute__((__packed__)) NormalisedEvent {
uint8_t source;
uint32_t pixelId;
inline NormalisedEvent(uint64_t timestamp, uint8_t source, uint32_t pixelId)
: timestamp(timestamp), source(source), pixelId(pixelId){};
// inline NormalisedEvent(uint64_t timestamp, uint8_t source, uint32_t
// pixelId)
// : timestamp(timestamp), source(source), pixelId(pixelId){};
};
/*******************************************************************************
@@ -140,13 +141,13 @@ class asynStreamGeneratorDriver : public asynPortDriver {
const bool kafkaEnabled;
const int kafkaMaxPacketSize;
epicsRingPointer<NormalisedEvent> udpQueue;
epicsRingBytesId udpQueue;
epicsRingPointer<NormalisedEvent> monitorQueue;
epicsRingBytesId monitorQueue;
rd_kafka_t *monitorProducer;
const char *monitorTopic;
epicsRingPointer<NormalisedEvent> detectorQueue;
epicsRingBytesId detectorQueue;
rd_kafka_t *detectorProducer;
const char *detectorTopic;
@@ -155,7 +156,10 @@ class asynStreamGeneratorDriver : public asynPortDriver {
asynStatus createInt32Param(asynStatus status, char *name, int *variable,
epicsInt32 initialValue = 0);
inline void queueForKafka(NormalisedEvent *ne);
inline void queueForKafka(NormalisedEvent &&ne);
void produce(epicsRingBytesId eventQueue, rd_kafka_t *kafkaProducer,
const char *topic, const char *source);
};
#endif