示例#1
0
        public void SendResponse(uint pToken, ulong pObjectId, uint pStatus, List<ErrorInfo> pErrors, MemoryStream pData)
        {
            Header header = new Header();
            header.ServiceId = ClientImportedServiceIds.Response;
            header.Token = pToken;
            if (pObjectId != 0)
            {
                header.HasObjectId = true;
                header.ObjectId = pObjectId;
            }
            if (pData != null && pData.Length > 0)
            {
                header.HasSize = true;
                header.Size = (uint)pData.Length;
            }
            header.HasStatus = true;
            header.Status = pStatus;
            if (pErrors != null) pErrors.ForEach(e => header.Errors.Add(e));

            int size = 16;
            if (pData != null) size += (int)pData.Length;
            MemoryStream packet = new MemoryStream(size);
            packet.Seek(2, SeekOrigin.Begin);
            header.Write(packet);
            packet.Seek(0, SeekOrigin.Begin);
            packet.WriteByte((byte)(((packet.Length - 2) >> 8) & 0xFF));
            packet.WriteByte((byte)((packet.Length - 2) & 0xFF));
            packet.Seek(0, SeekOrigin.End);
            if (pData != null) pData.WriteTo(packet);
            Send(packet.ToArray());

            Log(ELogLevel.Debug, "Sent Message: {0}.{1} Token = {2}, {3} Bytes", header.ServiceId, header.MethodId, header.Token, header.Size);
            if (pData != null) Logger.Dump(pData.ToArray(), 0, (int)pData.Length);
        }
示例#2
0
        public void SendRPC(uint pServiceId, uint pMethodId, uint pToken, ulong pObjectId, MemoryStream pData)
        {
            Header header = new Header();
            header.ServiceId = pServiceId;
            header.HasMethodId = true;
            header.MethodId = pMethodId;
            header.Token = pToken;
            if (pObjectId != 0)
            {
                header.HasObjectId = true;
                header.ObjectId = pObjectId;
            }
            if (pData != null && pData.Length > 0)
            {
                header.HasSize = true;
                header.Size = (uint)pData.Length;
            }

            int size = 16;
            if (pData != null) size += (int)pData.Length;
            MemoryStream packet = new MemoryStream(size);
            packet.Seek(2, SeekOrigin.Begin);
            header.Write(packet);
            packet.Seek(0, SeekOrigin.Begin);
            packet.WriteByte((byte)(((packet.Length - 2) >> 8) & 0xFF));
            packet.WriteByte((byte)((packet.Length - 2) & 0xFF));
            packet.Seek(0, SeekOrigin.End);
            if (pData != null) pData.WriteTo(packet);
            Send(packet.ToArray());

            Log(ELogLevel.Debug, "Sent Message: {0}.{1} Token = {2}, {3} Bytes", header.ServiceId, header.MethodId, header.Token, header.Size);
            if (pData != null) Logger.Dump(pData.ToArray(), 0, (int)pData.Length);
        }