mirror of
				https://bitbucket.org/Ioncannon/project-meteor-server.git
				synced 2025-05-20 08:26:59 -04:00 
			
		
		
		
	Moved packet structures to common.
This commit is contained in:
		
							
								
								
									
										67
									
								
								FFXIVClassic Proxy Server/DataObjects/ClientConnection.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								FFXIVClassic Proxy Server/DataObjects/ClientConnection.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | ||||
| using System; | ||||
| using System.Net.Sockets; | ||||
| using System.Collections.Concurrent; | ||||
| using System.Net; | ||||
| using FFXIVClassic.Common; | ||||
| using FFXIVClassic_World_Server.DataObjects; | ||||
|  | ||||
| namespace FFXIVClassic_World_Server | ||||
| { | ||||
|     class ClientConnection | ||||
|     { | ||||
|         //Connection stuff | ||||
|         public Socket socket; | ||||
|         public byte[] buffer; | ||||
|         private BlockingCollection<BasePacket> SendPacketQueue = new BlockingCollection<BasePacket>(1000); | ||||
|         public int lastPartialSize = 0; | ||||
|  | ||||
|         //Instance Stuff | ||||
|         public Session owner; | ||||
|  | ||||
|         public void QueuePacket(BasePacket packet) | ||||
|         { | ||||
|             SendPacketQueue.Add(packet); | ||||
|         } | ||||
|  | ||||
|         public void QueuePacket(SubPacket subpacket, bool isAuthed, bool isEncrypted) | ||||
|         { | ||||
|             SendPacketQueue.Add(BasePacket.CreatePacket(subpacket, isAuthed, isEncrypted)); | ||||
|         } | ||||
|  | ||||
|         public void FlushQueuedSendPackets() | ||||
|         { | ||||
|             if (!socket.Connected) | ||||
|                 return; | ||||
|  | ||||
|             while (SendPacketQueue.Count > 0) | ||||
|             { | ||||
|                 BasePacket packet = SendPacketQueue.Take();                 | ||||
|  | ||||
|                 byte[] packetBytes = packet.GetPacketBytes(); | ||||
|  | ||||
|                 try | ||||
|                 { | ||||
|                     socket.Send(packetBytes); | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { Program.Log.Error("Weird case, socket was d/ced: {0}", e); } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public String GetAddress() | ||||
|         { | ||||
|             return String.Format("{0}:{1}", (socket.RemoteEndPoint as IPEndPoint).Address, (socket.RemoteEndPoint as IPEndPoint).Port); | ||||
|         } | ||||
|  | ||||
|         public bool IsConnected() | ||||
|         { | ||||
|             return (socket.Poll(1, SelectMode.SelectRead) && socket.Available == 0); | ||||
|         } | ||||
|  | ||||
|         public void Disconnect() | ||||
|         { | ||||
|             if (socket.Connected) | ||||
|                 socket.Disconnect(false); | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										27
									
								
								FFXIVClassic Proxy Server/DataObjects/Session.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								FFXIVClassic Proxy Server/DataObjects/Session.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Net.Sockets; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_World_Server.DataObjects | ||||
| { | ||||
|     class Session | ||||
|     { | ||||
|         public enum Channel {ZONE, CHAT}; | ||||
|  | ||||
|         public readonly ulong sessionId; | ||||
|         public readonly ClientConnection clientSocket; | ||||
|         public readonly Channel type; | ||||
|         public ZoneServer routing1, routing2; | ||||
|  | ||||
|         public Session(ulong sessionId, ClientConnection socket, Channel type) | ||||
|         { | ||||
|             this.sessionId = sessionId; | ||||
|             this.clientSocket = socket; | ||||
|             this.type = type; | ||||
|         } | ||||
|  | ||||
|     } | ||||
| } | ||||
							
								
								
									
										16
									
								
								FFXIVClassic Proxy Server/DataObjects/ZoneServer.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								FFXIVClassic Proxy Server/DataObjects/ZoneServer.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Net.Sockets; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_World_Server.DataObjects | ||||
| { | ||||
|     class ZoneServer | ||||
|     { | ||||
|         public string zoneServerIp; | ||||
|         public int zoneServerPort; | ||||
|         public Socket zoneServerConnection; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user