summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine.cpp
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2017-01-04 16:15:57 +0100
committer Miodrag Milanovic <mmicko@gmail.com>2017-01-04 16:15:57 +0100
commit63e3f487751eb096152e6e6bd90d8b47643a496b (patch)
tree3e42b162973ac8153a261c1a1351fbae4b09e748 /src/emu/machine.cpp
parent47c4f47bd40def91566dda49cc378d4ae0d63e37 (diff)
Added initial HTTP/HTTPS webserver/websocket server support (nw)
Diffstat (limited to 'src/emu/machine.cpp')
-rw-r--r--src/emu/machine.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp
index 91999a8307e..6785a1ccfed 100644
--- a/src/emu/machine.cpp
+++ b/src/emu/machine.cpp
@@ -84,6 +84,9 @@
#include "network.h"
#include "ui/uimain.h"
#include <time.h>
+#include "server_http.hpp"
+#include "rapidjson/include/rapidjson/writer.h"
+#include "rapidjson/include/rapidjson/stringbuffer.h"
#if defined(EMSCRIPTEN)
#include <emscripten.h>
@@ -332,6 +335,8 @@ int running_machine::run(bool quiet)
if (m_saveload_schedule != SLS_NONE)
handle_saveload();
+ export_http_api();
+
// run the CPUs until a reset or exit
m_hard_reset_pending = false;
while ((!m_hard_reset_pending && !m_exit_pending) || m_saveload_schedule != SLS_NONE)
@@ -1176,7 +1181,30 @@ running_machine::logerror_callback_item::logerror_callback_item(logerror_callbac
{
}
-
+void running_machine::export_http_api()
+{
+ m_manager.http_server()->on_get("/api/machine", [this](auto response, auto request)
+ {
+ rapidjson::StringBuffer s;
+ rapidjson::Writer<rapidjson::StringBuffer> writer(s);
+ writer.StartObject();
+ writer.Key("name");
+ writer.String(m_basename.c_str());
+
+ writer.Key("devices");
+ writer.StartArray();
+
+ device_iterator iter(root_device());
+ for (device_t &device : iter)
+ writer.String(device.tag());
+
+ writer.EndArray();
+ writer.EndObject();
+
+ response->type("application/json");
+ response->status(200).send(s.GetString());
+ });
+}
//**************************************************************************
// SYSTEM TIME