From af4b7829f99f785d1895d02ceeb3f8802b45806a Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Fri, 10 Feb 2023 22:00:26 +0100 Subject: [PATCH] NSCv3: optimize, use coroutines istead of recursion --- .idea/codeStyles/Project.xml | 2 + .../rx/events/EventNSClientNewLog.kt | 1 - .../androidaps/workflow/WorkerClassesImpl.kt | 7 +- .../interfaces/nsclient/StoreDataForDb.kt | 1 + .../interfaces/profile/ProfileSource.kt | 1 + .../interfaces/sync/DataSyncSelector.kt | 76 +- .../interfaces/sync/DataSyncSelectorV1.kt | 46 ++ .../interfaces/sync/DataSyncSelectorV3.kt | 3 + .../interfaces/sync/DataSyncSelectorXdrip.kt | 3 + .../nightscout/interfaces/sync/NsClient.kt | 16 +- .../interfaces/workflow/WorkerClasses.kt | 5 +- .../nightscout/sdk/NSAndroidClientImpl.kt | 123 ++-- .../sdk/interfaces/NSAndroidClient.kt | 2 +- .../sdk/networking/NightscoutRemoteService.kt | 19 +- .../nightscout/core/ui/dialogs/OKDialog.kt | 22 + core/ui/src/main/res/values/strings.xml | 5 + .../nightscout/database/impl/AppRepository.kt | 52 +- .../impl/daos/BolusCalculatorResultDao.kt | 2 +- .../nightscout/database/impl/daos/BolusDao.kt | 2 +- .../nightscout/database/impl/daos/CarbsDao.kt | 2 +- .../database/impl/daos/DeviceStatusDao.kt | 2 +- .../impl/daos/EffectiveProfileSwitchDao.kt | 2 +- .../database/impl/daos/ExtendedBolusDao.kt | 2 +- .../nightscout/database/impl/daos/FoodDao.kt | 2 +- .../database/impl/daos/GlucoseValueDao.kt | 2 +- .../database/impl/daos/OfflineEventDao.kt | 2 +- .../database/impl/daos/ProfileSwitchDao.kt | 2 +- .../database/impl/daos/TemporaryBasalDao.kt | 2 +- .../database/impl/daos/TemporaryTargetDao.kt | 2 +- .../database/impl/daos/TherapyEventDao.kt | 2 +- .../maintenance/MaintenanceFragment.kt | 17 +- .../src/main/res/values/strings.xml | 2 - .../nightscout/plugins/di/PluginsModule.kt | 1 + .../nightscout/plugins/di/ProfileModule.kt | 10 +- .../plugins/profile/ProfilePlugin.kt | 43 +- .../nightscout/source/BGSourceFragment.kt | 3 +- .../nightscout/source/NSClientSourcePlugin.kt | 123 +--- .../info/nightscout/source/di/SourceModule.kt | 1 - .../nightscout/plugins/sync/di/SyncModule.kt | 28 +- .../plugins/sync/nsShared/NSClientFragment.kt | 156 +++- .../sync/nsShared/NsIncomingDataProcessor.kt | 232 ++++++ .../sync/nsShared/StoreDataForDbImpl.kt | 60 +- .../events/EventNSClientUpdateGuiInsert.kt | 5 + ...eGUI.kt => EventNSClientUpdateGuiQueue.kt} | 2 +- .../events/EventNSClientUpdateGuiStatus.kt | 5 + .../DataSyncSelectorV1Impl.kt} | 217 +++--- .../plugins/sync/nsclient/NSClientPlugin.kt | 56 +- .../sync/nsclient/services/NSClientService.kt | 161 ++-- .../nsclient/workers/NSClientAddAckWorker.kt | 85 +-- .../workers/NSClientUpdateRemoveAckWorker.kt | 76 +- .../sync/nsclientV3/DataSyncSelectorV3Impl.kt | 695 ++++++++++++++++++ .../sync/nsclientV3/NSClientV3Plugin.kt | 581 ++++++--------- .../extensions/GlucoseValueExtension.kt | 1 - .../sync/nsclientV3/workers/DataSyncWorker.kt | 8 +- .../sync/nsclientV3/workers/LoadBgWorker.kt | 123 ++-- .../workers/LoadDeviceStatusWorker.kt | 9 - .../nsclientV3/workers/LoadFoodsWorker.kt | 26 +- .../workers/LoadProfileStoreWorker.kt | 30 +- .../nsclientV3/workers/LoadStatusWorker.kt | 3 + .../workers/LoadTreatmentsWorker.kt | 107 ++- .../nsclientV3/workers/ProcessFoodWorker.kt | 81 -- .../workers/ProcessTreatmentsWorker.kt | 146 ---- .../plugins/sync/tidepool/utils/RateLimit.kt | 3 +- ...tation.kt => DataSyncSelectorXdripImpl.kt} | 112 ++- .../plugins/sync/xdrip/XdripFragment.kt | 2 +- .../plugins/sync/xdrip/XdripPlugin.kt | 34 +- .../sync/xdrip/workers/XdripDataSyncWorker.kt | 4 +- .../main/res/layout/ns_client_fragment.xml | 20 +- .../main/res/layout/ns_client_log_item.xml | 29 + .../sync/nsclientV3/NSClientV3PluginTest.kt | 177 ++--- .../nsclientV3/workers/DataSyncWorkerTest.kt | 10 +- .../nsclientV3/workers/LoadBgWorkerTest.kt | 48 +- 72 files changed, 2094 insertions(+), 1848 deletions(-) create mode 100644 core/interfaces/src/main/java/info/nightscout/interfaces/sync/DataSyncSelectorV1.kt create mode 100644 core/interfaces/src/main/java/info/nightscout/interfaces/sync/DataSyncSelectorV3.kt create mode 100644 core/interfaces/src/main/java/info/nightscout/interfaces/sync/DataSyncSelectorXdrip.kt create mode 100644 plugins/sync/src/main/java/info/nightscout/plugins/sync/nsShared/NsIncomingDataProcessor.kt create mode 100644 plugins/sync/src/main/java/info/nightscout/plugins/sync/nsShared/events/EventNSClientUpdateGuiInsert.kt rename plugins/sync/src/main/java/info/nightscout/plugins/sync/nsShared/events/{EventNSClientUpdateGUI.kt => EventNSClientUpdateGuiQueue.kt} (66%) create mode 100644 plugins/sync/src/main/java/info/nightscout/plugins/sync/nsShared/events/EventNSClientUpdateGuiStatus.kt rename plugins/sync/src/main/java/info/nightscout/plugins/sync/{nsShared/DataSyncSelectorImplementation.kt => nsclient/DataSyncSelectorV1Impl.kt} (80%) create mode 100644 plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclientV3/DataSyncSelectorV3Impl.kt delete mode 100644 plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclientV3/workers/ProcessFoodWorker.kt delete mode 100644 plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclientV3/workers/ProcessTreatmentsWorker.kt rename plugins/sync/src/main/java/info/nightscout/plugins/sync/xdrip/{XdripDataSyncSelectorImplementation.kt => DataSyncSelectorXdripImpl.kt} (83%) create mode 100644 plugins/sync/src/main/res/layout/ns_client_log_item.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index bf41126f8b..193c7c536d 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -4,6 +4,8 @@