Working on probe: drv_call_function can now return a string

This commit is contained in:
2024-09-04 21:00:47 -04:00
parent a6e68cbb35
commit 43a02db7f3
7 changed files with 35 additions and 25 deletions

View File

@@ -149,9 +149,11 @@ public:
// The call-function callback. This is invoked whenever drv_call_function
// is called. This is the main entry point for "general" access into the
// DrivenEngine.
// DrivenEngine. The datapk parameter can contain any arbitrary data needed
// by the call. If the call wants to return anything, it can write the
// return data into the retpk datapack.
//
virtual void event_call_function(InvocationKind kind, int64_t place, std::string_view datapk) {};
virtual void event_call_function(InvocationKind kind, int64_t place, std::string_view datapk, StreamBuffer *retpk) {};
// The update callback. You may override this in a subclass.
// This will be called whenever anything changes.
@@ -294,7 +296,7 @@ public:
void drv_notify_close(uint32_t chid, uint32_t len, const char *data);
uint32_t drv_notify_accept(uint32_t port);
void drv_update(double clock);
void drv_call_function(InvocationKind kind, int64_t place, uint32_t datapklen, const char *datapk);
void drv_call_function(InvocationKind kind, int64_t place, uint32_t datapklen, const char *datapk, uint32_t *retpklen, const char **retpk);
private:
// Find a currently-unused channel ID. Channel IDs
@@ -316,6 +318,7 @@ private:
int64_t visible_actor_id_;
util::IdVector scan_result_;
std::vector<util::SharedStdString> anim_queues_;
StreamBuffer call_function_retpk_;
bool rescan_lua_source_;
double clock_;
bool stop_driver_;