From 0999f443666c6e28d399b17d47e43d1630f2abad Mon Sep 17 00:00:00 2001 From: Gabriel mermelstein Date: Wed, 16 Apr 2025 11:22:42 +0300 Subject: [PATCH] rest of event definitions --- .../json_missing_dependencies_event.nim | 21 +++++++++++++++++++ library/events/json_periodic_sync_event.nim | 13 ++++++++++++ library/libsds.nim | 15 ++++++++++++- 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 library/events/json_missing_dependencies_event.nim create mode 100644 library/events/json_periodic_sync_event.nim diff --git a/library/events/json_missing_dependencies_event.nim b/library/events/json_missing_dependencies_event.nim new file mode 100644 index 0000000..2fb4689 --- /dev/null +++ b/library/events/json_missing_dependencies_event.nim @@ -0,0 +1,21 @@ +import std/json +import ./json_base_event, ../../src/[message] + +type JsonMissingDependenciesEvent* = ref object of JsonEvent + messageId*: MessageID + missingDeps: seq[MessageID] + +proc new*( + T: type JsonMissingDependenciesEvent, + messageId: MessageID, + missingDeps: seq[MessageID], +): T = + # Returns a MissingDependencies event as indicated in + # https://rfc.vac.dev/spec/36/#jsonmessageevent-type + + return JsonMissingDependenciesEvent( + eventType: "missing_dependencies", messageId: messageId, missingDeps: missingDeps + ) + +method `$`*(jsonMissingDependencies: JsonMissingDependenciesEvent): string = + $(%*jsonMissingDependencies) diff --git a/library/events/json_periodic_sync_event.nim b/library/events/json_periodic_sync_event.nim new file mode 100644 index 0000000..2cb6540 --- /dev/null +++ b/library/events/json_periodic_sync_event.nim @@ -0,0 +1,13 @@ +import std/json +import ./json_base_event + +type JsonPeriodicSyncEvent* = ref object of JsonEvent + +proc new*(T: type JsonPeriodicSyncEvent): T = + # Returns a PeriodicSync event as indicated in + # https://rfc.vac.dev/spec/36/#jsonmessageevent-type + + return JsonPeriodicSyncEvent(eventType: "periodic_sync") + +method `$`*(jsonPeriodicSync: JsonPeriodicSyncEvent): string = + $(%*jsonPeriodicSync) diff --git a/library/libsds.nim b/library/libsds.nim index 162f5a9..31c1def 100644 --- a/library/libsds.nim +++ b/library/libsds.nim @@ -14,7 +14,10 @@ import ./sds_thread/inter_thread_communication/requests/ [sds_lifecycle_request, sds_message_request, sds_dependencies_request], ../src/[reliability, reliability_utils, message], - ./events/[json_message_ready_event, json_message_sent_event] + ./events/[ + json_message_ready_event, json_message_sent_event, json_missing_dependencies_event, + json_periodic_sync_event, + ] ################################################################################ ### Wrapper around the reliability manager @@ -78,6 +81,16 @@ proc onMessageSent(ctx: ptr SdsContext): MessageSentCallback = callEventCallback(ctx, "onMessageSent"): $JsonMessageSentEvent.new(messageId) +proc onMissingDependencies(ctx: ptr SdsContext): MissingDependenciesCallback = + return proc(messageId: MessageID, missingDeps: seq[MessageID]) {.gcsafe.} = + callEventCallback(ctx, "onMissingDependencies"): + $JsonMissingDependenciesEvent.new(messageId, missingDeps) + +proc onPeriodicSync(ctx: ptr SdsContext): PeriodicSyncCallback = + return proc() {.gcsafe.} = + callEventCallback(ctx, "onPeriodicSync"): + $JsonPeriodicSyncEvent.new() + ### End of not-exported components ################################################################################