mirror of
https://github.com/vdemydiuk/mtapi.git
synced 2026-07-28 02:57:56 +00:00
Added message MtClientReady into MtClient. Added event Disconnected into MtRpcClient
This commit is contained in:
+18
-4
@@ -1,4 +1,7 @@
|
||||
namespace MtClient
|
||||
using System.ComponentModel.Design;
|
||||
using System.Data;
|
||||
|
||||
namespace MtClient
|
||||
{
|
||||
public enum MessageType
|
||||
{
|
||||
@@ -8,6 +11,7 @@
|
||||
ExpertList = 3,
|
||||
ExpertAdded = 4,
|
||||
ExpertRemoved = 5,
|
||||
ClientReady = 6
|
||||
}
|
||||
|
||||
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 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 List<int> Experts { private set; get; } = experts;
|
||||
public HashSet<int> Experts { private set; get; } = experts;
|
||||
|
||||
protected override string GetMessageBody()
|
||||
{
|
||||
@@ -115,7 +129,7 @@
|
||||
public static MtMessage? Parse(string payload)
|
||||
{
|
||||
var pieces = payload.Split(",");
|
||||
List<int> handles = [];
|
||||
HashSet<int> handles = [];
|
||||
foreach (var p in pieces)
|
||||
{
|
||||
if (int.TryParse(p, out int expertHandle) == false)
|
||||
|
||||
@@ -40,7 +40,8 @@ namespace MtClient
|
||||
|
||||
try
|
||||
{
|
||||
await ws_.CloseAsync(WebSocketCloseStatus.NormalClosure, null, CancellationToken.None);
|
||||
if (ws_.State == WebSocketState.Open)
|
||||
await ws_.CloseAsync(WebSocketCloseStatus.NormalClosure, null, CancellationToken.None);
|
||||
ws_.Dispose();
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -103,6 +104,7 @@ namespace MtClient
|
||||
{
|
||||
Log($"DoReceive: close signal {result.CloseStatusDescription}");
|
||||
await ws_.CloseAsync(WebSocketCloseStatus.NormalClosure, null, CancellationToken.None);
|
||||
Disconnected?.Invoke(this, EventArgs.Empty);
|
||||
break;
|
||||
}
|
||||
else
|
||||
@@ -169,6 +171,7 @@ namespace MtClient
|
||||
|
||||
public event EventHandler<MtMessage>? MessageReceived;
|
||||
public event EventHandler<EventArgs>? ConnectionFailed;
|
||||
public event EventHandler<EventArgs>? Disconnected;
|
||||
|
||||
private readonly ClientWebSocket ws_ = new();
|
||||
private readonly string host_;
|
||||
|
||||
Reference in New Issue
Block a user