acadia/zion/object/ipc_object.h

24 lines
604 B
C
Raw Normal View History

2023-06-21 23:42:21 -07:00
#pragma once
#include <glacier/status/error.h>
#include "include/ztypes.h"
#include "lib/message_queue.h"
#include "object/kernel_object.h"
class IpcObject : public KernelObject {
public:
IpcObject(){};
virtual ~IpcObject() {}
virtual glcr::ErrorCode Send(IpcMessage&& message) final;
virtual glcr::ErrorOr<IpcMessage> Recv(uint64_t data_buf_size,
uint64_t cap_buf_size) final;
2023-06-21 23:42:21 -07:00
bool HasMessages() { return !GetRecvMessageQueue().empty(); }
2023-06-21 23:42:21 -07:00
virtual MessageQueue& GetSendMessageQueue() = 0;
virtual MessageQueue& GetRecvMessageQueue() = 0;
};