Files
racket-webview/rktwebview_qt/shmqueue.h
2026-03-23 23:33:13 +01:00

52 lines
774 B
C++

#ifndef SHMQUEUE_H
#define SHMQUEUE_H
#include "shm.h"
#include <QString>
#define COMMAND_SLOT 1
#define EVENT_SLOT 2
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, QString &json_data, bool wait = false);
void enqueue(int cmd, const QString &json_data);
public:
ShmQueue(Shm *shm, ShmSlot slot, bool owner);
~ShmQueue();
};
#endif // SHMQUEUE_H