src/PosixMQCommand.cpp
branchv_0
changeset 1 291bdd97fcff
parent 0 e8205d9206fb
child 2 1eef3d465863
--- a/src/PosixMQCommand.cpp	Sat Feb 26 01:21:14 2022 +0100
+++ b/src/PosixMQCommand.cpp	Tue Mar 01 00:47:49 2022 +0100
@@ -31,6 +31,7 @@
 #include <relpipe/cli/CLI.h>
 
 #include "PosixMQCommand.h"
+#include "PosixMQ.h"
 
 using namespace std;
 using namespace relpipe::cli;
@@ -41,18 +42,25 @@
 namespace posixmq {
 
 void PosixMQCommand::process(std::shared_ptr<writer::RelationalWriter> writer, Configuration& configuration) {
-	wstring_convert < codecvt_utf8<wchar_t>> convertor; // UTF-8 is required for PosixMQ
 	vector<AttributeMetadata> metadata;
 
-	writer->startRelation(L"posix_mq",{
+	std::shared_ptr<PosixMQ> mq(PosixMQ::open(convertor.to_bytes(configuration.queue)));
+
+	writer->startRelation(configuration.relation,{
+		{L"queue", TypeId::STRING},
 		{L"message", TypeId::STRING}
 	}, true);
-	
-	writer->writeAttribute(L"TODO: read messages from POSIX MQ");
 
+	for (int i = configuration.messageCount; i > 0; i--) {
+		writer->writeAttribute(configuration.queue);
+		writer->writeAttribute(convertor.from_bytes(mq->receive()));
+	}
 
 }
 
+PosixMQCommand::~PosixMQCommand() {
+}
+
 }
 }
 }
\ No newline at end of file