From: <br...@us...> - 2008-10-08 13:15:42
|
Revision: 412 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=412&view=rev Author: brus07 Date: 2008-10-08 13:15:26 +0000 (Wed, 08 Oct 2008) Log Message: ----------- Continues added new class architecture for Connector module. Added/Moved SocketClientTask/SocketServerTask to Connector module. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs Added Paths: ----------- ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs Removed Paths: ------------- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerTask.cs Modified: ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-10-07 21:07:31 UTC (rev 411) +++ ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-10-08 13:15:26 UTC (rev 412) @@ -43,9 +43,11 @@ <Compile Include="Getter\WebGetterOld.cs" /> <Compile Include="SocketClient.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="SocketClientTask.cs" /> <Compile Include="SocketServer.cs"> <SubType>Code</SubType> </Compile> + <Compile Include="SocketServerTask.cs" /> <Compile Include="WebConnector.cs" /> </ItemGroup> <ItemGroup> Copied: ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs (from rev 411, ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs) =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs (rev 0) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs 2008-10-08 13:15:26 UTC (rev 412) @@ -0,0 +1,100 @@ +using System; +using AcmContester.Library.Connector; +using AcmContester.Library.LibraryExtention; +using AcmContester.Library.LibraryExtention.Data; + +namespace AcmContester.Library.Connector +{ + public class SocketClientTask: AbstractConnector + { + SocketClient client; + private string descriptionMessage = ""; + + public SocketClientTask(string IP) + { + client = new SocketClient(IP); + client.onDataArrived +=new SocketClient.DataArrivedDelegate(SocketClientGate_onDataArrived); + } + + void SocketClientGate_onDataArrived(SystemMessage message) + { + if (message.IsType("SystemTestBusyMessage") == true) + { + if (SystemMessageX(message) == true) + return; + } + + descriptionMessage = message.Description; + + OnDataArrived(message); + } + + + + private bool SystemMessageX(SystemMessage _message) + { + string message = _message.Message; + char[] chars = new char[1]; + chars[0] = ' '; + string[] mes = message.Split(chars); + if (mes[0] == "test") + { + OnAddLogText("SystemReceive", message); + string result = ""; + if (IsBusy() == true) + { + result = "busy"; + } + else + { + result = "free"; + } + for (int i = 1; i < mes.Length; i++) + { + result += " " + mes[i]; + } + OnAddLogText("SystemSend", result); + this.Send(new SystemMessage(result, _message.Type, _message.Description)); + return true; + } + return false; + } + + public override bool Send(SystemMessage message) + { + message = new SystemMessage(message); + message.Description = descriptionMessage; + return client.Send(message); + } + + public delegate void AddLogTextDelegate(string type, string text); + public event AddLogTextDelegate onAddLogText; + private void OnAddLogText(string type, string text) + { + if (onAddLogText != null) + onAddLogText(type,text); + } + + public void Connect() + { + client.Connect(); + } + public void Disconnect() + { + client.Disconnect(); + } + public bool IsConnected() + { + return client.IsConnected(); + } + + public delegate bool IsBusyDelegate(); + public event IsBusyDelegate isBusy; + public bool IsBusy() + { + if (isBusy != null) + return isBusy(); + return false; + } + } +} Property changes on: ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs ___________________________________________________________________ Added: svn:mergeinfo + Copied: ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs (from rev 411, ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerTask.cs) =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs (rev 0) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs 2008-10-08 13:15:26 UTC (rev 412) @@ -0,0 +1,182 @@ +using System; +using System.Collections.Generic; +using AcmContester.Library.LibraryExtention; +using AcmContester.Library.Connector; + +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) + { + //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/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj 2008-10-07 21:07:31 UTC (rev 411) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj 2008-10-08 13:15:26 UTC (rev 412) @@ -28,10 +28,6 @@ <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> @@ -52,7 +48,6 @@ <Compile Include="SocketServerGatePluginUserControl.Designer.cs"> <DependentUpon>SocketServerGatePluginUserControl.cs</DependentUpon> </Compile> - <Compile Include="SocketServerTask.cs" /> <Compile Include="WorkingPool.cs" /> </ItemGroup> <ItemGroup> Deleted: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerTask.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerTask.cs 2008-10-07 21:07:31 UTC (rev 411) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerTask.cs 2008-10-08 13:15:26 UTC (rev 412) @@ -1,182 +0,0 @@ -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 21:07:31 UTC (rev 411) +++ ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-10-08 13:15:26 UTC (rev 412) @@ -1,77 +1,44 @@ using System; -using AcmContester.Library.Connector; using AcmContester.Library.LibraryExtention; using AcmContester.Library.LibraryExtention.Data; +using AcmContester.Library.Connector; namespace AcmContester.Tester.Library { class SocketClientGate: AbstractConnector { - SocketClient client; - private string descriptionMessage = ""; + SocketClientTask client; //TODO: tut vin tymchasovo, potribno bude perenesty jogo kudys dali private WorkRunner workRunner = new WorkRunner(); public SocketClientGate(string IP) { - client = new SocketClient(IP); + client = new SocketClientTask(IP); client.onDataArrived +=new SocketClient.DataArrivedDelegate(SocketClientGate_onDataArrived); + client.onAddLogText += OnAddLogText; + client.isBusy += IsBusy; workRunner.onDataArrived += Send; } + bool IsBusy() + { + return workRunner.IsBusy(); + } + void SocketClientGate_onDataArrived(SystemMessage message) { - if (message.IsType("SystemTestBusyMessage") == true) - { - if (SystemMessageX(message) == true) - return; - } OnAddLogText("Receive", message.Message); - descriptionMessage = message.Description; - if (message.IsType("TestingSubmit") == true) { workRunner.AddWork(message.Message); } } - - - private bool SystemMessageX(SystemMessage _message) - { - string message = _message.Message; - char[] chars = new char[1]; - chars[0] = ' '; - string[] mes = message.Split(chars); - if (mes[0] == "test") - { - OnAddLogText("SystemReceive", message); - string result = ""; - if (workRunner.IsBusy() == true) - { - result = "busy"; - } - else - { - result = "free"; - } - for (int i = 1; i < mes.Length; i++) - { - result += " " + mes[i]; - } - OnAddLogText("SystemSend", result); - this.Send(new SystemMessage(result, _message.Type, _message.Description)); - return true; - } - return false; - } - public override bool Send(SystemMessage message) { message = new SystemMessage(message); - message.Description = descriptionMessage; if (message.IsType("TestingResult") == true) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |