PrivMX DOCS
Swift

KVDB Events

Listening for events related to KVDBs and updating your app's state accordingly will allow you to build e.g., instant mapping features.

Types of Events

The lists below outline all the event types available in KVDBs and entries in PrivMX.

KVDB events:

  • kvdbCreated - triggers when a new KVDB is created in your Context
  • kvdbDeleted - triggers when a KVDB is deleted from your Context
  • kvdbUpdated - triggers when a KVDB is updated
  • kvdbStatsChanged - triggers when an entry is created to a KVDB or an entry has been deleted

Entries events:

  • kvdbNewEntry - triggers when an entry was created in a KVDB
  • kvdbEntryDeleted triggers when an entry was deleted from a KVDB
  • kvdbEntryUpdated - triggers when an entry was updated

Handling KVDB and Entries Events

Before receiving Events, your application has to start an event loop and subscribe to specific events in the given scope. Afterwards you can setup a listener.

Here is an example how to do it in your own project:

Swift

let kvdbId = "KVDB_ID"
let entryKey = "ENTRY_KEY"

Task{
    try? await endpointContainer?.startListening()
}

let registrationErrors = endpointSession?.registerCallbacksInBulk(
    [
        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.KVDB_CREATE,
                selectorType: .Context,
                selectorId: CONTEXT_ID),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when a new kvdb created
            }),
        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.KVDB_UPDATE,
                selectorType: .Context,
                selectorId: CONTEXT_ID),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when a kvdb is updated
            }),
        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.KVDB_UPDATE,
                selectorType: .Container,
                selectorId: kvdbId),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when a kvdb is updated
            }),
        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.KVDB_STATS,
                selectorType: .Context,
                selectorId: CONTEXT_ID),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when a kvdb's stats change
            }),
        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.KVDB_STATS,
                selectorType: .Container,
                selectorId: kvdbId),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when a kvdb's stats change
            }),
        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.KVDB_DELETE,
                selectorType: .Context,
                selectorId: CONTEXT_ID),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when a kvdb is deleted
            }),
        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.KVDB_DELETE,
                selectorType: .Container,
                selectorId: kvdbId),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when a kvdb is deleted
            }),
        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.COLLECTION_CHANGE,
                selectorType: .Context,
                selectorId: CONTEXT_ID),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when any kvdb's contents change
            }),
        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.COLLECTION_CHANGE,
                selectorType: .Container,
                selectorId: kvdbId),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when a particular kvdb's contents change
            }),
        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.ENTRY_CREATE,
                selectorType: .Context,
                selectorId: CONTEXT_ID),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions on any new message
            }),
        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.ENTRY_CREATE,
                selectorType: .Container,
                selectorId: kvdbId),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions on new message in a particular kvdb
            }),
        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.ENTRY_UPDATE,
                selectorType: .Context,
                selectorId: CONTEXT_ID),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when any message is updated
            }),
        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.ENTRY_UPDATE,
                selectorType: .Container,
                selectorId: kvdbId),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when a message in a particular kvdb is updated
            }),
        PMXEventCallbackRegistration(
            request: .kvdbEntry(
                eventType: privmx.endpoint.kvdb.ENTRY_UPDATE,
                kvdbId: kvdbId,entryKey: entryKey),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when a particular message is updated
            }),

        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.ENTRY_DELETE,
                selectorType: .Context,
                selectorId: CONTEXT_ID),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when any message is deleted
            }),

        PMXEventCallbackRegistration(
            request: .kvdb(
                eventType: privmx.endpoint.kvdb.ENTRY_DELETE,
                selectorType: .Container,
                selectorId: kvdbId),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when a message in a particular kvdb is deleted
            }),
        PMXEventCallbackRegistration(
            request: .kvdbEntry(
                eventType: privmx.endpoint.kvdb.ENTRY_DELETE,
                kvdbId: kvdbId,entryKey: entryKey),
            group: "SOME_UNIQUE_IDENTIFIER",
            cb:{ eventData in
                // some actions when a particular message is deleted
            })
    ])

We use cookies on our website. We use them to ensure proper functioning of the site and, if you agree, for purposes such as analytics, marketing, and targeting ads.

PrivMX Endpoint Swift v2.6

This package is not up to date with the core documentation. Some of the features you've seen described in other parts of the documentation might not be mentioned here. Those changes do not influence compatibility, however

On this page

KVDB Events | PrivMX Docs