mysimulation/server/FSO.Server.Protocol/Voltron/Model/RPCRequest.cs

62 lines
1.5 KiB
C#
Raw Permalink Normal View History

using FSO.Common.Serialization;
using Mina.Core.Buffer;
using System;
namespace FSO.Server.Protocol.Voltron.Model
{
/// <summary>
/// DBRequestWrapperPDU
/// </summary>
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 **/
}
}
}
}