|
From: <br...@us...> - 2008-06-15 18:39:05
|
Revision: 256
http://acmcontester.svn.sourceforge.net/acmcontester/?rev=256&view=rev
Author: brus07
Date: 2008-06-15 11:39:11 -0700 (Sun, 15 Jun 2008)
Log Message:
-----------
Move and implement "Data" into "Plugins" module
Modified Paths:
--------------
ACMServer/trunk/ACMServer/Mediator/Form1.cs
ACMServer/trunk/ACMServer/Mediator/Library/MediatorKernel.cs
ACMServer/trunk/ACMServer/Mediator/Mediator.csproj
ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs
ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs
ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj
ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsLoader.cs
ACMServer/trunk/ACMServer/Plugins/testRun/Program.cs
Added Paths:
-----------
ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/Data/
ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/Data/DataMediator.cs
ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/Data/Result.cs
ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/Data/Submit.cs
Removed Paths:
-------------
ACMServer/trunk/ACMServer/Mediator/Library/Data/
ACMServer/trunk/ACMServer/Mediator/Library/Plugins/
Modified: ACMServer/trunk/ACMServer/Mediator/Form1.cs
===================================================================
--- ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-06-15 16:28:12 UTC (rev 255)
+++ ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-06-15 18:39:11 UTC (rev 256)
@@ -7,8 +7,6 @@
using System.Windows.Forms;
using AcmContester.Library.Connector;
using System.Net.Sockets;
-using AcmContester.Mediator.Library.Plugins;
-using AcmContester.Mediator.Library.Plugins.SocketGate;
using System.IO;
namespace Mediator
@@ -62,9 +60,9 @@
private void Disconnnect()
{
- AcmContester.Mediator.Library.Plugins.SocketGate.CreaterMediatorPlugin socketCreater = new AcmContester.Mediator.Library.Plugins.SocketGate.CreaterMediatorPlugin();
- SocketServerPlugin b2 = (SocketServerPlugin)socketCreater.GetInstance();
- b2.Stop();
+ //AcmContester.Mediator.Library.Plugins.SocketGate.CreaterMediatorPlugin socketCreater = new AcmContester.Mediator.Library.Plugins.SocketGate.CreaterMediatorPlugin();
+ //SocketServerPlugin b2 = (SocketServerPlugin)socketCreater.GetInstance();
+ //b2.Stop();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
@@ -75,13 +73,14 @@
private void timer1_Tick(object sender, EventArgs e)
{
string mes = "CountOfClients: ";
-
+ /*
AcmContester.Mediator.Library.Plugins.SocketGate.CreaterMediatorPlugin socketCreater = new AcmContester.Mediator.Library.Plugins.SocketGate.CreaterMediatorPlugin();
SocketServerPlugin b2 = (SocketServerPlugin)socketCreater.GetInstance();
if (b2 != null)
mes += b2.CountClients().ToString();
else
mes += "0";
+ */
toolStripStatusLabel1.Text = mes;
}
Modified: ACMServer/trunk/ACMServer/Mediator/Library/MediatorKernel.cs
===================================================================
--- ACMServer/trunk/ACMServer/Mediator/Library/MediatorKernel.cs 2008-06-15 16:28:12 UTC (rev 255)
+++ ACMServer/trunk/ACMServer/Mediator/Library/MediatorKernel.cs 2008-06-15 18:39:11 UTC (rev 256)
@@ -1,6 +1,6 @@
using System;
using System.Collections;
-using AcmContester.Mediator.Library.Plugins;
+using AcmContester.Plugins.PluginsFramework;
namespace AcmContester.Mediator.Library
{
@@ -11,6 +11,7 @@
public void LoadLists()
{
+ /*
//TODO: \xEF\xEE\xF2\xF0\xB3\xE1\xED\xEE \xE2\xE8\xF2\xFF\xE3\xF3\xE2\xE0\xF2\xE8 \xE4\xE0\xED\xB3 \xB3\xE7 \xEF\xE0\xEF\xEE\xEA \xF3 \xFF\xEA\xE8\xE9\xF5 \xEC\xE0\xFE\xF2\xFC \xE7\xED\xE0\xF5\xEE\xE4\xE8\xF2\xE8\xF1\xFF \xE2\xB3\xE4\xEF\xEE\xE2\xB3\xE4\xED\xB3 dll \xE4\xEE \xEA\xEE\xE6\xED\xEE\xE3\xEE \xEF\xEB\xE0\xE3\xB3\xED\xF3
AcmContester.Mediator.Library.Plugins.WebGate.CreaterMediatorPlugin webCreater = new AcmContester.Mediator.Library.Plugins.WebGate.CreaterMediatorPlugin();
BaseMediatorPlugin b1 = webCreater.GetInstance();
@@ -23,6 +24,7 @@
b2.onDataArrived += DataArrivedFromTesterList;
b2.onWorkingData += WorkingData;
testerSideList.Add(b2);
+ */
}
public delegate void WorkingData_EventHandler(string message);
Modified: ACMServer/trunk/ACMServer/Mediator/Mediator.csproj
===================================================================
--- ACMServer/trunk/ACMServer/Mediator/Mediator.csproj 2008-06-15 16:28:12 UTC (rev 255)
+++ ACMServer/trunk/ACMServer/Mediator/Mediator.csproj 2008-06-15 18:39:11 UTC (rev 256)
@@ -42,15 +42,7 @@
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
- <Compile Include="Library\Data\DataMediator.cs" />
- <Compile Include="Library\Data\Result.cs" />
- <Compile Include="Library\Data\Submit.cs" />
<Compile Include="Library\MediatorKernel.cs" />
- <Compile Include="Library\Plugins\BaseMediatorPlugin.cs" />
- <Compile Include="Library\Plugins\SocketGate\CreaterMediatorPlugin.cs" />
- <Compile Include="Library\Plugins\SocketGate\SocketServerPlugin.cs" />
- <Compile Include="Library\Plugins\WebGate\CreaterMediatorPlugin.cs" />
- <Compile Include="Library\Plugins\WebGate\WebGatePlugin.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
@@ -86,6 +78,10 @@
<Project>{A8135069-F8BA-4E5D-835F-3FF3F350AA5D}</Project>
<Name>LibraryExtention</Name>
</ProjectReference>
+ <ProjectReference Include="..\Plugins\PluginsFramework\PluginsFramework.csproj">
+ <Project>{69FB4176-F298-4AF7-B714-B6758AA9A58E}</Project>
+ <Name>PluginsFramework</Name>
+ </ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Copied: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/Data/DataMediator.cs (from rev 254, ACMServer/trunk/ACMServer/Mediator/Library/Data/DataMediator.cs)
===================================================================
--- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/Data/DataMediator.cs (rev 0)
+++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/Data/DataMediator.cs 2008-06-15 18:39:11 UTC (rev 256)
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+
+namespace AcmContester.Plugins.MediatorPlugins.SocketServerGatePlugin.Data
+{
+ class DataMediator
+ {
+ const int secondToLive = 60;
+
+ Dictionary<int, DateTime> d = new Dictionary<int, DateTime>();
+
+ /// <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>
+ private void DeleteOld()
+ {
+ DateTime now = DateTime.Now;
+ ArrayList keysToDelete = new ArrayList();
+ foreach(KeyValuePair<int,DateTime> elem in d)
+ {
+ TimeSpan ts = now - elem.Value;
+ if (ts.TotalSeconds > secondToLive)
+ {
+ keysToDelete.Add(elem.Key);
+ }
+ }
+ foreach (int key in keysToDelete)
+ {
+ d.Remove(key);
+ }
+ }
+
+ private bool Contains(int id)
+ {
+ return d.ContainsKey(id);
+ }
+
+ public bool Add(Submit data)
+ {
+ DeleteOld();
+ if (Contains(data.GetHashCode()) == false)
+ {
+ d.Add(data.GetHashCode(), DateTime.Now);
+ return true;
+ }
+ return false;
+ }
+
+ public void Return(Result data)
+ {
+ DeleteOld();
+ if (Contains(data.Submit.GetHashCode()) == true)
+ {
+ d.Remove(data.Submit.GetHashCode());
+ }
+ }
+ }
+}
Copied: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/Data/Result.cs (from rev 254, ACMServer/trunk/ACMServer/Mediator/Library/Data/Result.cs)
===================================================================
--- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/Data/Result.cs (rev 0)
+++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/Data/Result.cs 2008-06-15 18:39:11 UTC (rev 256)
@@ -0,0 +1,36 @@
+using System;
+using AcmContester.AcmLibraryExtention;
+
+namespace AcmContester.Plugins.MediatorPlugins.SocketServerGatePlugin.Data
+{
+ class Result
+ {
+ Xml data;
+
+ Submit submit;
+
+ string temp;
+
+ public Result(string message)
+ {
+ //TODO
+ temp = message.Substring(0, message.IndexOf('$'));
+ string s = message.Substring(message.IndexOf('$') + 1);
+ submit = new Submit(s);
+ }
+
+ public Submit Submit
+ {
+ get
+ {
+ return submit;
+ }
+ }
+
+ public override string ToString()
+ {
+ //HACK: \xE4\xEB\xFF \xF2\xE5\xF1\xF2\xF3 \xF5\xE0\xE9 \xE1\xF3\xE4\xE5 \xF2\xE0\xEA, \xE0\xEB\xE5 \xEC\xE0\xBA \xE1\xF3\xF2\xE8 \xF7\xE5\xF0\xE5\xE7 XML
+ return temp;
+ }
+ }
+}
Copied: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/Data/Submit.cs (from rev 254, ACMServer/trunk/ACMServer/Mediator/Library/Data/Submit.cs)
===================================================================
--- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/Data/Submit.cs (rev 0)
+++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/Data/Submit.cs 2008-06-15 18:39:11 UTC (rev 256)
@@ -0,0 +1,39 @@
+using System;
+using AcmContester.AcmLibraryExtention;
+
+namespace AcmContester.Plugins.MediatorPlugins.SocketServerGatePlugin.Data
+{
+ class Submit
+ {
+ Xml data;
+
+ int id;
+ string temp;
+
+ public Submit(string message)
+ {
+ //TODO
+ id = Convert.ToInt32(message.Substring(0,message.IndexOf('$')));
+ temp = message.Substring(message.IndexOf('$')+1);
+ }
+
+ //HACK: \xE4\xEB\xFF \xF2\xE5\xF1\xF2\xF3 \xF5\xE0\xE9 \xE1\xF3\xE4\xE5 \xF2\xE0\xEA, \xE0\xEB\xE5 \xEC\xE0\xBA \xE1\xF3\xF2\xE8 \xF7\xE5\xF0\xE5\xE7 XML
+ public override string ToString()
+ {
+ return temp;
+ }
+
+ public override int GetHashCode()
+ {
+ //HACK:
+ /*
+ int result = 0;
+ for (int i = 0; i < temp.Length; i++)
+ {
+ result *= 991;
+ result += (int)temp[i];
+ }*/
+ return id;
+ }
+ }
+}
Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs
===================================================================
--- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-06-15 16:28:12 UTC (rev 255)
+++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-06-15 18:39:11 UTC (rev 256)
@@ -1,5 +1,6 @@
using System;
using AcmContester.Library.Connector;
+using AcmContester.Plugins.MediatorPlugins.SocketServerGatePlugin.Data;
namespace AcmContester.Plugins.MediatorPlugins.SocketServerGatePlugin
{
@@ -13,10 +14,11 @@
public delegate void DataArrivedDelegate(string s);
public event DataArrivedDelegate onDataArrived;
+ DataMediator dataContainer = new DataMediator();
private SocketServerGate()
{
- base.Start();
+ //base.Start();
base.onDataArrived += DataArrived;
}
@@ -27,13 +29,15 @@
public void Send(string message)
{
- //dataContainer.Add(new Submit(message));
- base.Send(message);
+ if (dataContainer.Add(new Submit(message)) == true)
+ {
+ base.Send(message);
+ }
}
protected void DataArrived(string message)
{
- //dataContainer.Return(new Result(message));
+ dataContainer.Return(new Result(message));
if (onDataArrived != null)
onDataArrived(message);
}
Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs
===================================================================
--- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs 2008-06-15 16:28:12 UTC (rev 255)
+++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs 2008-06-15 18:39:11 UTC (rev 256)
@@ -10,13 +10,18 @@
public SocketServerGatePlugin()
{
socketServerGate = SocketServerGate.GetInstance();
- socketServerGate.onDataArrived += DataArrived;
+ //socketServerGate.onDataArrived += DataArrived;
}
public override void Send(string message)
{
+ if (message == "stop")
+ {
+ socketServerGate.Stop();
+ return;
+ }
WorkingData("WebGatePlugin::Send(" + message + ")");
- socketServerGate.Send(message);
+ //socketServerGate.Send(message);
}
}
}
Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj
===================================================================
--- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj 2008-06-15 16:28:12 UTC (rev 255)
+++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj 2008-06-15 18:39:11 UTC (rev 256)
@@ -31,6 +31,9 @@
<Reference Include="System" />
</ItemGroup>
<ItemGroup>
+ <Compile Include="Data\DataMediator.cs" />
+ <Compile Include="Data\Result.cs" />
+ <Compile Include="Data\Submit.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SocketServerGate.cs" />
<Compile Include="SocketServerGatePlugin.cs" />
@@ -40,6 +43,10 @@
<Project>{211DD6A5-2D73-439E-8722-ED2C89ED1DDB}</Project>
<Name>Connector</Name>
</ProjectReference>
+ <ProjectReference Include="..\..\..\Library\LibraryExtention\LibraryExtention.csproj">
+ <Project>{A8135069-F8BA-4E5D-835F-3FF3F350AA5D}</Project>
+ <Name>LibraryExtention</Name>
+ </ProjectReference>
<ProjectReference Include="..\..\PluginsFramework\PluginsFramework.csproj">
<Project>{69FB4176-F298-4AF7-B714-B6758AA9A58E}</Project>
<Name>PluginsFramework</Name>
Modified: ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsLoader.cs
===================================================================
--- ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsLoader.cs 2008-06-15 16:28:12 UTC (rev 255)
+++ ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsLoader.cs 2008-06-15 18:39:11 UTC (rev 256)
@@ -37,6 +37,11 @@
/// <param name="lst">Where to add found objects</param>
private static void ScanAndLoad(string filename, List<T> lst)
{
+ if (File.Exists(filename) == false)
+ {
+ //throw new Exception("!!!!!!!!!!");
+ return;
+ }
Assembly assembly = Assembly.LoadFrom(filename);
if (assembly != null)
{
Modified: ACMServer/trunk/ACMServer/Plugins/testRun/Program.cs
===================================================================
--- ACMServer/trunk/ACMServer/Plugins/testRun/Program.cs 2008-06-15 16:28:12 UTC (rev 255)
+++ ACMServer/trunk/ACMServer/Plugins/testRun/Program.cs 2008-06-15 18:39:11 UTC (rev 256)
@@ -18,8 +18,9 @@
foreach (BaseMediatorPlugin cp in plugins)
{
- cp.Send("aaa");
+ cp.Send(@"129$program hello; uses windows; var a,b:integer; begin read(a,b); write(a+b); end.");
}
+ plugins = plugins;
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|