diff options
author | 2017-01-04 16:15:57 +0100 | |
---|---|---|
committer | 2017-01-04 16:15:57 +0100 | |
commit | 63e3f487751eb096152e6e6bd90d8b47643a496b (patch) | |
tree | 3e42b162973ac8153a261c1a1351fbae4b09e748 /src/emu/machine.cpp | |
parent | 47c4f47bd40def91566dda49cc378d4ae0d63e37 (diff) |
Added initial HTTP/HTTPS webserver/websocket server support (nw)
Diffstat (limited to 'src/emu/machine.cpp')
-rw-r--r-- | src/emu/machine.cpp | 30 |
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 |