Ooui-tws-port/Ooui/Message.cs

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,
}
}