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); }
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); }