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