Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SDK and data updates #356

Open
3 tasks done
lxatstariongroup opened this issue Nov 26, 2024 · 0 comments
Open
3 tasks done

SDK and data updates #356

lxatstariongroup opened this issue Nov 26, 2024 · 0 comments

Comments

@lxatstariongroup
Copy link
Contributor

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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Sprint Backlog
Development

No branches or pull requests

1 participant