Skip to content

SDK and data updates #356

@lxatstariongroup

Description

@lxatstariongroup

Prerequisites

  • I have written a descriptive issue title
  • I have verified that I am running the latest version of the COMET-SDK
  • I have searched open and closed issues to ensure it has not already been reported

Description

The flow for data updates in IME/SDK is as follows:

  1. (IME) Timer elapses in IME, Session.Refresh() is called
  2. (SDK) Refresh loops through all toplevel containers (SiteDirectory and all open Iterations) to do a Refresh on a specific topcontainer
  3. (SDK) Per TopContainer after data is retrieved from the server, a SessionEvent is sent to the messagebus that involves a SessionStatus.BeginUpdate
  4. (IME) SessionStatus.BeginUpdate subscription on MessageBus results in a BeginDataUpdate command (GridUpdateService.cs) per open Browser that represents a piece of data from the Session that is refreshed
  5. SDK Assembler sends MessageBus ObjectChangedEvents per changed Thing (for revisions that are already in the cache the system DOES NOT send an ObjectChangedEvent).
  6. (IME) Data updates are handled per subscription
  7. (SDK) Per TopContainer after data is processed in the Assembler, a SessionEvent is sent to the messagebus that involves a SessionStatus.EndUpdate
  8. (IME) SessionStatus.EndUpdate subscription on MessageBus results in an EndDataUpdate command (GridUpdateService.cs) per open Browser that represents a piece of data from the Session that is refreshed. This action refreshes the browser's UI and uses a lot of memory and CPU if browser contain a lot of data.

Possible Performance gain: Only send SessionStatus.BeginUpdate and SessionStatus.EndUpdate when necessary (=data has actually been changed).
So only when the first ObjectChangedEvent was sent to the MessageBus. Only once per Session refresh (session refresh = SiteDirectory + nr_of_Open_Iterations).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Sprint Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions