Added message MtClientReady into MtClient. Added event Disconnected into MtRpcClient

This commit is contained in:
Viacheslav Demydiuk
2024-01-11 22:52:43 +02:00
parent 19fb08fba4
commit af5dd93056
2 changed files with 22 additions and 5 deletions
+18 -4
View File
@@ -1,4 +1,7 @@
namespace MtClient using System.ComponentModel.Design;
using System.Data;
namespace MtClient
{ {
public enum MessageType public enum MessageType
{ {
@@ -8,6 +11,7 @@
ExpertList = 3, ExpertList = 3,
ExpertAdded = 4, ExpertAdded = 4,
ExpertRemoved = 5, ExpertRemoved = 5,
ClientReady = 6
} }
public abstract class MtMessage public abstract class MtMessage
@@ -37,6 +41,16 @@
} }
} }
public class MtClientReady : MtMessage
{
public override MessageType MsgType => MessageType.ClientReady;
protected override string GetMessageBody()
{
return string.Empty;
}
}
public class MtEvent(int expertHandle, int eventType, string payload) : MtMessage public class MtEvent(int expertHandle, int eventType, string payload) : MtMessage
{ {
public override MessageType MsgType => MessageType.Event; public override MessageType MsgType => MessageType.Event;
@@ -101,11 +115,11 @@
} }
} }
public class MtExpertListMsg(List<int> experts) : MtMessage public class MtExpertListMsg(HashSet<int> experts) : MtMessage
{ {
public override MessageType MsgType => MessageType.ExpertList; public override MessageType MsgType => MessageType.ExpertList;
public List<int> Experts { private set; get; } = experts; public HashSet<int> Experts { private set; get; } = experts;
protected override string GetMessageBody() protected override string GetMessageBody()
{ {
@@ -115,7 +129,7 @@
public static MtMessage? Parse(string payload) public static MtMessage? Parse(string payload)
{ {
var pieces = payload.Split(","); var pieces = payload.Split(",");
List<int> handles = []; HashSet<int> handles = [];
foreach (var p in pieces) foreach (var p in pieces)
{ {
if (int.TryParse(p, out int expertHandle) == false) if (int.TryParse(p, out int expertHandle) == false)
+4 -1
View File
@@ -40,7 +40,8 @@ namespace MtClient
try try
{ {
await ws_.CloseAsync(WebSocketCloseStatus.NormalClosure, null, CancellationToken.None); if (ws_.State == WebSocketState.Open)
await ws_.CloseAsync(WebSocketCloseStatus.NormalClosure, null, CancellationToken.None);
ws_.Dispose(); ws_.Dispose();
} }
catch (Exception ex) catch (Exception ex)
@@ -103,6 +104,7 @@ namespace MtClient
{ {
Log($"DoReceive: close signal {result.CloseStatusDescription}"); Log($"DoReceive: close signal {result.CloseStatusDescription}");
await ws_.CloseAsync(WebSocketCloseStatus.NormalClosure, null, CancellationToken.None); await ws_.CloseAsync(WebSocketCloseStatus.NormalClosure, null, CancellationToken.None);
Disconnected?.Invoke(this, EventArgs.Empty);
break; break;
} }
else else
@@ -169,6 +171,7 @@ namespace MtClient
public event EventHandler<MtMessage>? MessageReceived; public event EventHandler<MtMessage>? MessageReceived;
public event EventHandler<EventArgs>? ConnectionFailed; public event EventHandler<EventArgs>? ConnectionFailed;
public event EventHandler<EventArgs>? Disconnected;
private readonly ClientWebSocket ws_ = new(); private readonly ClientWebSocket ws_ = new();
private readonly string host_; private readonly string host_;