You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tcpipSocket/Chat/Core/EnterRoomResponsePacket.cs

50 lines
1.2 KiB

2 years ago
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace Core
{
public class EnterRoomResponsePacket : IPacket
{
public StatusCode Code { get; set; }
public EnterRoomResponsePacket(StatusCode code)
{
Code = code;
}
public EnterRoomResponsePacket(byte[] buffer)
{
Code = (StatusCode)IPAddress.NetworkToHostOrder(BitConverter.ToInt32(buffer, 2));
}
public byte[] Serialize()
{
// 2bytes header
// data: 2bytes packetType + code
byte[] packetType = BitConverter.GetBytes(IPAddress.HostToNetworkOrder((short)PacketType.EnterRoomResponse));
byte[] code = BitConverter.GetBytes(IPAddress.HostToNetworkOrder((int)Code));
short dataSize = (short)(packetType.Length + code.Length);
byte[] header = BitConverter.GetBytes(IPAddress.HostToNetworkOrder(dataSize));
byte[] buffer = new byte[2 + dataSize];
int cursor = 0;
Array.Copy(header, 0, buffer, cursor, header.Length);
cursor += header.Length;
Array.Copy(packetType, 0, buffer, cursor, packetType.Length);
cursor += packetType.Length;
Array.Copy(code, 0, buffer, cursor, code.Length);
return buffer;
}
}
}