Beispiel #1
0
    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));
    }
Beispiel #2
0
        public void Send(string connectionID, byte[] data)
        {
            Buffer buf = new Buffer();

            buf.Write(data, 0, data.Length);
            Send(connectionID, buf);
        }
Beispiel #3
0
    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);
    }
Beispiel #4
0
        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);
        }