From: <br...@us...> - 2008-10-07 21:07:38
|
Revision: 411 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=411&view=rev Author: brus07 Date: 2008-10-07 21:07:31 +0000 (Tue, 07 Oct 2008) Log Message: ----------- Continues added new class architecture for Connector module. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs Added Paths: ----------- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerTask.cs Removed Paths: ------------- ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs Modified: ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-10-07 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-10-07 21:07:31 UTC (rev 411) @@ -42,9 +42,10 @@ <Compile Include="Getter\IGetter.cs" /> <Compile Include="Getter\WebGetterOld.cs" /> <Compile Include="SocketClient.cs" /> - <Compile Include="SocketClientTask.cs" /> - <Compile Include="SocketServer.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="SocketServer.cs"> + <SubType>Code</SubType> + </Compile> <Compile Include="WebConnector.cs" /> </ItemGroup> <ItemGroup> Modified: ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs 2008-10-07 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs 2008-10-07 21:07:31 UTC (rev 411) @@ -6,20 +6,32 @@ { public class SocketClient: AbstractConnector { - EasyClient client; - string ip = "127.0.0.1"; int port = 4120; + EasyClient client; + + void init() + { + client = new EasyClient(new ServerInfo(this.ip, this.port, true)); + client.DataArrived += DataArrived; + } + public SocketClient() { + init(); } public SocketClient(string IP) { this.ip = IP; - client = new EasyClient(new ServerInfo(this.ip, this.port, true)); - client.DataArrived += DataArrived; + init(); } + public SocketClient(string IP, int Port) + { + this.ip = IP; + this.port = Port; + init(); + } public void Connect() { @@ -32,11 +44,21 @@ } public void Disconnect() { - if (client.IsConnected == true) - client.DisconnectFromServer(); - client.Dispose(); - client = null; + if (client != null) + { + if (client.IsConnected == true) + client.DisconnectFromServer(); + client.Dispose(); + client = null; + } } + public bool IsConnected() + { + if (client == null) + return false; + return client.IsConnected; + } + public override bool Send(SystemMessage message) { byte[] bytes = SystemMessage.Serialize(message); @@ -50,11 +72,5 @@ OnDataArrived(mes); } - public bool IsConnected() - { - if (client == null) - return false; - return client.IsConnected; - } } } Deleted: ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs 2008-10-07 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs 2008-10-07 21:07:31 UTC (rev 411) @@ -1,37 +0,0 @@ -using System; -using AcmContester.Library.LibraryExtention; - -namespace AcmContester.Library.Connector -{ - public class SocketClientTask: AbstractConnector - { - SocketClient client; - - public SocketClientTask(string IP) - { - client = new SocketClient(IP); - client.onDataArrived += base.OnDataArrived; - } - - public override bool Send(SystemMessage message) - { - return client.Send(message); - } - - public void Connect() - { - client.Connect(); - } - - public void Disconnect() - { - if (client.IsConnected() == true) - client.Disconnect(); - } - - public bool IsConnected() - { - return client.IsConnected(); - } - } -} Deleted: ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs 2008-10-07 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs 2008-10-07 21:07:31 UTC (rev 411) @@ -1,180 +0,0 @@ -using System; -using JadBenAutho.EasySocket; -using System.Collections.Generic; -using AcmContester.Library.LibraryExtention; - -namespace AcmContester.Library.Connector -{ - public class SocketServerTask: AbstractConnector - { - SocketServer server; - - //val: - //free - vilnyj - //busy - zajnjatyj - //unknown - nevidomyj - Dictionary<int, string> cleintStatus = new Dictionary<int, string>(); - - - public SocketServerTask() - { - server = new SocketServer(); - server.onDataArrived += DataArrived; - } - - public void Start() - { - server.Start(); - } - public void Stop() - { - server.Stop(); - } - - private bool ServerSend(SystemMessage mes, int TargetClientIndex) - { - return server.Send(mes, TargetClientIndex); - } - public override bool Send(SystemMessage message) - { - List<int> freeTesters = GetFreeTesters(); - if (freeTesters.Count != 0) - { - Random random = new Random(); - DataSender(message, freeTesters[random.Next() % freeTesters.Count]); - return true; - } - return false; - } - protected virtual void DataSender(SystemMessage message, int clientIndex) - { - cleintStatus[server.ClientsList[clientIndex].GetHashCode()] = "busy"; - message.Description = server.ClientsList[clientIndex].GetHashCode().ToString(); - ServerSend(message, clientIndex); - } - - private void DataArrived(SystemMessage sysMes) - { - if (sysMes.IsType("SystemTestBusyMessage") == true) - { - if (SystemMessageX(sysMes) == true) - return; - } - DataArriver(sysMes); - } - protected virtual void DataArriver(SystemMessage message) - { - cleintStatus[Int32.Parse(message.Description)] = "free"; - OnDataArrived(message); - } - - public int CountClients() - { - return server.CountClients; - } - - - Queue<string> q = new Queue<string>(); - - /// <summary> - /// \xCF\xEE\xE2\xE5\xF0\xF2\xE0\xBA \xF1\xEF\xE8\xF1\xEE\xEA \xE2\xB3\xEB\xFC\xED\xE8\xF5 \xF2\xE5\xF1\xF2\xE5\xF0\xB3\xE2. - /// ³\xE4\xEF\xF0\xE0\xE2\xEB\xFF\xBA \xEA\xEE\xE6\xED\xEE\xEC\xF3 \xF2\xE5\xF1\xF2\xE5\xF0\xF3 \xEF\xEE\xE2\xB3\xE4\xEE\xEC\xEB\xE5\xED\xED\xFF \xE2\xE8\xE3\xEB\xFF\xE4\xF3: - /// test HashCodeTester HashCode\xC7\xE0\xEF\xE8\xF2\xF3 - /// \xC4\xE5 HashCode\xC7\xE0\xEF\xE8\xF2\xF3 - \xF6\xE5 \xF3\xED\xB3\xEA\xE0\xEB\xFC\xED\xE8\xE9 \xF5\xE5\xF8 \xEA\xEE\xE4 \xEA\xEE\xE6\xED\xEE\xE3\xEE \xF2\xE0\xEA\xEE\xE3\xEE \xE7\xE0\xEF\xE8\xF2\xF3. - /// \xCF\xEE\xF2\xB3\xEC \xF7\xE5\xEA\xE0\xBA \xEE\xE4\xED\xF3 (1) \xF1\xE5\xEA\xF3\xED\xE4\xF3 \xEA\xEE\xEB\xE8 \xE7\xE0\xEF\xEE\xE2\xED\xE8\xF2\xFC\xF1\xFF q \xF1\xEF\xE8\xF1\xEA\xEE\xEC \xEF\xF0\xE8\xF1\xEB\xE0\xED\xE8\xF5 \xEF\xEE\xE2\xB3\xE4\xEE\xEC\xEB\xE5\xED\xFC - /// \xDF\xEA\xF9\xEE \xF2\xE5\xF1\xF2\xE5\xF0 \xEF\xEE\xE2\xB3\xE4\xEE\xEC\xEB\xFF\xBA \xF9\xEE \xE2\xB3\xED \xE2\xB3\xEB\xFC\xED\xE8\xE9, \xF2\xEE\xE4\xB3 \xE9\xEE\xE3\xEE \xED\xEE\xEC\xE5\xF0 \xE7\xE0\xED\xEE\xF1\xE8\xF2\xFC\xF1\xFF \xE4\xEE \xF0\xE5\xE7\xF3\xEB\xFC\xF2\xE0\xF2\xF3. - /// </summary> - /// <returns>\xD1\xEF\xE8\xF1\xEE\xEA \xE2\xB3\xEB\xFC\xED\xE8\xF5 \xF2\xE5\xF1\xF2\xE5\xF0\xB3\xE2</returns> - private List<int> GetFreeTesters() - { - if (server == null) - { - return new List<int>(); - } - - q.Clear(); - string curHashCode = DateTime.Now.GetHashCode().ToString(); - for (int i = 0; i < server.CountClients; i++) - { - if (cleintStatus.ContainsKey(server.ClientsList[i].GetHashCode()) == false) - { - cleintStatus[server.ClientsList[i].GetHashCode()] = "unknown"; - } - if (cleintStatus[server.ClientsList[i].GetHashCode()] == "unknown") - { - string message = "test"; - message += " " + server.ClientsList[i].GetHashCode().ToString(); - message += " " + curHashCode; - SystemMessage mes = new SystemMessage(message, "SystemTestBusyMessage"); - ServerSend(mes, i); - } - } - - DateTime start = DateTime.Now; - Dictionary<string, int> preResult = new Dictionary<string, int>(); - while (server != null && preResult.Count < server.CountClients) - { - if (((TimeSpan)(DateTime.Now - start)).TotalSeconds > 1.0) - { - break; - } - lock (q) - { - while (q.Count != 0) - { - string curStr = q.Dequeue(); - char[] chars = new char[1]; - chars[0] = ' '; - string[] mes = curStr.Split(chars); - if (mes[0] == "free" && curHashCode == mes[2]) - { - cleintStatus[Int32.Parse(mes[1])] = "free"; - preResult.Add(mes[1], 0); - } - else - { - if (mes[0] == "busy") - { - cleintStatus[Int32.Parse(mes[1])] = "busy"; - } - } - } - } - System.Threading.Thread.Sleep(50); - } - - List<int> result = new List<int>(); - for (int i = 0; i < server.CountClients; i++) - { - if (cleintStatus.ContainsKey(server.ClientsList[i].GetHashCode()) == false) - cleintStatus[server.ClientsList[i].GetHashCode()] = "unknown"; - if (cleintStatus[server.ClientsList[i].GetHashCode()] == "free") - result.Add(i); - //string hashCode = server.ClientsList[i].GetHashCode().ToString(); - //if (preResult.ContainsKey(hashCode) == true) - // result.Add(i); - } - return result; - } - - /// <summary> - /// \xCF\xE5\xF0\xE5\xE2\xB3\xF0\xE0\xBA \xF7\xE8 \xF6\xE5 \xF1\xEB\xF3\xE6\xE1\xEE\xE2\xE5 \xEF\xEE\xE2\xB3\xE4\xEE\xEC\xEB\xE5\xED\xED\xFF. - /// \xDF\xEA\xF9\xEE \xF1\xEB\xF3\xE6\xE1\xEE\xE2\xE5, \xF2\xEE\xE4\xB3 \xE2\xEE\xED\xEE \xE7\xE0\xED\xEE\xF1\xE8\xF2\xFC\xF1\xFF \xE4\xEE \xF1\xEF\xE8\xF1\xEA\xF3 q - /// </summary> - /// <param name="message">\xCF\xEE\xE2\xB3\xE4\xEE\xEC\xEB\xE5\xED\xED\xFF</param> - /// <returns>\xDF\xEA\xF9\xEE \xF6\xE5 \xF1\xEB\xF3\xE6\xE1\xEE\xE2\xE5 \xEF\xEE\xE2\xB3\xE4\xEE\xEC\xEB\xE5\xED\xED\xFF, \xF2\xEE\xE4\xB3 \xEF\xEE\xE2\xE5\xF0\xF2\xE0\xBA\xF2\xFC\xF1\xFF true \xEF\xEE \xB3\xED\xE0\xEA\xF8\xEE\xEC\xF3 false</returns> - private bool SystemMessageX(SystemMessage message) - { - char[] chars = new char[1]; - chars[0] = ' '; - string[] mes = message.Message.Split(chars); - if (mes[0] == "busy" || mes[0] == "free") - { - lock(q) - q.Enqueue(message.Message); - return true; - } - return false; - } - } -} Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-10-07 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-10-07 21:07:31 UTC (rev 411) @@ -10,7 +10,7 @@ /// <summary> /// Pattern: Singleton /// </summary> - class SocketServerGate : SocketServer + class SocketServerGate : SocketServerTask { private static SocketServerGate instance = new SocketServerGate(); Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj 2008-10-07 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj 2008-10-07 21:07:31 UTC (rev 411) @@ -28,6 +28,10 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> + <Reference Include="EasySocket, Version=1.0.2082.18867, Culture=neutral"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\Resource\EasySocket.dll</HintPath> + </Reference> <Reference Include="LogDataGridView, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\..\Resource\LogDataGridView.dll</HintPath> @@ -48,6 +52,7 @@ <Compile Include="SocketServerGatePluginUserControl.Designer.cs"> <DependentUpon>SocketServerGatePluginUserControl.cs</DependentUpon> </Compile> + <Compile Include="SocketServerTask.cs" /> <Compile Include="WorkingPool.cs" /> </ItemGroup> <ItemGroup> Copied: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerTask.cs (from rev 410, ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs) =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerTask.cs (rev 0) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerTask.cs 2008-10-07 21:07:31 UTC (rev 411) @@ -0,0 +1,182 @@ +using System; +using System.Collections.Generic; +using AcmContester.Library.LibraryExtention; +using AcmContester.Library.Connector; + +namespace AcmContester.Plugins.MediatorPlugins.SocketServerGatePlugin +{ + public class SocketServerTask: AbstractConnector + { + SocketServer server; + + //val: + //free - vilnyj + //busy - zajnjatyj + //unknown - nevidomyj + Dictionary<int, string> cleintStatus = new Dictionary<int, string>(); + + + public SocketServerTask() + { + server = new SocketServer(); + server.onDataArrived += DataArrived; + } + + public void Start() + { + server.Start(); + } + public void Stop() + { + server.Stop(); + } + + private bool ServerSend(SystemMessage mes, int TargetClientIndex) + { + return server.Send(mes, TargetClientIndex); + } + public override bool Send(SystemMessage message) + { + List<int> freeTesters = GetFreeTesters(); + if (freeTesters.Count != 0) + { + Random random = new Random(); + DataSender(message, freeTesters[random.Next() % freeTesters.Count]); + return true; + } + return false; + } + protected virtual void DataSender(SystemMessage message, int clientIndex) + { + //TODO: dlja cjogo bulo potribno pidkljuchyty EasySocket + // potim ne zabuty jogo vidjednaty vid chogo proektu + cleintStatus[server.ClientsList[clientIndex].GetHashCode()] = "busy"; + message.Description = server.ClientsList[clientIndex].GetHashCode().ToString(); + ServerSend(message, clientIndex); + } + + private void DataArrived(SystemMessage sysMes) + { + if (sysMes.IsType("SystemTestBusyMessage") == true) + { + if (SystemMessageX(sysMes) == true) + return; + } + DataArriver(sysMes); + } + protected virtual void DataArriver(SystemMessage message) + { + cleintStatus[Int32.Parse(message.Description)] = "free"; + OnDataArrived(message); + } + + public int CountClients() + { + return server.CountClients; + } + + + Queue<string> q = new Queue<string>(); + + /// <summary> + /// \xCF\xEE\xE2\xE5\xF0\xF2\xE0\xBA \xF1\xEF\xE8\xF1\xEE\xEA \xE2\xB3\xEB\xFC\xED\xE8\xF5 \xF2\xE5\xF1\xF2\xE5\xF0\xB3\xE2. + /// ³\xE4\xEF\xF0\xE0\xE2\xEB\xFF\xBA \xEA\xEE\xE6\xED\xEE\xEC\xF3 \xF2\xE5\xF1\xF2\xE5\xF0\xF3 \xEF\xEE\xE2\xB3\xE4\xEE\xEC\xEB\xE5\xED\xED\xFF \xE2\xE8\xE3\xEB\xFF\xE4\xF3: + /// test HashCodeTester HashCode\xC7\xE0\xEF\xE8\xF2\xF3 + /// \xC4\xE5 HashCode\xC7\xE0\xEF\xE8\xF2\xF3 - \xF6\xE5 \xF3\xED\xB3\xEA\xE0\xEB\xFC\xED\xE8\xE9 \xF5\xE5\xF8 \xEA\xEE\xE4 \xEA\xEE\xE6\xED\xEE\xE3\xEE \xF2\xE0\xEA\xEE\xE3\xEE \xE7\xE0\xEF\xE8\xF2\xF3. + /// \xCF\xEE\xF2\xB3\xEC \xF7\xE5\xEA\xE0\xBA \xEE\xE4\xED\xF3 (1) \xF1\xE5\xEA\xF3\xED\xE4\xF3 \xEA\xEE\xEB\xE8 \xE7\xE0\xEF\xEE\xE2\xED\xE8\xF2\xFC\xF1\xFF q \xF1\xEF\xE8\xF1\xEA\xEE\xEC \xEF\xF0\xE8\xF1\xEB\xE0\xED\xE8\xF5 \xEF\xEE\xE2\xB3\xE4\xEE\xEC\xEB\xE5\xED\xFC + /// \xDF\xEA\xF9\xEE \xF2\xE5\xF1\xF2\xE5\xF0 \xEF\xEE\xE2\xB3\xE4\xEE\xEC\xEB\xFF\xBA \xF9\xEE \xE2\xB3\xED \xE2\xB3\xEB\xFC\xED\xE8\xE9, \xF2\xEE\xE4\xB3 \xE9\xEE\xE3\xEE \xED\xEE\xEC\xE5\xF0 \xE7\xE0\xED\xEE\xF1\xE8\xF2\xFC\xF1\xFF \xE4\xEE \xF0\xE5\xE7\xF3\xEB\xFC\xF2\xE0\xF2\xF3. + /// </summary> + /// <returns>\xD1\xEF\xE8\xF1\xEE\xEA \xE2\xB3\xEB\xFC\xED\xE8\xF5 \xF2\xE5\xF1\xF2\xE5\xF0\xB3\xE2</returns> + private List<int> GetFreeTesters() + { + if (server == null) + { + return new List<int>(); + } + + q.Clear(); + string curHashCode = DateTime.Now.GetHashCode().ToString(); + for (int i = 0; i < server.CountClients; i++) + { + if (cleintStatus.ContainsKey(server.ClientsList[i].GetHashCode()) == false) + { + cleintStatus[server.ClientsList[i].GetHashCode()] = "unknown"; + } + if (cleintStatus[server.ClientsList[i].GetHashCode()] == "unknown") + { + string message = "test"; + message += " " + server.ClientsList[i].GetHashCode().ToString(); + message += " " + curHashCode; + SystemMessage mes = new SystemMessage(message, "SystemTestBusyMessage"); + ServerSend(mes, i); + } + } + + DateTime start = DateTime.Now; + Dictionary<string, int> preResult = new Dictionary<string, int>(); + while (server != null && preResult.Count < server.CountClients) + { + if (((TimeSpan)(DateTime.Now - start)).TotalSeconds > 1.0) + { + break; + } + lock (q) + { + while (q.Count != 0) + { + string curStr = q.Dequeue(); + char[] chars = new char[1]; + chars[0] = ' '; + string[] mes = curStr.Split(chars); + if (mes[0] == "free" && curHashCode == mes[2]) + { + cleintStatus[Int32.Parse(mes[1])] = "free"; + preResult.Add(mes[1], 0); + } + else + { + if (mes[0] == "busy") + { + cleintStatus[Int32.Parse(mes[1])] = "busy"; + } + } + } + } + System.Threading.Thread.Sleep(50); + } + + List<int> result = new List<int>(); + for (int i = 0; i < server.CountClients; i++) + { + if (cleintStatus.ContainsKey(server.ClientsList[i].GetHashCode()) == false) + cleintStatus[server.ClientsList[i].GetHashCode()] = "unknown"; + if (cleintStatus[server.ClientsList[i].GetHashCode()] == "free") + result.Add(i); + //string hashCode = server.ClientsList[i].GetHashCode().ToString(); + //if (preResult.ContainsKey(hashCode) == true) + // result.Add(i); + } + return result; + } + + /// <summary> + /// \xCF\xE5\xF0\xE5\xE2\xB3\xF0\xE0\xBA \xF7\xE8 \xF6\xE5 \xF1\xEB\xF3\xE6\xE1\xEE\xE2\xE5 \xEF\xEE\xE2\xB3\xE4\xEE\xEC\xEB\xE5\xED\xED\xFF. + /// \xDF\xEA\xF9\xEE \xF1\xEB\xF3\xE6\xE1\xEE\xE2\xE5, \xF2\xEE\xE4\xB3 \xE2\xEE\xED\xEE \xE7\xE0\xED\xEE\xF1\xE8\xF2\xFC\xF1\xFF \xE4\xEE \xF1\xEF\xE8\xF1\xEA\xF3 q + /// </summary> + /// <param name="message">\xCF\xEE\xE2\xB3\xE4\xEE\xEC\xEB\xE5\xED\xED\xFF</param> + /// <returns>\xDF\xEA\xF9\xEE \xF6\xE5 \xF1\xEB\xF3\xE6\xE1\xEE\xE2\xE5 \xEF\xEE\xE2\xB3\xE4\xEE\xEC\xEB\xE5\xED\xED\xFF, \xF2\xEE\xE4\xB3 \xEF\xEE\xE2\xE5\xF0\xF2\xE0\xBA\xF2\xFC\xF1\xFF true \xEF\xEE \xB3\xED\xE0\xEA\xF8\xEE\xEC\xF3 false</returns> + private bool SystemMessageX(SystemMessage message) + { + char[] chars = new char[1]; + chars[0] = ' '; + string[] mes = message.Message.Split(chars); + if (mes[0] == "busy" || mes[0] == "free") + { + lock(q) + q.Enqueue(message.Message); + return true; + } + return false; + } + } +} Modified: ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-10-07 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-10-07 21:07:31 UTC (rev 411) @@ -1,22 +1,22 @@ using System; using AcmContester.Library.Connector; -using System.Threading; using AcmContester.Library.LibraryExtention; using AcmContester.Library.LibraryExtention.Data; namespace AcmContester.Tester.Library { - class SocketClientGate: SocketClientTask + class SocketClientGate: AbstractConnector { + SocketClient client; private string descriptionMessage = ""; //TODO: tut vin tymchasovo, potribno bude perenesty jogo kudys dali private WorkRunner workRunner = new WorkRunner(); public SocketClientGate(string IP) - : base(IP) { - base.onDataArrived +=new SocketClient.DataArrivedDelegate(SocketClientGate_onDataArrived); + client = new SocketClient(IP); + client.onDataArrived +=new SocketClient.DataArrivedDelegate(SocketClientGate_onDataArrived); workRunner.onDataArrived += Send; } @@ -37,11 +37,6 @@ } } - public new void Disconnect() - { - workRunner.Stop(); - base.Disconnect(); - } private bool SystemMessageX(SystemMessage _message) @@ -67,7 +62,7 @@ result += " " + mes[i]; } OnAddLogText("SystemSend", result); - base.Send(new SystemMessage(result, _message.Type, _message.Description)); + this.Send(new SystemMessage(result, _message.Type, _message.Description)); return true; } return false; @@ -78,10 +73,13 @@ message = new SystemMessage(message); message.Description = descriptionMessage; - Result res = Result.CreateFromXml(message.Message); - OnAddLogText("Send", "ID " + res.Submit.id + " result - " + res.res); + if (message.IsType("TestingResult") == true) + { + Result res = Result.CreateFromXml(message.Message); + OnAddLogText("Send", "ID " + res.Submit.id + " result - " + res.res); + } - return base.Send(message); + return client.Send(message); } public delegate void AddLogTextDelegate(string type, string text); @@ -91,5 +89,19 @@ if (onAddLogText != null) onAddLogText(type,text); } + + public void Connect() + { + client.Connect(); + } + public void Disconnect() + { + client.Disconnect(); + workRunner.Stop(); + } + public bool IsConnected() + { + return client.IsConnected(); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |