Files
2026-03-25 01:27:39 +01:00

50 lines
761 B
C++

#ifndef SHMQUEUE_H
#define SHMQUEUE_H
#include "shm.h"
#include <string>
typedef struct __ShmQueueItem__
{
int cmd;
ShmPlace data_place;
ShmPlace next;
ShmPlace prev;
} ShmQueueItem;
typedef struct __ShmQueue_
{
ShmPlace first;
ShmPlace last;
int count;
} ShmQueueStart;
class ShmQueue
{
private:
Shm *_shm;
private:
ShmQueueStart *_queue;
ShmSem *_queue_sem;
bool _owner;
private:
void cleanup();
public:
int depth();
public:
bool dequeue(int &cmd, std::string &json_data, bool wait = false);
void enqueue(int cmd, const std::string &json_data);
void enqueue(int cmd);
public:
ShmQueue(Shm *shm, ShmSlot slot, bool owner);
~ShmQueue();
};
#endif // SHMQUEUE_H