diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/module.c | 6 | ||||
| -rw-r--r-- | core/module.h | 3 |
2 files changed, 9 insertions, 0 deletions
diff --git a/core/module.c b/core/module.c index c03d188..45f67f7 100644 --- a/core/module.c +++ b/core/module.c @@ -2922,6 +2922,12 @@ PureResult pure_app_deliver(PureApp *app, uint32_t input, const char *source, ui return saved == PURE_OK ? result : saved; } +uint64_t pure_app_heard(const PureApp *app, const char *source) { + for (unsigned i = 0; i < app->heard_count; ++i) + if (!strcmp(app->heard[i].source, source)) return app->heard[i].seq; + return 0; +} + PureResult pure_app_reply(const PureApp *app, bool (*visit)(void *, PureSpan), void *context) { if (!app->has_reply) return PURE_OK; return visit_value(app, &app->arena, app->reply, visit, context); diff --git a/core/module.h b/core/module.h index e5556fe..e9e5dd3 100644 --- a/core/module.h +++ b/core/module.h @@ -428,6 +428,9 @@ void pure_app_trim(PureApp *, uint32_t output, uint64_t through); * save fails. placed is as for pure_app_message_fields, or NULL. */ PureResult pure_app_deliver(PureApp *, uint32_t input, const char *source, uint64_t seq, PureSpan payload, const uint32_t *placed); +/* The last number heard from source (0 when none): a host that gets + * numbered messages out of order hands them over from the one after it. */ +uint64_t pure_app_heard(const PureApp *, const char *source); /* Readers on other threads. Right after a save an app can make a snapshot of * its saved states, for evaluating views anywhere while it keeps applying |
