#ifndef SHMQUEUE_H #define SHMQUEUE_H #include "shm.h" #include 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