using HubX.Library.Socket.Object; using HubX.Library.Socket.Packet; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Numerics; using System.Text; using System.Threading.Tasks; using SystemX.Core.Communication; namespace HubX.Library.Socket.Session { public class ClientSession : PacketSession { public Client Client { get; set; } public int SessionId { get; set; } public void Send(IMessage packet) { //string msgName = packet.Descriptor.Name.Replace("_", string.Empty); //EnumMessageId msgId = (EnumMessageId)Enum.Parse(typeof(EnumMessageId), msgName); //ushort size = (ushort)packet.CalculateSize(); //byte[] sendBuffer = new byte[size + 4]; //Array.Copy(BitConverter.GetBytes((ushort)(size + 4)), 0, sendBuffer, 0, sizeof(ushort)); //Array.Copy(BitConverter.GetBytes((ushort)msgId), 0, sendBuffer, 2, sizeof(ushort)); //Array.Copy(packet.ToByteArray(), 0, sendBuffer, 4, size); //Send(new ArraySegment(sendBuffer)); } public override void OnConnected(EndPoint endPoint) { Log4net.WriteLine($"OnConnected : {endPoint}", LogType.SOCKET); Client = ObjectManager.Instance.Add(); { Client.Session = this; } } public override void OnRecvPacket(ArraySegment buffer) { Log4net.WriteLine($"OnRecvPacket : {Encoding.UTF8.GetString(buffer)}", LogType.SOCKET); PacketManager.Instance.OnRecvPacket(this, buffer); } public override void OnDisconnected(EndPoint endPoint) { Log4net.WriteLine($"OnDisconnected : {endPoint}", LogType.SOCKET); } public override void OnSend(int numOfBytes) { //Console.WriteLine($"Transferred bytes: {numOfBytes}"); } } }