using FSO.Common.Serialization; using Mina.Core.Buffer; using System; namespace FSO.Server.Protocol.Voltron.Model { /// /// DBRequestWrapperPDU /// public class RPCRequest { public object[] Parameters { get; set; } public RPCRequest(IoBuffer buffer) { var bodyType = buffer.GetUInt32(); switch (bodyType) { case 0x125194E5: ParseFormat1(buffer); break; default: throw new Exception("Unknown RPC request type"); } } private void ParseFormat1(IoBuffer buffer) { var unknown = buffer.GetUInt32(); var sendingAvatarId = buffer.GetUInt32(); var flags = (byte)buffer.Get(); var messageId = buffer.GetUInt32(); if ((((flags) >> 1) & 0x01) == 0x01) { var unknown2 = buffer.GetUInt32(); } if ((((flags) >> 2) & 0x01) == 0x01) { var parameter = new byte[4]; buffer.Get(parameter, 0, 4); } if ((((flags) >> 3) & 0x01) == 0x01) { var unknown3 = buffer.GetUInt32(); } if ((((flags) >> 5) & 0x01) == 0x01) { var requestResponseID = buffer.GetUInt32(); /** Variable bytes **/ } } } }