From: <br...@us...> - 2008-06-01 11:16:16
|
Revision: 193 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=193&view=rev Author: brus07 Date: 2008-06-01 04:16:18 -0700 (Sun, 01 Jun 2008) Log Message: ----------- Added DataContainer (DataMediator) to SocketServerPlugin Modified Paths: -------------- ACMServer/trunk/MediatorSolution/Library/Connector/WebConnector.cs ACMServer/trunk/MediatorSolution/Mediator/Form1.cs ACMServer/trunk/MediatorSolution/Mediator/Library/Data/DataMediator.cs ACMServer/trunk/MediatorSolution/Mediator/Library/Plugins/BaseMediatorPlugin.cs ACMServer/trunk/MediatorSolution/Mediator/Library/Plugins/SocketGate/SocketServerPlugin.cs ACMServer/trunk/MediatorSolution/Mediator/Library/Plugins/WebGate/WebGatePlugin.cs ACMServer/trunk/MediatorSolution/Mediator/Mediator.csproj Removed Paths: ------------- ACMServer/trunk/MediatorSolution/Mediator/Library/Connector/ ACMServer/trunk/MediatorSolution/Mediator/Library/SocketGate.cs ACMServer/trunk/MediatorSolution/Mediator/Library/WebGate.cs Modified: ACMServer/trunk/MediatorSolution/Library/Connector/WebConnector.cs =================================================================== --- ACMServer/trunk/MediatorSolution/Library/Connector/WebConnector.cs 2008-05-31 14:05:42 UTC (rev 192) +++ ACMServer/trunk/MediatorSolution/Library/Connector/WebConnector.cs 2008-06-01 11:16:18 UTC (rev 193) @@ -63,7 +63,7 @@ { using (System.IO.StreamWriter sr = new System.IO.StreamWriter("b.txt", true)) { - sr.WriteLine(message); + sr.WriteLine(DateTime.Now.ToLongTimeString() + ": " + message); } } catch (Exception) Modified: ACMServer/trunk/MediatorSolution/Mediator/Form1.cs =================================================================== --- ACMServer/trunk/MediatorSolution/Mediator/Form1.cs 2008-05-31 14:05:42 UTC (rev 192) +++ ACMServer/trunk/MediatorSolution/Mediator/Form1.cs 2008-06-01 11:16:18 UTC (rev 193) @@ -59,7 +59,7 @@ private void button4_Click(object sender, EventArgs e) { - AcmContester.Mediator.Library.Data.DataMediator d = AcmContester.Mediator.Library.Data.DataMediator.GetMediator(); + //AcmContester.Mediator.Library.Data.DataMediator d = AcmContester.Mediator.Library.Data.DataMediator.GetMediator(); //d.DeleteOld(); TcpClient tcpClient = new TcpClient(); Modified: ACMServer/trunk/MediatorSolution/Mediator/Library/Data/DataMediator.cs =================================================================== --- ACMServer/trunk/MediatorSolution/Mediator/Library/Data/DataMediator.cs 2008-05-31 14:05:42 UTC (rev 192) +++ ACMServer/trunk/MediatorSolution/Mediator/Library/Data/DataMediator.cs 2008-06-01 11:16:18 UTC (rev 193) @@ -4,26 +4,12 @@ namespace AcmContester.Mediator.Library.Data { - /// <summary> - /// Pattern: Singleton - /// </summary> class DataMediator { - static DataMediator instance = new DataMediator(); - const int secondToLive = 60; Dictionary<int, DateTime> d = new Dictionary<int, DateTime>(); - private DataMediator() - { - } - - public static DataMediator GetMediator() - { - return instance; - } - /// <summary> /// \xDF\xEA\xF9\xEE \xF1\xE0\xE1\xEC\xB3\xF2 \xF3 \xF7\xE5\xF0\xE7\xB3 \xE7\xED\xE0\xF5\xEE\xE4\xE8\xF2\xFC\xF1\xFF \xE1\xB3\xEB\xFC\xF8\xE5 \xED\xB3\xE6 secondToLive \xF1\xE5\xEA\xF3\xED\xE4, \xF2\xEE \xE2\xB3\xED \xEF\xF0\xEE\xF1\xF2\xEE \xE2\xE8\xE4\xE0\xEB\xFF\xBA\xF2\xFC\xF1\xFF \xE7 \xED\xE5\xBF /// </summary> @@ -34,7 +20,7 @@ foreach(KeyValuePair<int,DateTime> elem in d) { TimeSpan ts = now - elem.Value; - if (ts.Seconds > secondToLive) + if (ts.TotalSeconds > secondToLive) { keysToDelete.Add(elem.Key); } @@ -50,36 +36,24 @@ return d.ContainsKey(id); } - public void Add(Submit data) + public bool Add(Submit data) { + DeleteOld(); if (Contains(data.GetHashCode()) == false) { d.Add(data.GetHashCode(), DateTime.Now); - SendToTester(data); + return true; } - DeleteOld(); + return false; } public void Return(Result data) { + DeleteOld(); if (Contains(data.Submit.GetHashCode()) == true) { d.Remove(data.Submit.GetHashCode()); } - SendToWeb(data); - DeleteOld(); } - - private void SendToTester(Submit data) - { - SocketGate gate = new SocketGate(); - gate.SendToClient(data); - } - - private void SendToWeb(Result data) - { - WebGate gate = new WebGate(); - gate.SendToWeb(data); - } } } Modified: ACMServer/trunk/MediatorSolution/Mediator/Library/Plugins/BaseMediatorPlugin.cs =================================================================== --- ACMServer/trunk/MediatorSolution/Mediator/Library/Plugins/BaseMediatorPlugin.cs 2008-05-31 14:05:42 UTC (rev 192) +++ ACMServer/trunk/MediatorSolution/Mediator/Library/Plugins/BaseMediatorPlugin.cs 2008-06-01 11:16:18 UTC (rev 193) @@ -9,7 +9,7 @@ public abstract void Send(string message); - protected void DataArrived(string message) + protected virtual void DataArrived(string message) { if (onDataArrived != null) onDataArrived(message); Modified: ACMServer/trunk/MediatorSolution/Mediator/Library/Plugins/SocketGate/SocketServerPlugin.cs =================================================================== --- ACMServer/trunk/MediatorSolution/Mediator/Library/Plugins/SocketGate/SocketServerPlugin.cs 2008-05-31 14:05:42 UTC (rev 192) +++ ACMServer/trunk/MediatorSolution/Mediator/Library/Plugins/SocketGate/SocketServerPlugin.cs 2008-06-01 11:16:18 UTC (rev 193) @@ -1,14 +1,19 @@ using System; using AcmContester.Mediator.Library.Plugins; using AcmContester.Library.Connector; +using AcmContester.Mediator.Library.Data; namespace AcmContester.Mediator.Library.Plugins.SocketGate { + /// <summary> + /// Pattern: Singleton + /// </summary> class SocketServerPlugin : BaseMediatorPlugin { private static SocketServerPlugin instance = new SocketServerPlugin(); private SocketServer server = new SocketServer(); + private DataMediator dataContainer = new DataMediator(); private SocketServerPlugin() { @@ -23,9 +28,16 @@ public override void Send(string message) { - server.Send(message); + if (dataContainer.Add(new Submit(message))) + server.Send(message); } + protected override void DataArrived(string message) + { + dataContainer.Return(new Result(message)); + base.DataArrived(message); + } + internal int CountClients() { return server.CountClients(); Modified: ACMServer/trunk/MediatorSolution/Mediator/Library/Plugins/WebGate/WebGatePlugin.cs =================================================================== --- ACMServer/trunk/MediatorSolution/Mediator/Library/Plugins/WebGate/WebGatePlugin.cs 2008-05-31 14:05:42 UTC (rev 192) +++ ACMServer/trunk/MediatorSolution/Mediator/Library/Plugins/WebGate/WebGatePlugin.cs 2008-06-01 11:16:18 UTC (rev 193) @@ -4,6 +4,9 @@ namespace AcmContester.Mediator.Library.Plugins.WebGate { + /// <summary> + /// Pattern: Singleton + /// </summary> class WebGatePlugin: BaseMediatorPlugin { private static WebGatePlugin instance = new WebGatePlugin(); Deleted: ACMServer/trunk/MediatorSolution/Mediator/Library/SocketGate.cs =================================================================== --- ACMServer/trunk/MediatorSolution/Mediator/Library/SocketGate.cs 2008-05-31 14:05:42 UTC (rev 192) +++ ACMServer/trunk/MediatorSolution/Mediator/Library/SocketGate.cs 2008-06-01 11:16:18 UTC (rev 193) @@ -1,31 +0,0 @@ -using System; -using AcmContester.Library.Connector; -using AcmContester.AcmLibraryExtention; -using AcmContester.Mediator.Library.Data; -using AcmContester.Mediator.Library.Connector; - -namespace AcmContester.Mediator.Library -{ - class SocketGate - { - SocketServerSingleton server = SocketServerSingleton.GetServer(); - - DataMediator mediator = DataMediator.GetMediator(); - - public SocketGate() - { - server.onDataArrived += DataArrived; - } - - public void SendToClient(Submit data) - { - server.Send(data.ToString()); - } - - private void DataArrived(string message) - { - //TODO: \xEF\xEE\xF2\xF0\xB3\xE1\xED\xEE \xE7\xF0\xEE\xE1\xE8\xF2\xE8 \xEF\xE5\xF0\xE5\xE2\xB3\xF0\xEA\xF3 \xF9\xEE \xF1\xE0\xEC\xE5 \xEF\xF0\xE8\xE9\xEC\xE0\xBA\xF2\xFC\xF1\xFF \xE2\xB3\xE4 Socket'\xE0, \xE1\xEE \xEC\xEE\xE6\xE5 \xE1\xF3\xF2\xE8 \xED\xE5 \xF2\xB3\xEB\xFC\xEA\xE8 Result - mediator.Return(new Result(message)); - } - } -} Deleted: ACMServer/trunk/MediatorSolution/Mediator/Library/WebGate.cs =================================================================== --- ACMServer/trunk/MediatorSolution/Mediator/Library/WebGate.cs 2008-05-31 14:05:42 UTC (rev 192) +++ ACMServer/trunk/MediatorSolution/Mediator/Library/WebGate.cs 2008-06-01 11:16:18 UTC (rev 193) @@ -1,29 +0,0 @@ -using System; -using AcmContester.Mediator.Library.Data; -using AcmContester.Mediator.Library.Connector; - -namespace AcmContester.Mediator.Library -{ - class WebGate - { - WebConnectorSingleton webConnector = WebConnectorSingleton.GetWebConnector(); - - DataMediator mediator = DataMediator.GetMediator(); - - public WebGate() - { - webConnector.onDataArrived += DataArrived; - } - - public void SendToWeb(Result data) - { - webConnector.Send(data.ToString()); - } - - private void DataArrived(string message) - { - //TODO: \xEF\xEE\xF2\xF0\xB3\xE1\xED\xEE \xE7\xF0\xEE\xE1\xE8\xF2\xE8 \xEF\xE5\xF0\xE5\xE2\xB3\xF0\xEA\xF3 \xF9\xEE \xF1\xE0\xEC\xE5 \xEF\xF0\xE8\xE9\xEC\xE0\xBA\xF2\xFC\xF1\xFF \xE2\xB3\xE4 Web'\xE0, \xE1\xEE \xEC\xEE\xE6\xE5 \xE1\xF3\xF2\xE8 \xED\xE5 \xF2\xB3\xEB\xFC\xEA\xE8 Submit. \xD2\xE0\xEA\xEE\xE6 \xEC\xEE\xE6\xE5 \xE1\xF3\xF2\xE8 \xE4\xE5\xEA\xB3\xEB\xFC\xEA\xE0 Submit'\xB3\xE2 - mediator.Add(new Submit(message)); - } - } -} Modified: ACMServer/trunk/MediatorSolution/Mediator/Mediator.csproj =================================================================== --- ACMServer/trunk/MediatorSolution/Mediator/Mediator.csproj 2008-05-31 14:05:42 UTC (rev 192) +++ ACMServer/trunk/MediatorSolution/Mediator/Mediator.csproj 2008-06-01 11:16:18 UTC (rev 193) @@ -42,8 +42,6 @@ <Compile Include="Form1.Designer.cs"> <DependentUpon>Form1.cs</DependentUpon> </Compile> - <Compile Include="Library\Connector\SocketServerSingleton.cs" /> - <Compile Include="Library\Connector\WebConnectorSignleton.cs" /> <Compile Include="Library\Data\DataMediator.cs" /> <Compile Include="Library\Data\Result.cs" /> <Compile Include="Library\Data\Submit.cs" /> @@ -53,8 +51,6 @@ <Compile Include="Library\Plugins\SocketGate\SocketServerPlugin.cs" /> <Compile Include="Library\Plugins\WebGate\CreaterMediatorPlugin.cs" /> <Compile Include="Library\Plugins\WebGate\WebGatePlugin.cs" /> - <Compile Include="Library\SocketGate.cs" /> - <Compile Include="Library\WebGate.cs" /> <Compile Include="Program.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <EmbeddedResource Include="Form1.resx"> @@ -91,6 +87,9 @@ <Name>LibraryExtention</Name> </ProjectReference> </ItemGroup> + <ItemGroup> + <Folder Include="Library\Connector\" /> + </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |