summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/output
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2016-04-09 15:19:06 +0200
committer Miodrag Milanovic <mmicko@gmail.com>2016-04-09 15:19:43 +0200
commita14994c6c01f04227ccc7f0824da8de942b72b69 (patch)
treefc8ceb45db724b84fc92feee8e774e0a525e69b9 /src/osd/modules/output
parent2f974586d644d6e8b9469ed4c2bf6fa432924f22 (diff)
Added skeleton for network output (nw)
Diffstat (limited to 'src/osd/modules/output')
-rw-r--r--src/osd/modules/output/network.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/osd/modules/output/network.cpp b/src/osd/modules/output/network.cpp
new file mode 100644
index 00000000000..13504054d85
--- /dev/null
+++ b/src/osd/modules/output/network.cpp
@@ -0,0 +1,59 @@
+// license:BSD-3-Clause
+// copyright-holders:Miodrag Milanovic
+/***************************************************************************
+
+ network.cpp
+
+ Network output interface.
+
+*******************************************************************c********/
+
+#include "output_module.h"
+#include "modules/osdmodule.h"
+#include <uv.h>
+
+#include <mutex>
+#include <thread>
+
+class output_network : public osd_module, public output_module
+{
+public:
+ output_network()
+ : osd_module(OSD_OUTPUT_PROVIDER, "network"), output_module(), m_loop(nullptr)
+ {
+ }
+ virtual ~output_network() {
+ }
+
+ virtual int init(const osd_options &options) override {
+ m_loop = new uv_loop_t;
+ int err = uv_loop_init(m_loop);
+ if (err) {
+ return 1;
+ }
+
+ m_working_thread = std::thread([](output_network* self) { self->process_output(); }, this);
+ return 0;
+ }
+ virtual void exit() override {
+ m_working_thread.join();
+ uv_loop_close(m_loop);
+ delete m_loop;
+ }
+
+ // output_module
+
+ virtual void notify(const char *outname, INT32 value) override { }
+
+ // implementation
+ void process_output()
+ {
+ uv_run(m_loop, UV_RUN_DEFAULT);
+ }
+
+private:
+ std::thread m_working_thread;
+ uv_loop_t* m_loop;
+};
+
+MODULE_DEFINITION(OUTPUT_NETWORK, output_network)