From ab268e65845c5ecaf1f9b5d60b2bf1af3d117d90 Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Thu, 22 Aug 2024 14:38:15 +0200 Subject: [PATCH] add more helper methods --- Pilz.Net/Api/ApiMessage.cs | 5 +++++ Pilz.Net/Api/ApiResponse.cs | 4 +++- Pilz.Net/Api/ApiResponse{T}.cs | 5 ++++- Pilz.Net/ConnectionManagerBase.cs | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Pilz.Net/Api/ApiMessage.cs b/Pilz.Net/Api/ApiMessage.cs index 64486fc..c33eb9f 100644 --- a/Pilz.Net/Api/ApiMessage.cs +++ b/Pilz.Net/Api/ApiMessage.cs @@ -2,4 +2,9 @@ public abstract class ApiMessage { + private class EmptyApiMessage : ApiMessage { } + + public ApiMessage Empty { get; } = new EmptyApiMessage(); + + public bool IsEmpty => this is EmptyApiMessage; } diff --git a/Pilz.Net/Api/ApiResponse.cs b/Pilz.Net/Api/ApiResponse.cs index 2af962b..0ccee85 100644 --- a/Pilz.Net/Api/ApiResponse.cs +++ b/Pilz.Net/Api/ApiResponse.cs @@ -5,9 +5,11 @@ namespace Pilz.Net.Api; public record class ApiResponse( HttpStatusCode StatusCode) { + public bool IsOk => StatusCode != HttpStatusCode.OK; + public void EnsureOk() { - if (StatusCode != HttpStatusCode.OK) + if (!IsOk) throw new Exception("Api return is not ok!"); } } diff --git a/Pilz.Net/Api/ApiResponse{T}.cs b/Pilz.Net/Api/ApiResponse{T}.cs index f015dac..7f26eb9 100644 --- a/Pilz.Net/Api/ApiResponse{T}.cs +++ b/Pilz.Net/Api/ApiResponse{T}.cs @@ -8,10 +8,13 @@ public record class ApiResponse( T? Message) where T : ApiMessage { + [MemberNotNullWhen(true, nameof(Message))] + public bool IsOk => StatusCode == HttpStatusCode.OK && Message is not null; + [MemberNotNull(nameof(Message))] public void EnsureOk() { - if (StatusCode != HttpStatusCode.OK || Message is null) + if (!IsOk) throw new Exception("Api return is not ok!"); } } diff --git a/Pilz.Net/ConnectionManagerBase.cs b/Pilz.Net/ConnectionManagerBase.cs index 312f752..72dda84 100644 --- a/Pilz.Net/ConnectionManagerBase.cs +++ b/Pilz.Net/ConnectionManagerBase.cs @@ -7,7 +7,7 @@ namespace Pilz.Net; public abstract class ConnectionManagerBase(int port) { private const int HEADER_LENGTH = 12; - + private bool listening = false; private readonly Dictionary> dicData = [];