cleanup mana python plugin
This commit is contained in:
parent
a9bfcf151c
commit
47926ce5e1
2 changed files with 21 additions and 17 deletions
|
@ -21,7 +21,8 @@ struct Context
|
||||||
py::module usercode;
|
py::module usercode;
|
||||||
py::object userobject;
|
py::object userobject;
|
||||||
py::object py_begin_run;
|
py::object py_begin_run;
|
||||||
py::object py_event_data;
|
py::object py_process_event;
|
||||||
|
py::object py_process_system_event;
|
||||||
py::object py_end_run;
|
py::object py_end_run;
|
||||||
std::vector<std::vector<py::object>> eventBuffers;
|
std::vector<std::vector<py::object>> eventBuffers;
|
||||||
};
|
};
|
||||||
|
@ -29,7 +30,7 @@ struct Context
|
||||||
|
|
||||||
MANA_DEFINE_PLUGIN_INIT(init)
|
MANA_DEFINE_PLUGIN_INIT(init)
|
||||||
{
|
{
|
||||||
log_set_level(LOG_DEBUG);
|
log_set_level(LOG_INFO);
|
||||||
static Context g_ctx;
|
static Context g_ctx;
|
||||||
auto ctx = &g_ctx;
|
auto ctx = &g_ctx;
|
||||||
log_debug("init: ctx=%p", ctx);
|
log_debug("init: ctx=%p", ctx);
|
||||||
|
@ -39,21 +40,18 @@ MANA_DEFINE_PLUGIN_INIT(init)
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
MANA_DEFINE_PLUGIN_SHUTDOWN(shutdown)
|
MANA_DEFINE_PLUGIN_SHUTDOWN(shutdown) { log_info("shutdown: ctx=%p", context); }
|
||||||
{
|
|
||||||
(void)context;
|
|
||||||
log_debug("shutdown");
|
|
||||||
}
|
|
||||||
|
|
||||||
MANA_DEFINE_PLUGIN_BEGIN_RUN(begin_run)
|
MANA_DEFINE_PLUGIN_BEGIN_RUN(begin_run)
|
||||||
{
|
{
|
||||||
log_debug("begin_run: context=%p, descriptor_json=%s", context, descriptor_json);
|
log_info("begin_run: ctx=%p", context);
|
||||||
auto jRun = nlohmann::json::parse(descriptor_json);
|
auto jRun = nlohmann::json::parse(descriptor_json);
|
||||||
auto ctx = reinterpret_cast<Context *>(context);
|
auto ctx = reinterpret_cast<Context *>(context);
|
||||||
ctx->usercode.reload();
|
ctx->usercode.reload();
|
||||||
// TODO: check if the retrieved attributes are callable
|
// TODO: check if the retrieved attributes are callable
|
||||||
ctx->py_begin_run = ctx->usercode.attr("begin_run");
|
ctx->py_begin_run = ctx->usercode.attr("begin_run");
|
||||||
ctx->py_event_data = ctx->usercode.attr("event_data");
|
ctx->py_process_event = ctx->usercode.attr("process_event");
|
||||||
|
ctx->py_process_system_event = ctx->usercode.attr("process_system_event");
|
||||||
ctx->py_end_run = ctx->usercode.attr("end_run");
|
ctx->py_end_run = ctx->usercode.attr("end_run");
|
||||||
ctx->py_begin_run(descriptor_json);
|
ctx->py_begin_run(descriptor_json);
|
||||||
ctx->eventBuffers.clear();
|
ctx->eventBuffers.clear();
|
||||||
|
@ -68,7 +66,7 @@ MANA_DEFINE_PLUGIN_BEGIN_RUN(begin_run)
|
||||||
|
|
||||||
MANA_DEFINE_PLUGIN_END_RUN(end_run)
|
MANA_DEFINE_PLUGIN_END_RUN(end_run)
|
||||||
{
|
{
|
||||||
log_debug("end: context=%p, descriptor_json=%s", context, descriptor_json);
|
log_info("end: ctx=%p", context);
|
||||||
auto ctx = reinterpret_cast<Context *>(context);
|
auto ctx = reinterpret_cast<Context *>(context);
|
||||||
ctx->py_end_run(descriptor_json);
|
ctx->py_end_run(descriptor_json);
|
||||||
}
|
}
|
||||||
|
@ -77,6 +75,7 @@ MANA_DEFINE_PLUGIN_EVENT_DATA(process_event)
|
||||||
{
|
{
|
||||||
log_trace("event: ctx=%p, eventIndex=%d, arrayCount=%zu, totalBytes=%zu", context, eventIndex,
|
log_trace("event: ctx=%p, eventIndex=%d, arrayCount=%zu, totalBytes=%zu", context, eventIndex,
|
||||||
arrayCount, totalBytes);
|
arrayCount, totalBytes);
|
||||||
|
|
||||||
auto ctx = reinterpret_cast<Context *>(context);
|
auto ctx = reinterpret_cast<Context *>(context);
|
||||||
auto &buffers = ctx->eventBuffers.at(eventIndex);
|
auto &buffers = ctx->eventBuffers.at(eventIndex);
|
||||||
assert(buffers.size() == arrayCount);
|
assert(buffers.size() == arrayCount);
|
||||||
|
@ -86,13 +85,15 @@ MANA_DEFINE_PLUGIN_EVENT_DATA(process_event)
|
||||||
ctx->eventBuffers[eventIndex][ai] =
|
ctx->eventBuffers[eventIndex][ai] =
|
||||||
py::memoryview::from_memory(arraySpan.data(), arraySpan.size() * sizeof(float));
|
py::memoryview::from_memory(arraySpan.data(), arraySpan.size() * sizeof(float));
|
||||||
}
|
}
|
||||||
ctx->py_event_data(eventIndex, ctx->eventBuffers);
|
ctx->py_process_event(eventIndex, ctx->eventBuffers);
|
||||||
}
|
}
|
||||||
|
|
||||||
MANA_DEFINE_PLUGIN_SYSTEM_EVENT(process_system_event)
|
MANA_DEFINE_PLUGIN_SYSTEM_EVENT(process_system_event)
|
||||||
{
|
{
|
||||||
log_trace("system_event: ctx=%p, size=%zu", context, size);
|
log_debug("system_event: ctx=%p, size=%zu", context, size);
|
||||||
auto ctx = reinterpret_cast<Context *>(context);
|
auto ctx = reinterpret_cast<Context *>(context);
|
||||||
|
auto view = py::memoryview::from_memory(data, size * sizeof(uint32_t));
|
||||||
|
ctx->py_process_system_event(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" MANA_C_SINK_PLUGIN()
|
extern "C" MANA_C_SINK_PLUGIN()
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
|
|
||||||
import json
|
import sys
|
||||||
import py_mana
|
|
||||||
|
|
||||||
def begin_run(runDescription: str):
|
def begin_run(runDescription: str):
|
||||||
print("begin_run")
|
print(f"python: begin_run - python version: {sys.version}")
|
||||||
|
|
||||||
def end_run(runDescription: str):
|
def end_run(runDescription: str):
|
||||||
print("end_run")
|
print(f"python: end_run")
|
||||||
|
|
||||||
def event_data(eventIndex: int, dataArrays):
|
def process_event(eventIndex: int, dataArrays):
|
||||||
return
|
return
|
||||||
print(f"event[{eventIndex}]: {dataArrays}")
|
print(f"event[{eventIndex}]: {dataArrays}")
|
||||||
|
|
||||||
|
def process_system_event(data):
|
||||||
|
return
|
||||||
|
print(f"python: system_event: size={len(data)}")
|
||||||
|
|
Loading…
Reference in a new issue