static public async Task <Response> Call <Response>(string connectionId, object msg) { var requestId = ToMessageID(msg.GetType()); var responseId = (int)Convert.ChangeType(ToMessageID(typeof(Response)), typeof(int)); var task = new TaskCompletionSource <SocketMessage>(); tasks[responseId] = task; Moon.Buffer buffer = new Moon.Buffer(); buffer.Write(Convert.ToUInt16(requestId)); var sdata = Serializer.Encode(msg); if (null != sdata) { buffer.Write(sdata, 0, sdata.Length); Send(connectionId, buffer); } else { return(default(Response)); } var res = await task.Task; return(Serializer.Decode <Response>(res.Data.Data, res.Data.Index, res.Data.Count)); }
public void Send(string connectionID, byte[] data) { Buffer buf = new Buffer(); buf.Write(data, 0, data.Length); Send(connectionID, buf); }
static public bool Send <Message>(string connectionId, Message msg) { var bytes = Serializer.Encode(msg); if (null == bytes) { OnError("", string.Format("Send Message {0}, Serialize error", msg.ToString())); return(false); } var id = Convert.ToUInt16(ToMessageID(msg.GetType())); Moon.Buffer buffer = new Moon.Buffer(); buffer.Write(id); buffer.Write(bytes, 0, bytes.Length); Send(connectionId, buffer); return(true); }
public bool Send <TMsg>(TMsg msg) { var bytes = serializer.Serialize(msg); if (null == bytes) { OnError(0, -1, string.Format("Send Message {0}, Serialize error", msg.ToString())); return(false); } var enumID = GetOrAddMessageID(msg.GetType()); var msgID = Convert.ToUInt16(enumID); Buffer buf = new Buffer(); buf.Write(msgID); buf.Write(bytes, 0, bytes.Length); Send(DefaultServerID, buf); return(true); }