76 lines
1.9 KiB
C#
76 lines
1.9 KiB
C#
using AyCode.Core.Extensions;
|
|
using MessagePack;
|
|
|
|
namespace AyCode.Services.SignalRs;
|
|
|
|
[MessagePackObject]
|
|
public class SignalPostJsonDataMessage(object postData) : ISignalPostMessage<string>
|
|
{
|
|
[Key(0)] public string PostData { get; private set; } = postData.ToJson();
|
|
}
|
|
|
|
[MessagePackObject]
|
|
public class SignalPostMessage<TPostData>(TPostData postData) : ISignalPostMessage<TPostData>
|
|
{
|
|
[Key(0)]
|
|
public TPostData? PostData { get; set; } = postData;
|
|
}
|
|
|
|
public interface ISignalPostMessage<out TPostData> : ISignalRMessage
|
|
{
|
|
TPostData? PostData { get; }
|
|
}
|
|
|
|
[MessagePackObject]
|
|
public class SignalRequestByIdMessage(Guid id) : ISignalRequestMessage<Guid>
|
|
{
|
|
[Key(0)]
|
|
public Guid Id { get; set; } = id;
|
|
}
|
|
|
|
public interface ISignalRequestMessage<TRequestId> : ISignalRMessage
|
|
{
|
|
TRequestId Id { get; set; }
|
|
}
|
|
|
|
public interface ISignalRMessage
|
|
{ }
|
|
|
|
|
|
[MessagePackObject]
|
|
public sealed class SignalResponseMessage<TResponseData>(SignalResponseStatus status, TResponseData? responseData) : ISignalResponseMessage<TResponseData>
|
|
{
|
|
[Key(0)]
|
|
public SignalResponseStatus Status { get; set; } = status;
|
|
[Key(1)]
|
|
public TResponseData? ResponseData { get; set; } = responseData;
|
|
}
|
|
|
|
//[MessagePackObject]
|
|
//public sealed class SignalResponseMessage(SignalResponseStatus status) : ISignalResponseMessage
|
|
//{
|
|
// [Key(0)]
|
|
// public SignalResponseStatus Status { get; set; } = status;
|
|
//}
|
|
|
|
public interface ISignalResponseMessage<TResponseData> : ISignalResponseMessage
|
|
{
|
|
TResponseData? ResponseData { get; set; }
|
|
}
|
|
|
|
public interface ISignalResponseMessage : ISignalRMessage
|
|
{
|
|
SignalResponseStatus Status { get; set; }
|
|
}
|
|
|
|
public enum SignalResponseStatus : byte
|
|
{
|
|
Error = 0,
|
|
Success = 5
|
|
}
|
|
|
|
public interface IAcSignalRHubClient : IAcSignalRHubBase
|
|
{
|
|
Task SendMessageToServerAsync(int messageTag, ISignalRMessage? message, int? requestId );
|
|
//Task SendRequestToServerAsync(int messageTag, int requestId);
|
|
} |