62 lines
1.5 KiB
C#
62 lines
1.5 KiB
C#
using System;
|
|
using System.Runtime.Serialization;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Converters;
|
|
|
|
namespace Ooui
|
|
{
|
|
public class Message
|
|
{
|
|
[JsonProperty("mid")]
|
|
public long Id = GenerateId ();
|
|
|
|
[JsonProperty("m")]
|
|
public MessageType MessageType = MessageType.Nop;
|
|
|
|
[JsonProperty("id")]
|
|
public string TargetId = "";
|
|
|
|
[JsonProperty("k")]
|
|
public string Key = "";
|
|
|
|
[JsonProperty("v")]
|
|
public object Value = null;
|
|
|
|
public static Message Call (string targetId, string method, params object[] args) => new Message {
|
|
MessageType = MessageType.Call,
|
|
TargetId = targetId,
|
|
Key = method,
|
|
Value = args,
|
|
};
|
|
|
|
public static Message Event (string targetId, string eventType) => new Message {
|
|
MessageType = MessageType.Event,
|
|
TargetId = targetId,
|
|
Key = eventType,
|
|
};
|
|
|
|
static long idCounter = 0;
|
|
static long GenerateId ()
|
|
{
|
|
return System.Threading.Interlocked.Increment (ref idCounter);
|
|
}
|
|
}
|
|
|
|
[JsonConverter (typeof (StringEnumConverter))]
|
|
public enum MessageType
|
|
{
|
|
[EnumMember(Value = "nop")]
|
|
Nop,
|
|
[EnumMember(Value = "create")]
|
|
Create,
|
|
[EnumMember(Value = "set")]
|
|
Set,
|
|
[EnumMember(Value = "call")]
|
|
Call,
|
|
[EnumMember(Value = "listen")]
|
|
Listen,
|
|
[EnumMember(Value = "event")]
|
|
Event,
|
|
}
|
|
}
|