mirror of
https://github.com/vdemydiuk/mtapi.git
synced 2026-08-17 04:38:10 +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
|
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)
|
||||||
|
|||||||
@@ -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_;
|
||||||
|
|||||||
Reference in New Issue
Block a user