Files
caliverse_server/Protocol/Marshaler.cs
2025-05-01 07:20:41 +09:00

153 lines
4.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Nettention.Proud;
#pragma warning disable 8981
using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
#pragma warning disable 8625
namespace Protocol
{
public class CaliMarshaler : Nettention.Proud.Marshaler
{
static bool ReadMessage(Message msg, out ByteArray arr)
{
if (msg.Read(out arr) == false)
return false;
return true;
}
static void WriteMessage(Message msg, MemoryStream stream)
{
ByteArray by = ByteArray.CopyFrom(stream.ToArray());
msg.Write(by);
}
public static bool Read(Message msg, out ClientToLogin packet)
{
packet = null;
ByteArray arr;
if (ReadMessage(msg, out arr) == false)
return false;
packet = ClientToLogin.Parser.ParseFrom(arr.data);
return true;
}
public static bool Read(Message msg, out ClientToGame packet)
{
try
{
packet = null;
ByteArray arr;
if (ReadMessage(msg, out arr) == false)
return false;
packet = ClientToGame.Parser.ParseFrom(arr.data);
return true;
}
catch (Exception e)
{
var err_msg = $"Exception !!!, Failed to perform in CaliMarshaler.Read() !!! : exception:{e} - {msg.ToString()}";
throw new System.Runtime.InteropServices.MarshalDirectiveException(err_msg);
}
}
public static bool Read(Message msg, out ClientToChat packet)
{
packet = null;
ByteArray arr;
if (ReadMessage(msg, out arr) == false)
return false;
packet = ClientToChat.Parser.ParseFrom(arr.data);
return true;
}
public static void Write(Message msg, ClientToLogin packet)
{
using (MemoryStream stream = new MemoryStream())
{
using (pb::CodedOutputStream output = new pb::CodedOutputStream(stream))
{
packet.WriteTo(output);
}
WriteMessage(msg, stream);
}
}
public static void Write(Message msg, ClientToGame packet)
{
using (MemoryStream stream = new MemoryStream())
{
using (pb::CodedOutputStream output = new pb::CodedOutputStream(stream))
{
packet.WriteTo(output);
}
WriteMessage(msg, stream);
}
}
public static void Write(Message msg, ClientToChat packet)
{
using (MemoryStream stream = new MemoryStream())
{
using (pb::CodedOutputStream output = new pb::CodedOutputStream(stream))
{
packet.WriteTo(output);
}
WriteMessage(msg, stream);
}
}
public static bool Read(Message msg, out GameProtocol packet)
{
try
{
packet = null;
ByteArray arr;
if (ReadMessage(msg, out arr) == false)
return false;
packet = GameProtocol.Parser.ParseFrom(arr.data);
return true;
}
catch (Exception e)
{
var err_msg = $"Exception !!!, Failed to perform in CaliMarshaler.Read() !!! : exception:{e} - {msg.ToString()}";
throw new System.Runtime.InteropServices.MarshalDirectiveException(err_msg);
}
}
public static void Write(Message msg, GameProtocol packet)
{
using (MemoryStream stream = new MemoryStream())
{
using (pb::CodedOutputStream output = new pb::CodedOutputStream(stream))
{
packet.WriteTo(output);
}
WriteMessage(msg, stream);
}
}
}
}