From de2ff8e626fbda32321ab00c55c85221881e8298 Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Tue, 29 Apr 2008 14:10:26 +0000 Subject: * Little more spring cleaning. --- ThirdParty/3Di/LoadBalancer/TcpClient.cs | 139 ++++++++++++++++++------------- 1 file changed, 81 insertions(+), 58 deletions(-) (limited to 'ThirdParty/3Di/LoadBalancer/TcpClient.cs') diff --git a/ThirdParty/3Di/LoadBalancer/TcpClient.cs b/ThirdParty/3Di/LoadBalancer/TcpClient.cs index 7b5bc79..af678a0 100644 --- a/ThirdParty/3Di/LoadBalancer/TcpClient.cs +++ b/ThirdParty/3Di/LoadBalancer/TcpClient.cs @@ -30,19 +30,23 @@ using System.Net; using System.Net.Sockets; using System.Threading; -namespace OpenSim.ApplicationPlugins.LoadBalancer { - public class AsynchronousClient { +namespace OpenSim.ApplicationPlugins.LoadBalancer +{ + public class AsynchronousClient + { private static ManualResetEvent connectDone = new ManualResetEvent(false); private static ManualResetEvent sendDone = new ManualResetEvent(false); - public static Socket StartClient(string hostname, int port) { - try { + public static Socket StartClient(string hostname, int port) + { + try + { IPHostEntry ipHostInfo = Dns.GetHostEntry(hostname); IPAddress ipAddress = ipHostInfo.AddressList[0]; IPEndPoint remoteEP = new IPEndPoint(ipAddress, port); Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - client.BeginConnect( remoteEP, new AsyncCallback(ConnectCallback), client); + client.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), client); connectDone.WaitOne(); /* Send(client,"This is a test"); @@ -53,19 +57,25 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer { client.Close(); */ return client; - } catch (Exception e) { + } + catch (Exception e) + { Console.WriteLine(e.ToString()); throw new Exception("socket error !!"); } } - private static void ConnectCallback(IAsyncResult ar) { - try { + private static void ConnectCallback(IAsyncResult ar) + { + try + { Socket client = (Socket) ar.AsyncState; client.EndConnect(ar); Console.WriteLine("Socket connected to {0}", client.RemoteEndPoint.ToString()); connectDone.Set(); - } catch (Exception e) { + } + catch (Exception e) + { Console.WriteLine(e.ToString()); } } @@ -101,20 +111,26 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer { } } */ - public static void Send(Socket client, byte[] byteData) { + + public static void Send(Socket client, byte[] byteData) + { client.BeginSend(byteData, 0, byteData.Length, 0, new AsyncCallback(SendCallback), client); } - private static void SendCallback(IAsyncResult ar) { - try { + private static void SendCallback(IAsyncResult ar) + { + try + { Socket client = (Socket) ar.AsyncState; int bytesSent = client.EndSend(ar); - if(bytesSent > 0) + if (bytesSent > 0) { //Console.WriteLine("Sent {0} bytes to server.", bytesSent); } sendDone.Set(); - } catch (Exception e) { + } + catch (Exception e) + { Console.WriteLine(e.ToString()); } } @@ -122,28 +138,28 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer { public class InternalPacketHeader { + public Guid agent_id; private byte[] buffer = new byte[32]; - public int type; - public int throttlePacketType; public int numbytes; - public Guid agent_id; public int region_port; + public int throttlePacketType; + public int type; public void FromBytes(byte[] bytes) { int i = 0; // offset try { - this.type = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); - this.throttlePacketType = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); - this.numbytes = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); - this.agent_id = new Guid( + type = (int) (bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); + throttlePacketType = (int) (bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); + numbytes = (int) (bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); + agent_id = new Guid( bytes[i++] | (bytes[i++] << 8) | (bytes[i++] << 16) | bytes[i++] << 24, - (short)(bytes[i++] | (bytes[i++] << 8)), - (short)(bytes[i++] | (bytes[i++] << 8)), + (short) (bytes[i++] | (bytes[i++] << 8)), + (short) (bytes[i++] | (bytes[i++] << 8)), bytes[i++], bytes[i++], bytes[i++], bytes[i++], bytes[i++], bytes[i++], bytes[i++], bytes[i++]); - this.region_port = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); + region_port = (int) (bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24)); } catch (Exception) { @@ -154,48 +170,54 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer { public byte[] ToBytes() { int i = 0; - this.buffer[i++] = (byte)(this.type % 256); - this.buffer[i++] = (byte)((this.type >> 8) % 256); - this.buffer[i++] = (byte)((this.type >> 16) % 256); - this.buffer[i++] = (byte)((this.type >> 24) % 256); + buffer[i++] = (byte) (type % 256); + buffer[i++] = (byte) ((type >> 8) % 256); + buffer[i++] = (byte) ((type >> 16) % 256); + buffer[i++] = (byte) ((type >> 24) % 256); - this.buffer[i++] = (byte)(this.throttlePacketType % 256); - this.buffer[i++] = (byte)((this.throttlePacketType >> 8) % 256); - this.buffer[i++] = (byte)((this.throttlePacketType >> 16) % 256); - this.buffer[i++] = (byte)((this.throttlePacketType >> 24) % 256); + buffer[i++] = (byte) (throttlePacketType % 256); + buffer[i++] = (byte) ((throttlePacketType >> 8) % 256); + buffer[i++] = (byte) ((throttlePacketType >> 16) % 256); + buffer[i++] = (byte) ((throttlePacketType >> 24) % 256); - this.buffer[i++] = (byte)(this.numbytes % 256); - this.buffer[i++] = (byte)((this.numbytes >> 8) % 256); - this.buffer[i++] = (byte)((this.numbytes >> 16) % 256); - this.buffer[i++] = (byte)((this.numbytes >> 24) % 256); + buffer[i++] = (byte) (numbytes % 256); + buffer[i++] = (byte) ((numbytes >> 8) % 256); + buffer[i++] = (byte) ((numbytes >> 16) % 256); + buffer[i++] = (byte) ((numbytes >> 24) % 256); // no endian care - Buffer.BlockCopy(agent_id.ToByteArray(), 0, this.buffer, i, 16); i += 16; + Buffer.BlockCopy(agent_id.ToByteArray(), 0, buffer, i, 16); + i += 16; - this.buffer[i++] = (byte)(this.region_port % 256); - this.buffer[i++] = (byte)((this.region_port >> 8) % 256); - this.buffer[i++] = (byte)((this.region_port >> 16) % 256); - this.buffer[i++] = (byte)((this.region_port >> 24) % 256); + buffer[i++] = (byte) (region_port % 256); + buffer[i++] = (byte) ((region_port >> 8) % 256); + buffer[i++] = (byte) ((region_port >> 16) % 256); + buffer[i++] = (byte) ((region_port >> 24) % 256); - return this.buffer; + return buffer; } } - public class TcpClient { - - public static int internalPacketHeaderSize = 4*4 + 16*1; + public class TcpClient + { + public static int internalPacketHeaderSize = 4 * 4 + 16 * 1; + private Socket mConnection; private string mHostname; private int mPort; - private Socket mConnection; - public TcpClient(string hostname, int port) { - this.mHostname = hostname; - this.mPort = port; - this.mConnection = null; + + public TcpClient(string hostname, int port) + { + mHostname = hostname; + mPort = port; + mConnection = null; } - public void connect() { - this.mConnection = AsynchronousClient.StartClient(mHostname, mPort); + + public void connect() + { + mConnection = AsynchronousClient.StartClient(mHostname, mPort); } + /* public void recevie() { if (mConnection == null) { @@ -212,17 +234,18 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer { } } */ - public void send(InternalPacketHeader header, byte[] packet) { + public void send(InternalPacketHeader header, byte[] packet) + { lock (this) { - - if (mConnection == null) { + if (mConnection == null) + { // throw new Exception("client not initialized"); connect(); } - AsynchronousClient.Send(this.mConnection, header.ToBytes()); + AsynchronousClient.Send(mConnection, header.ToBytes()); /* for (int i = 0; i < 10; i++) @@ -231,8 +254,8 @@ for (int i = 0; i < 10; i++) } Console.WriteLine(""); */ - AsynchronousClient.Send(this.mConnection, packet); + AsynchronousClient.Send(mConnection, packet); } } } -} +} \ No newline at end of file -- cgit v1.1