|
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.
|