|
From: <br...@us...> - 2008-06-22 08:33:23
|
Revision: 271
http://acmcontester.svn.sourceforge.net/acmcontester/?rev=271&view=rev
Author: brus07
Date: 2008-06-21 04:48:54 -0700 (Sat, 21 Jun 2008)
Log Message:
-----------
Submit and Result serialization XML format. This feature is using when sending information between modules.
Modified Paths:
--------------
ACMServer/trunk/ACMServer/Checker/Checker.csproj
ACMServer/trunk/ACMServer/Checker/Class1.cs
ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj
ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs
ACMServer/trunk/ACMServer/Library/Data/Result.cs
ACMServer/trunk/ACMServer/Library/Data/Submit.cs
ACMServer/trunk/ACMServer/Library/testData/data.xsd
ACMServer/trunk/ACMServer/Library/testData/data.xsx
ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs
ACMServer/trunk/ACMServer/Tester/Form1.cs
Modified: ACMServer/trunk/ACMServer/Checker/Checker.csproj
===================================================================
--- ACMServer/trunk/ACMServer/Checker/Checker.csproj 2008-06-20 18:17:38 UTC (rev 270)
+++ ACMServer/trunk/ACMServer/Checker/Checker.csproj 2008-06-21 11:48:54 UTC (rev 271)
@@ -46,6 +46,10 @@
</Content>
</ItemGroup>
<ItemGroup>
+ <ProjectReference Include="..\Library\Data\Data.csproj">
+ <Project>{30C0EFA3-36A8-4C6F-8FEC-28F771D4933F}</Project>
+ <Name>Data</Name>
+ </ProjectReference>
<ProjectReference Include="..\Library\LibraryExtention\LibraryExtention.csproj">
<Project>{A8135069-F8BA-4E5D-835F-3FF3F350AA5D}</Project>
<Name>LibraryExtention</Name>
Modified: ACMServer/trunk/ACMServer/Checker/Class1.cs
===================================================================
--- ACMServer/trunk/ACMServer/Checker/Class1.cs 2008-06-20 18:17:38 UTC (rev 270)
+++ ACMServer/trunk/ACMServer/Checker/Class1.cs 2008-06-21 11:48:54 UTC (rev 271)
@@ -4,6 +4,7 @@
using SourceTest;
using System.IO;
using AcmContester.Library.LibraryExtention;
+using AcmContester.Library.LibraryExtention.Data;
namespace Checker
{
@@ -28,8 +29,11 @@
log.Loging(message, Log.Priority.INFO);
log.Loging("", Log.Priority.INFO);
- string code = message.Substring(message.IndexOf('$')+1);
- string id = message.Substring(0, message.IndexOf('$'));
+ //TODO:
+ Submit submit = Submit.CreateFromXml(message);
+ string code = submit.sourceCode;
+ string id = submit.id.ToString();
+
TSource c = new TSource();
StreamReader s = new StreamReader("InData.txt", Encoding.Default);
String compiler = s.ReadLine();
@@ -67,9 +71,14 @@
if (c.Summary.compres.res != (TCompRes)0 )
{
- return TSource.CompileResultToString(c.Summary.compres.res);
+ Result resulta = new Result(submit);
+ resulta.res = TSource.CompileResultToString(c.Summary.compres.res);
+ return resulta.ToStringX();
}
- return TSource.TestResultToString(c.Summary.res.res);
+ //TODO:
+ Result result = new Result(submit);
+ result.res = TSource.TestResultToString(c.Summary.res.res);
+ return result.ToStringX();
}
public static int GetResult1(string code)
{
Modified: ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj
===================================================================
--- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-06-20 18:17:38 UTC (rev 270)
+++ ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-06-21 11:48:54 UTC (rev 271)
@@ -51,6 +51,12 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Data\Data.csproj">
+ <Project>{30C0EFA3-36A8-4C6F-8FEC-28F771D4933F}</Project>
+ <Name>Data</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.
Other similar extension points exist, see Microsoft.Common.targets.
Modified: ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs
===================================================================
--- ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs 2008-06-20 18:17:38 UTC (rev 270)
+++ ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs 2008-06-21 11:48:54 UTC (rev 271)
@@ -4,6 +4,7 @@
using System.Net;
using System.IO;
using System.Text;
+using AcmContester.Library.LibraryExtention.Data;
namespace AcmContester.Library.Connector.Getter
{
@@ -25,49 +26,25 @@
public void Send(string message)
{
checkAddress();
- Send2(message);
+ SendX(message);
}
public object GetInfoFromSite()
{
checkAddress();
- return GetInfoFromSite2();
+ return GetInfoFromSiteX();
}
- /*
- void Send1(string message)
+ void SendX(string message)
{
- WebBrowser webBrowser = new WebBrowser();
- webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
- webBrowser.Navigate(fullPathToWebPages + "/a.php?p=321");
- }
-
- Mutex mut = new Mutex();
- string document = "";
- object GetInfoFromSite1()
- {
- WebBrowser webBrowser = new WebBrowser();
- webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
- webBrowser.Navigate(fullPathToWebPages + "/a.php?p=321");
- mut.WaitOne();
- return document;
- }
-
- void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
- {
- document = ((WebBrowser)sender).DocumentText;
- mut.ReleaseMutex();
- }
- */
-
- void Send2(string message)
- {
string res = "";
string id = "";
try
{
- res = (message.Split('$'))[0];
- id = (message.Split('$'))[1];
+ //TODO:
+ Result result = Result.CreateFromXml(message);
+ res = result.res;
+ id = result.Submit.id.ToString();
}
catch (Exception)
{
@@ -78,7 +55,7 @@
WebResponse myResponse = myRequest.GetResponse();
myResponse.Close();
}
- string GetInfoFromSite2()
+ string GetInfoFromSiteX()
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(fullPathToWebPages + "/get.php");
myRequest.Method = "GET";
Modified: ACMServer/trunk/ACMServer/Library/Data/Result.cs
===================================================================
--- ACMServer/trunk/ACMServer/Library/Data/Result.cs 2008-06-20 18:17:38 UTC (rev 270)
+++ ACMServer/trunk/ACMServer/Library/Data/Result.cs 2008-06-21 11:48:54 UTC (rev 271)
@@ -8,7 +8,18 @@
public class Result
{
[XmlElement("submit", typeof(Submit))]
- public Submit submit;
+ public Submit Submit
+ {
+ get
+ {
+ return submit;
+ }
+ set
+ {
+ submit = value;
+ }
+ }
+ private Submit submit;
[XmlElement("res", typeof(string))]
public string res;
[XmlElement("result", typeof(int))]
@@ -24,14 +35,10 @@
{
}
- public Submit Submit
+ public Result(Submit ssubmit)
{
- get
- {
- return submit;
- }
+ submit = ssubmit;
}
-
public Result(string message)
{
//TODO
Modified: ACMServer/trunk/ACMServer/Library/Data/Submit.cs
===================================================================
--- ACMServer/trunk/ACMServer/Library/Data/Submit.cs 2008-06-20 18:17:38 UTC (rev 270)
+++ ACMServer/trunk/ACMServer/Library/Data/Submit.cs 2008-06-21 11:48:54 UTC (rev 271)
@@ -29,10 +29,25 @@
sourceCode = message.Substring(message.IndexOf('$')+1);
}
+ public static Submit CreateFromXml(string message)
+ {
+ message = Xml.GetOuterXmlOfSingleNodeFromXpath(message, "submit");
+ if (message == null || message == "")
+ return null;
+ string schema = Reader.ReadString("data.xsd");
+ if (Xml.ValidateXmlWithSchema(message, schema) == false)
+ return null;
+
+ Submit newList = XmlSerializer<Submit>.Load(message);
+ return newList;
+ }
+
//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 sourceCode;
+ //string result = sourceCode;
+ string result = XmlSerializer<Submit>.Serialization(this);
+ return result;
}
public override int GetHashCode()
Modified: ACMServer/trunk/ACMServer/Library/testData/data.xsd
===================================================================
--- ACMServer/trunk/ACMServer/Library/testData/data.xsd 2008-06-20 18:17:38 UTC (rev 270)
+++ ACMServer/trunk/ACMServer/Library/testData/data.xsd 2008-06-21 11:48:54 UTC (rev 271)
@@ -8,7 +8,7 @@
<xs:element name="language">
<!-- обмеження для ID мови програмування -->
<xs:simpleType>
- <xs:restriction base="xs:positiveInteger">
+ <xs:restriction base="xs:int">
<xs:maxInclusive value="100" />
</xs:restriction>
</xs:simpleType>
@@ -26,13 +26,15 @@
</xs:element>
<xs:complexType name="resultType">
<xs:sequence>
- <xs:element name="submit" type="submitType" />
<xs:element name="res" type="xs:string" />
<xs:element name="result" type="xs:int" />
<xs:element name="usedTime" type="xs:double" />
<xs:element name="usedMemory" type="xs:double" />
+ <xs:element name="submit" type="submitType" />
</xs:sequence>
</xs:complexType>
<xs:element name="result" type="resultType">
</xs:element>
+ <xs:element name="submit" type="submitType">
+ </xs:element>
</xs:schema>
\ No newline at end of file
Modified: ACMServer/trunk/ACMServer/Library/testData/data.xsx
===================================================================
--- ACMServer/trunk/ACMServer/Library/testData/data.xsx 2008-06-20 18:17:38 UTC (rev 270)
+++ ACMServer/trunk/ACMServer/Library/testData/data.xsx 2008-06-21 11:48:54 UTC (rev 271)
@@ -1,26 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<!--This file is auto-generated by the XML Schema Designer. It holds layout information for components on the designer surface.-->
<XSDDesignerLayout Style="LeftRight" layoutVersion="2" viewPortLeft="0" viewPortTop="0" zoom="100">
- <submitType_XmlComplexType left="1317" top="1254" width="5292" height="2831" selected="0" zOrder="0" index="0" expanded="1">
- <language_XmlElement left="7243" top="2312" width="5292" height="714" selected="0" zOrder="1" index="2" expanded="1">
- <_x0028_language_x0029__XmlSimpleType left="13169" top="1254" width="5292" height="2831" selected="0" zOrder="4" index="0" expanded="1" />
+ <submitType_XmlComplexType left="1317" top="1254" width="5292" height="2831" selected="0" zOrder="1" index="0" expanded="1">
+ <language_XmlElement left="7243" top="2312" width="5292" height="714" selected="0" zOrder="2" index="2" expanded="1">
+ <_x0028_language_x0029__XmlSimpleType left="13169" top="1254" width="5292" height="2831" selected="0" zOrder="5" index="0" expanded="1" />
</language_XmlElement>
</submitType_XmlComplexType>
- <submitList_XmlElement left="1317" top="4593" width="5292" height="2831" selected="0" zOrder="7" index="1" expanded="1">
- <_x0028_group1_x0029__XmlSequence left="7243" top="4593" width="5292" height="2831" selected="0" zOrder="9" index="0" expanded="1">
- <submit_XmlElement left="13169" top="4593" width="5292" height="2831" selected="0" zOrder="12" index="0" expanded="1">
- <language_XmlElement left="19095" top="5585" width="5292" height="714" selected="0" zOrder="32" index="2" expanded="0" />
+ <submitList_XmlElement left="1317" top="4593" width="5292" height="2831" selected="0" zOrder="8" index="1" expanded="1">
+ <_x0028_group1_x0029__XmlSequence left="7243" top="4593" width="5292" height="2831" selected="0" zOrder="10" index="0" expanded="1">
+ <submit_XmlElement left="13169" top="4593" width="5292" height="2831" selected="0" zOrder="13" index="0" expanded="1">
+ <language_XmlElement left="19095" top="5651" width="5292" height="714" selected="0" zOrder="16" index="2" expanded="0" />
</submit_XmlElement>
</_x0028_group1_x0029__XmlSequence>
</submitList_XmlElement>
- <resultType_XmlComplexType left="1317" top="7932" width="5292" height="2831" selected="0" zOrder="14" index="2" expanded="1">
- <submit_XmlElement left="7243" top="7932" width="5292" height="2831" selected="0" zOrder="16" index="0" expanded="1">
- <language_XmlElement left="13169" top="8924" width="5292" height="714" selected="0" zOrder="28" index="2" expanded="0" />
+ <resultType_XmlComplexType left="1317" top="7932" width="5292" height="2831" selected="0" zOrder="19" index="2" expanded="1">
+ <submit_XmlElement left="7243" top="7932" width="5292" height="2831" selected="0" zOrder="21" index="0" expanded="1">
+ <language_XmlElement left="13169" top="8990" width="5292" height="714" selected="0" zOrder="24" index="2" expanded="0" />
</submit_XmlElement>
</resultType_XmlComplexType>
- <result_XmlElement left="1317" top="11271" width="5292" height="2831" selected="0" zOrder="18" index="3" expanded="1">
- <submit_XmlElement left="7243" top="11271" width="5292" height="2831" selected="0" zOrder="21" index="0" expanded="1">
- <language_XmlElement left="13169" top="12263" width="5292" height="714" selected="0" zOrder="24" index="2" expanded="0" />
+ <result_XmlElement left="1317" top="11271" width="5292" height="2831" selected="0" zOrder="27" index="3" expanded="1">
+ <submit_XmlElement left="7243" top="11271" width="5292" height="2831" selected="0" zOrder="29" index="0" expanded="1">
+ <language_XmlElement left="13169" top="12329" width="5292" height="714" selected="0" zOrder="32" index="2" expanded="0" />
</submit_XmlElement>
</result_XmlElement>
+ <submit_XmlElement left="2910" top="14393" width="5292" height="2831" selected="0" zOrder="35" index="4" expanded="1">
+ <language_XmlElement left="8836" top="15385" width="5292" height="714" selected="0" zOrder="37" index="2" expanded="0" />
+ </submit_XmlElement>
</XSDDesignerLayout>
\ No newline at end of file
Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs
===================================================================
--- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-06-20 18:17:38 UTC (rev 270)
+++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-06-21 11:48:54 UTC (rev 271)
@@ -11,8 +11,8 @@
{
private static SocketServerGate instance = new SocketServerGate();
- public delegate void DataArrivedDelegate(string s);
- public event DataArrivedDelegate onDataArrived;
+ public new delegate void DataArrivedDelegate(string s);
+ public new event DataArrivedDelegate onDataArrived;
DataMediator dataContainer = new DataMediator();
@@ -27,22 +27,24 @@
return instance;
}
- public void Send(string message)
+ public new void Send(string message)
{
if (base.CountClients() > 0)
{
- if (dataContainer.Add(new Submit(message)) == true)
+ Submit submit = new Submit(message);
+ if (dataContainer.Add(submit) == true)
{
- base.Send(message);
+ base.Send(submit.ToString());
}
}
}
protected void DataArrived(string message)
{
- dataContainer.Return(new Result(message));
+ Result result = Result.CreateFromXml(message);
+ dataContainer.Return(result);
if (onDataArrived != null)
- onDataArrived(message);
+ onDataArrived(result.ToStringX());
}
}
}
Modified: ACMServer/trunk/ACMServer/Tester/Form1.cs
===================================================================
--- ACMServer/trunk/ACMServer/Tester/Form1.cs 2008-06-20 18:17:38 UTC (rev 270)
+++ ACMServer/trunk/ACMServer/Tester/Form1.cs 2008-06-21 11:48:54 UTC (rev 271)
@@ -80,7 +80,7 @@
fullLog += "\r\n\t->";
fullLog += result;
}
- socket.Send(result.ToString() + "$" + message);
+ socket.Send(result);
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
@@ -103,8 +103,15 @@
private void Form1_Load(object sender, EventArgs e)
{
- StreamWriter sw = File.AppendText("testerlog.txt");
- Log log = Log.GetLog(sw, Log.Priority.EMPTY);
+ try
+ {
+ StreamWriter sw = File.AppendText("testerlog.txt");
+ Log log = Log.GetLog(sw, Log.Priority.EMPTY);
+ }
+ catch (Exception)
+ {
+ fullLog += "\r\n\tLogFile can't open. Working without logging to LogFile.";
+ }
}
private void textBox1_TextChanged(object sender, EventArgs e)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|