StoreAccessChangedObserver

public protocol StoreAccessChangedObserver : Observer

Interface for components that rely on the onboard map. It is used to synchronise access/unavailability states for map files.

It is expected that every user which reads or modifies the map implements this interface and register itself for notification in the NDSStoreAccessSync.

  • A string that can be used to identify the observer.

    This will be used only for logging purposes, so there are no strict rules on what it should look like, but a descriptive and unique name would be best for log readability.

    Declaration

    Swift

    var storeAccessChangedObserverID: String { get }
  • Notification that read-only (shared) access to the map files was granted to the user.

    This notification is received when the observer is registered to NDSStoreAccessSync, if the map is available at that time, and also every time the map becomes available again (typically, after a component with write access finishes modifying the map and reverts to read-only access). Upon receiving this notification, the observer should initialize/reset their internal state that depends on map data, in all cases except one: when their map-dependent internal state is already initialized AND mapChanged is equal to false.

    A user with read-only access must not modify the map files in any way!

    Declaration

    Swift

    func onReadOnlyAccessGranted(mapChanged: Bool)

    Parameters

    mapChanged

    true if the map was modified since the last call to onReadOnlyAccessReleaseRequested and false otherwise.

  • Notification that read-only access to the map is being revoked (usually because the map needs to be updated or otherwise modified).

    The observer should stop all operations which access the map and invoke the callback provided as the first parameter to signal it has done so (and after invoking it, it no longer has any kind of access to the map!). If it is not possible to stop any ongoing operations, the observer can save the callback and call it later, after its operations have finished (unless it receives onReadOnlyAccessGranted in the meantime, which means that shared access is no longer being revoked).

    In either case, the implementation of onReadOnlyAccessReleaseRequested should return as quickly as possible and not stall.

    Declaration

    Swift

    func onReadOnlyAccessReleaseRequested(accessReleased: @escaping AccessReleaseCallback)

    Parameters

    accessReleased

    a function or function-like object which should be called by the user after it stops accessing the map files to signal that it has released access to the map.