From 14552bf929b5e8649d65ecd6c9f845b9992a6547 Mon Sep 17 00:00:00 2001 From: TheJoKlLa Date: Tue, 17 May 2022 23:23:47 +0200 Subject: [PATCH] New API Class is working --- Borepin/Borepin/PageModel/ServerPageModel.cs | 60 +++++++++++-------- .../Service/Storage/LoginStorageService.cs | 9 ++- Borepin_Test/BFFHService_Test.cs | 30 ---------- FabAccessAPI/API.cs | 11 ++++ FabAccessAPI/ConnectionData.cs | 10 ++-- FabAccessAPI/IAPI.cs | 5 ++ external/capnproto-dotnetcore | 2 +- 7 files changed, 62 insertions(+), 65 deletions(-) delete mode 100644 Borepin_Test/BFFHService_Test.cs diff --git a/Borepin/Borepin/PageModel/ServerPageModel.cs b/Borepin/Borepin/PageModel/ServerPageModel.cs index 6d670b5..6d3865a 100644 --- a/Borepin/Borepin/PageModel/ServerPageModel.cs +++ b/Borepin/Borepin/PageModel/ServerPageModel.cs @@ -38,29 +38,36 @@ namespace Borepin.PageModel #region Data public override Task LoadInstance(object instance) { - if(instance is ConnectionData) + if(instance != null) { - Connection_Item = instance as ConnectionData; + if (instance is ConnectionData) + { + Connection_Item = instance as ConnectionData; + } + else + { + throw new InstanceIncorrectException(); + } + + if (_API.ConnectionData != null && Connection_Item != null) + { + InstanceIsActiveConnection = Connection_Item.Equals(_API.ConnectionData); + } + else + { + InstanceIsActiveConnection = false; + } + + if (_Connection_Item != null && _Connection_Item.Host != null) + { + DisplayAddress = string.Format(CultureInfo.InvariantCulture, "{0}:{1}", _Connection_Item.Host.Host, _Connection_Item.Host.Port); + } } - else + if(instance == null && Connection_Item == null) { throw new InstanceIncorrectException(); } - if (_API.ConnectionData != null && Connection_Item != null) - { - InstanceIsActiveConnection = Connection_Item.Equals(_API.ConnectionData); - } - else - { - InstanceIsActiveConnection = false; - } - - if(_Connection_Item != null && _Connection_Item.Host != null) - { - DisplayAddress = string.Format(CultureInfo.InvariantCulture, "{0}:{1}", _Connection_Item.Host.Host, _Connection_Item.Host.Port); - } - IsBusy = false; return Task.CompletedTask; } @@ -103,6 +110,7 @@ namespace Borepin.PageModel if(_API.IsConnected) { await _API.Disconnect().ConfigureAwait(true); + _API.UnbindAllEvents(); } try @@ -145,6 +153,7 @@ namespace Borepin.PageModel public async Task DisonnectCommandExecute() { await _API.Disconnect().ConfigureAwait(false); + _API.UnbindAllEvents(); await LoadInstance(Connection_Item).ConfigureAwait(false); } @@ -172,15 +181,18 @@ namespace Borepin.PageModel { if(string.Equals(result.Parameters.GetValue("result"), "confirm", StringComparison.Ordinal)) { - ConnectionData connectionData = result.Parameters.GetValue("instance"); + await _API.Disconnect().ConfigureAwait(true); + _API.UnbindAllEvents(); + await _LoginStorageService.Remove(Connection_Item).ConfigureAwait(false); - await _LoginStorageService.Remove(connectionData).ConfigureAwait(false); - - INavigationResult result_nav = await _NavigationService.NavigateAsync("/MainPage/NavigationPage/ServerListPage").ConfigureAwait(false); - if(result_nav.Exception != null) + Device.BeginInvokeOnMainThread(async () => { - Log.Fatal(result.Exception, "Navigating failed"); - } + INavigationResult result_nav = await _NavigationService.NavigateAsync("/MainPage/NavigationPage/ServerListPage").ConfigureAwait(false); + if (result_nav.Exception != null) + { + Log.Fatal(result.Exception, "Navigating failed"); + } + }); } } #endregion diff --git a/Borepin/Borepin/Service/Storage/LoginStorageService.cs b/Borepin/Borepin/Service/Storage/LoginStorageService.cs index c9a6b75..44fc7c2 100644 --- a/Borepin/Borepin/Service/Storage/LoginStorageService.cs +++ b/Borepin/Borepin/Service/Storage/LoginStorageService.cs @@ -4,7 +4,6 @@ using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Threading.Tasks; -using System.Linq; namespace Borepin.Service.Storage { @@ -55,12 +54,12 @@ namespace Borepin.Service.Storage } List connectionData_List = new List(await _LoadConnectionData().ConfigureAwait(false)); - if (connectionData_List.Contains(connectionData)) + if (!connectionData_List.Contains(connectionData)) { throw new MissingConnectionException(connectionData); } - connectionData_List.RemoveAll(x => x.Equals(connectionData)); + connectionData_List.Remove(connectionData); await _SaveConnectionData(connectionData_List).ConfigureAwait(false); } @@ -72,14 +71,14 @@ namespace Borepin.Service.Storage } List connectionData_List = new List(await _LoadConnectionData().ConfigureAwait(false)); - if (connectionData_List.Contains(connectionData)) + if (! connectionData_List.Contains(connectionData)) { throw new MissingConnectionException(connectionData); } connectionData.LastTime = DateTime.UtcNow; - connectionData_List.RemoveAll(x => x.Equals(connectionData)); + connectionData_List.Remove(connectionData); connectionData_List.Add(connectionData); await _SaveConnectionData(connectionData_List).ConfigureAwait(false); } diff --git a/Borepin_Test/BFFHService_Test.cs b/Borepin_Test/BFFHService_Test.cs deleted file mode 100644 index ee89477..0000000 --- a/Borepin_Test/BFFHService_Test.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Threading.Tasks; -using NUnit.Framework; -using Borepin.Service.Storage; -using NSubstitute; -using Borepin.Service.BFFH; -using Borepin.Model; - -namespace Borepin_Test -{ - public class BFFHService_Test - { - [Test, Explicit] - public async Task Connect() - { - IPreferenceStorageService preferenceStorageService = Substitute.For(); - ISecretStorageService secretStorageService = Substitute.For(); - - IBFFHService bffhService = new BFFHService(preferenceStorageService, secretStorageService); - - Connection connection = new Connection() - { - Address = new Uri("fabaccess://127.0.0.1:59661"), - Username = "Testuser" - }; - - await bffhService.Connect(connection, "secret"); - } - } -} diff --git a/FabAccessAPI/API.cs b/FabAccessAPI/API.cs index d903c7f..fe5cbdd 100644 --- a/FabAccessAPI/API.cs +++ b/FabAccessAPI/API.cs @@ -55,6 +55,17 @@ namespace FabAccessAPI _TcpRpcClient = null; } } + + public void UnbindAllEvents() + { + if(ConnectionStatusChanged != null) + { + foreach (Delegate d in ConnectionStatusChanged.GetInvocationList()) + { + ConnectionStatusChanged -= (EventHandler)d; + } + } + } #endregion #region Members diff --git a/FabAccessAPI/ConnectionData.cs b/FabAccessAPI/ConnectionData.cs index 2fd22d4..c266361 100644 --- a/FabAccessAPI/ConnectionData.cs +++ b/FabAccessAPI/ConnectionData.cs @@ -16,13 +16,13 @@ namespace FabAccessAPI if(obj is ConnectionData && obj != null) { ConnectionData? data = obj as ConnectionData; - return data.Host.Host == Host.Host && - data.Host.Port == Host.Port && - data.Mechanism == Mechanism && - data.Username == Username && - EqualityComparer>.Default.Equals(Properties, data.Properties); + return data.Host.Host == Host.Host && + data.Host.Port == Host.Port && + data.Mechanism == Mechanism && + data.Username == Username; } + return false; } diff --git a/FabAccessAPI/IAPI.cs b/FabAccessAPI/IAPI.cs index b2177e4..62fefa2 100644 --- a/FabAccessAPI/IAPI.cs +++ b/FabAccessAPI/IAPI.cs @@ -33,6 +33,11 @@ namespace FabAccessAPI /// event EventHandler ConnectionStatusChanged; + /// + /// Unbind all Events from ConnectionStatus Change + /// + void UnbindAllEvents(); + /// /// Connect to BFFH Server /// diff --git a/external/capnproto-dotnetcore b/external/capnproto-dotnetcore index 086bbc2..0176a50 160000 --- a/external/capnproto-dotnetcore +++ b/external/capnproto-dotnetcore @@ -1 +1 @@ -Subproject commit 086bbc2497785d2cc63e9252df6f6d3ee7599579 +Subproject commit 0176a503c8d0b0be66e0212e04200c8324e11fd9