From: <br...@us...> - 2008-07-23 12:24:00
|
Revision: 300 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=300&view=rev Author: brus07 Date: 2008-07-23 12:24:09 +0000 (Wed, 23 Jul 2008) Log Message: ----------- Optimize plugin interface. Remove "onWorkingData" event. Modified Paths: -------------- ACMServer/trunk/ACMServer/Mediator/Form1.cs ACMServer/trunk/ACMServer/Mediator/Library/MediatorKernel.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs ACMServer/trunk/ACMServer/Plugins/PluginsFramework/BaseMediatorPlugin.cs Modified: ACMServer/trunk/ACMServer/Mediator/Form1.cs =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-07-22 20:24:30 UTC (rev 299) +++ ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-07-23 12:24:09 UTC (rev 300) @@ -26,7 +26,6 @@ private void button2_Click(object sender, EventArgs e) { kernel = new AcmContester.Mediator.Library.MediatorKernel(); - kernel.onWorkingData += WorkingData; System.Threading.ThreadPool.QueueUserWorkItem(RunLoadDll); } @@ -55,26 +54,19 @@ } } - private void WorkingData(string message) + delegate void UpdateTextLogCallback(string message, TextBox textBox); + private void UpdateTextLog(string message, TextBox textBox) { - string s = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + ": "; - s += message; - UpdateTextLog(s + "\r\n"); - } - - delegate void UpdateTextLogCallback(string message); - private void UpdateTextLog(string message) - { - if (this.textBox3.InvokeRequired) + if (textBox.InvokeRequired) { UpdateTextLogCallback d = new UpdateTextLogCallback(UpdateTextLog); this.Invoke(d, new object[] { message }); } else { - textBox3.Text += message; - textBox3.Select(textBox3.Text.Length, 0); - textBox3.ScrollToCaret(); + textBox.Text += message; + textBox.Select(textBox3.Text.Length, 0); + textBox.ScrollToCaret(); } } Modified: ACMServer/trunk/ACMServer/Mediator/Library/MediatorKernel.cs =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Library/MediatorKernel.cs 2008-07-22 20:24:30 UTC (rev 299) +++ ACMServer/trunk/ACMServer/Mediator/Library/MediatorKernel.cs 2008-07-23 12:24:09 UTC (rev 300) @@ -45,7 +45,6 @@ foreach (BaseMediatorPlugin plugin in testerSideList) { plugin.onDataArrived += DataArrivedFromTesterList; - plugin.onWorkingData += WorkingData; if (plugin.Control != null) { this.OnAddControl(new ControlEventArgs(plugin.Control, plugin.GetType().Name)); @@ -55,7 +54,6 @@ foreach (BaseMediatorPlugin plugin in clientSideList) { plugin.onDataArrived += DataArrivedFromClientList; - plugin.onWorkingData += WorkingData; if (plugin.Control != null) { this.OnAddControl(new ControlEventArgs(plugin.Control, plugin.GetType().Name)); @@ -70,14 +68,6 @@ temp(this, e); } - public delegate void WorkingData_EventHandler(string message); - public event WorkingData_EventHandler onWorkingData; - private void WorkingData(string message) - { - if (onWorkingData != null) - onWorkingData(message); - } - private void DataArrivedFromClientList(string message) { if (testerSideList != null) Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs 2008-07-22 20:24:30 UTC (rev 299) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs 2008-07-23 12:24:09 UTC (rev 300) @@ -25,8 +25,6 @@ socketServerGate.Stop(); return; } - WorkingData("SocketServerGatePlugin::Send(" + message + ")"); - WorkingData("SocketServerGatePlugin::Send CountClients = " + socketServerGate.CountClients().ToString()); socketServerGate.Send(message); } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs 2008-07-22 20:24:30 UTC (rev 299) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs 2008-07-23 12:24:09 UTC (rev 300) @@ -18,7 +18,6 @@ public override void Send(string message) { - WorkingData("WebGatePlugin::Send(" + message + ")"); webGate.Send(message); } } Modified: ACMServer/trunk/ACMServer/Plugins/PluginsFramework/BaseMediatorPlugin.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/PluginsFramework/BaseMediatorPlugin.cs 2008-07-22 20:24:30 UTC (rev 299) +++ ACMServer/trunk/ACMServer/Plugins/PluginsFramework/BaseMediatorPlugin.cs 2008-07-23 12:24:09 UTC (rev 300) @@ -8,9 +8,6 @@ public delegate void DataArrived_EventHandler(string message); public event DataArrived_EventHandler onDataArrived; - public delegate void WorkingData_EventHandler(string message); - public event WorkingData_EventHandler onWorkingData; - public abstract void Send(string message); private UserControl control = null; @@ -29,15 +26,8 @@ protected virtual void DataArrived(string message) { - WorkingData("BaseMediatorPlugin::DataArrived(" + message + ")"); if (onDataArrived != null) onDataArrived(message); } - - protected virtual void WorkingData(string message) - { - if (onWorkingData != null) - onWorkingData(message); - } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-07-25 13:20:47
|
Revision: 302 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=302&view=rev Author: brus07 Date: 2008-07-25 13:20:56 +0000 (Fri, 25 Jul 2008) Log Message: ----------- Checking the tester on employment. Send and receive SystemMessage from Testers. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs ACMServer/trunk/ACMServer/Tester/Form1.cs Modified: ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-07-25 10:00:45 UTC (rev 301) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-07-25 13:20:56 UTC (rev 302) @@ -1,5 +1,6 @@ using System; using JadBenAutho.EasySocket; +using System.Collections.Generic; namespace AcmContester.Library.Connector { @@ -33,27 +34,121 @@ } } + public void Send(string message) + { + List<int> freeTesters = GetFreeTesters(); + if (freeTesters.Count != 0) + { + Random random = new Random(); + DataSender(message, freeTesters[random.Next() % freeTesters.Count]); + } + } + protected virtual void DataSender(string message, int clientIndex) + { + server.SendData(message, clientIndex); + } + private void DataArrived(object Data, SocketStream DataSender) { - OnDataArrived(Data.ToString()); + if (SystemMessage(Data.ToString()) == true) + return; + DataArriver(Data.ToString()); } - - public void Send(string message) + protected virtual void DataArriver(string message) { - server.SendData(message, 0); + OnDataArrived(message); } + private void OnDataArrived(string message) + { + if (onDataArrived != null) + { + onDataArrived(message); + } + } public int CountClients() { return server.CountClients; } - private void OnDataArrived(string message) + + 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\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 (onDataArrived != null) + q.Clear(); + string curHashCode = DateTime.Now.GetHashCode().ToString(); + for (int i = 0; i < server.CountClients; i++) { - onDataArrived(message); + string message = "test"; + message += " " + server.ClientsList[i].GetHashCode().ToString(); + message += " " + curHashCode; + server.SendData(message, i); + } + + DateTime start = DateTime.Now; + Dictionary<string, int> preResult = new Dictionary<string, int>(); + while (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]) + { + preResult.Add(mes[1], 0); + } + } + } + System.Threading.Thread.Sleep(50); + } + + List<int> result = new List<int>(); + for (int i = 0; i < server.CountClients; 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\xE2\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 SystemMessage(string message) + { + char[] chars = new char[1]; + chars[0] = ' '; + string[] mes = message.Split(chars); + if (mes[0] == "busy" || mes[0] == "free") + { + lock(q) + q.Enqueue(message); + return true; + } + return false; + } } } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-07-25 10:00:45 UTC (rev 301) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-07-25 13:20:56 UTC (rev 302) @@ -21,33 +21,55 @@ base.Start(); base.onDataArrived += DataArrived; } - public static SocketServerGate GetInstance() { return instance; } + protected override void DataSender(string message, int clientIndex) + { + Submit submit = Submit.CreateFromXml(message); + if (dataContainer.Add(submit) == true) + { + OnLogMessage("send " + submit.id + " to " + clientIndex); + base.DataSender(message, clientIndex); + } + } public new void Send(string message) { SubmitList submitList = SubmitList.CreateFromXml(message); - for (int index = 0; index < submitList.Items.Length; index++) - { - if (dataContainer.Add(submitList.Items[index]) == true) - { - base.Send(submitList.Items[index].ToString()); - } - } - OnLogMessage("SocketServerGate::Send(message)"); + OnLogMessage("Get submits"); string ids = ""; for (int i = 0; i < submitList.Items.Length; i++) { ids += " " + submitList.Items[i].id.ToString(); } OnLogMessage("\t ID: " + ids); + + for (int index = 0; index < submitList.Items.Length; index++) + { + base.Send(submitList.Items[index].ToString()); + } } + protected override void DataArriver(string message) + { + Result result = Result.CreateFromXml(message); + dataContainer.Return(result); + OnLogMessage("result " + result.Submit.id); + OnLogMessage("\t " + result.res); + + base.DataArriver(message); + } + private void DataArrived(string message) + { + if (onDataArrived != null) + onDataArrived(message); + } + + public class LogMessageEventArgs : EventArgs { public string message; @@ -56,7 +78,6 @@ message = mes; } } - public event EventHandler<LogMessageEventArgs> LogMessage; private void OnLogMessage(string p) { @@ -64,18 +85,5 @@ if (temp != null) temp(this, new LogMessageEventArgs(p)); } - - - protected void DataArrived(string message) - { - Result result = Result.CreateFromXml(message); - dataContainer.Return(result); - if (onDataArrived != null) - onDataArrived(result.ToStringX()); - - - OnLogMessage("SocketServerGate::DataArrived(message)"); - OnLogMessage("\t " + result.res + " for " + result.Submit.id.ToString()); - } } } Modified: ACMServer/trunk/ACMServer/Tester/Form1.cs =================================================================== --- ACMServer/trunk/ACMServer/Tester/Form1.cs 2008-07-25 10:00:45 UTC (rev 301) +++ ACMServer/trunk/ACMServer/Tester/Form1.cs 2008-07-25 13:20:56 UTC (rev 302) @@ -58,22 +58,59 @@ private void DataArrived(string message) { UpdateTextLog("\r\n" + message); + if (SystemMessage(message) == true) + return; AddWork(message); } + bool SystemMessage(string message) + { + char[] chars = new char[1]; + chars[0] = ' '; + string[] mes = message.Split(chars); + if (mes[0] == "test") + { + string result = ""; + if (IsBusy() == true) + { + result = "busy"; + } + else + { + result = "free"; + } + string addStr = ""; + for (int i = 1; i < mes.Length; i++) + { + result += " " + mes[i]; + } + socket.Send(result); + return true; + } + return false; + } + static string source; static object working = 0; Thread thread = new Thread(new ThreadStart(Go)); - void AddWork(string message) + bool IsBusy() { lock (working) { if ((int)working == 1 || (thread.ThreadState == ThreadState.Running)) { - UpdateTextLog("\r\n--------- busy ---------"); - return; + return true; ; } } + return false; + } + void AddWork(string message) + { + if (IsBusy() == true) + { + UpdateTextLog("\r\n--------- busy ---------"); + return; + } source = message; onDataArrived += UpdateTextLog; thread = new Thread(new ThreadStart(Go)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-07-30 20:45:45
|
Revision: 303 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=303&view=rev Author: brus07 Date: 2008-07-30 20:45:49 +0000 (Wed, 30 Jul 2008) Log Message: ----------- In WebGatePlugin can change checking interval. Show log in textBox in WebGatePlugin. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGate.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.Designer.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.cs Modified: ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs 2008-07-25 13:20:56 UTC (rev 302) +++ ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs 2008-07-30 20:45:49 UTC (rev 303) @@ -58,5 +58,11 @@ { getter.Send(message); } + + protected void SetTimerInterval(int valueOfSeconds) + { + lock (timer) + timer.Interval = valueOfSeconds * 1000; + } } } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGate.cs 2008-07-25 13:20:56 UTC (rev 302) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGate.cs 2008-07-30 20:45:49 UTC (rev 303) @@ -18,5 +18,13 @@ { return instance; } + + public int CheckingIntervarInSeconds + { + set + { + this.SetTimerInterval(value); + } + } } } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs 2008-07-25 13:20:56 UTC (rev 302) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs 2008-07-30 20:45:49 UTC (rev 303) @@ -18,7 +18,18 @@ public override void Send(string message) { + string text = " Send: " + message.Length + " bytes" + Environment.NewLine; + ((WebGatePluginUserControl)base.Control).AddText(text); + webGate.Send(message); } + + protected override void DataArrived(string message) + { + string text = "Arrived: " + message.Length + " bytes" + Environment.NewLine; + ((WebGatePluginUserControl)base.Control).AddText(text); + + base.DataArrived(message); + } } } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.Designer.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.Designer.cs 2008-07-25 13:20:56 UTC (rev 302) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.Designer.cs 2008-07-30 20:45:49 UTC (rev 303) @@ -31,6 +31,10 @@ this.textBox2 = new System.Windows.Forms.TextBox(); this.setAddressButton = new System.Windows.Forms.Button(); this.addressComboBox = new System.Windows.Forms.ComboBox(); + this.CheckingIntervalNumericUpDown = new System.Windows.Forms.NumericUpDown(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.CheckingIntervalNumericUpDown)).BeginInit(); this.SuspendLayout(); // // textBox2 @@ -38,10 +42,10 @@ this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.textBox2.Location = new System.Drawing.Point(3, 32); + this.textBox2.Location = new System.Drawing.Point(3, 58); this.textBox2.Multiline = true; this.textBox2.Name = "textBox2"; - this.textBox2.Size = new System.Drawing.Size(263, 193); + this.textBox2.Size = new System.Drawing.Size(263, 167); this.textBox2.TabIndex = 2; // // setAddressButton @@ -69,16 +73,61 @@ this.addressComboBox.TabIndex = 4; this.addressComboBox.Text = "http://127.0.0.1/d"; // + // CheckingIntervalNumericUpDown + // + this.CheckingIntervalNumericUpDown.Location = new System.Drawing.Point(90, 32); + this.CheckingIntervalNumericUpDown.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.CheckingIntervalNumericUpDown.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.CheckingIntervalNumericUpDown.Name = "CheckingIntervalNumericUpDown"; + this.CheckingIntervalNumericUpDown.Size = new System.Drawing.Size(53, 20); + this.CheckingIntervalNumericUpDown.TabIndex = 5; + this.CheckingIntervalNumericUpDown.Value = new decimal(new int[] { + 10, + 0, + 0, + 0}); + this.CheckingIntervalNumericUpDown.ValueChanged += new System.EventHandler(this.CheckingIntervalNumericUpDown_ValueChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(3, 35); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(81, 13); + this.label1.TabIndex = 6; + this.label1.Text = "Checking every"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(149, 34); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(50, 13); + this.label2.TabIndex = 7; + this.label2.Text = "seconds."; + // // WebGatePluginUserControl // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.CheckingIntervalNumericUpDown); this.Controls.Add(this.addressComboBox); this.Controls.Add(this.setAddressButton); this.Controls.Add(this.textBox2); this.Name = "WebGatePluginUserControl"; this.Size = new System.Drawing.Size(269, 228); this.Load += new System.EventHandler(this.WebGatePluginUserControl_Load); + ((System.ComponentModel.ISupportInitialize)(this.CheckingIntervalNumericUpDown)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -89,5 +138,8 @@ private System.Windows.Forms.TextBox textBox2; private System.Windows.Forms.Button setAddressButton; private System.Windows.Forms.ComboBox addressComboBox; + private System.Windows.Forms.NumericUpDown CheckingIntervalNumericUpDown; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; } } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.cs 2008-07-25 13:20:56 UTC (rev 302) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.cs 2008-07-30 20:45:49 UTC (rev 303) @@ -28,5 +28,31 @@ WebGate gate = WebGate.GetInstance(); addressComboBox.Text = gate.Address; } + + private void CheckingIntervalNumericUpDown_ValueChanged(object sender, EventArgs e) + { + WebGate gate = WebGate.GetInstance(); + gate.CheckingIntervarInSeconds = (int)((NumericUpDown)sender).Value; + } + + delegate void AddTextCallback(string text); + public void AddText(string text) + { + if (this.textBox2.InvokeRequired) + { + AddTextCallback d = new AddTextCallback(AddText); + this.Invoke(d, new object[] { text }); + } + else + { + string timeStr = DateTime.Now.ToLongTimeString() + "." + DateTime.Now.Millisecond.ToString(); + textBox2.Text += timeStr + " " + text + " "; + //if (autoScrollCheckBox.Checked) + { + textBox2.Select(textBox2.Text.Length, 0); + textBox2.ScrollToCaret(); + } + } + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-08-02 12:39:01
|
Revision: 304 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=304&view=rev Author: brus07 Date: 2008-08-02 12:39:10 +0000 (Sat, 02 Aug 2008) Log Message: ----------- Show in statusBar status about checking webSite. Status can be "Checking..." or empty. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.Designer.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.resx Modified: ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs 2008-07-30 20:45:49 UTC (rev 303) +++ ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs 2008-08-02 12:39:10 UTC (rev 304) @@ -11,6 +11,9 @@ public delegate void DataArrivedDelegate(string s); public event DataArrivedDelegate onDataArrived; + public event EventHandler onChecking; + public event EventHandler onChecked; + private IGetter getter = new WebGetter(); public WebConnector() @@ -38,13 +41,26 @@ private void OnTimedEvent(object source, ElapsedEventArgs e) { timer.Enabled = false; + OnChecking(); object ob = getter.GetInfoFromSite(); + OnChecked(); if (ob != null) { DataArrived(ob); } timer.Enabled = true; } + + private void OnChecking() + { + if (onChecking != null) + onChecking(this, null); + } + private void OnChecked() + { + if (onChecked != null) + onChecked(this, null); + } private void DataArrived(object Data) { Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs 2008-07-30 20:45:49 UTC (rev 303) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs 2008-08-02 12:39:10 UTC (rev 304) @@ -14,6 +14,9 @@ webGate.onDataArrived += DataArrived; base.Control = new WebGatePluginUserControl(); + + webGate.onChecked += OnChecked; + webGate.onChecking += OnChecking; } public override void Send(string message) @@ -26,10 +29,24 @@ protected override void DataArrived(string message) { - string text = "Arrived: " + message.Length + " bytes" + Environment.NewLine; + string text = "Arrived: " + message.Length + " bytes"; ((WebGatePluginUserControl)base.Control).AddText(text); base.DataArrived(message); } + + private void OnChecked(object o,EventArgs a) + { + SetStatusLabel(""); + } + private void OnChecking(object o,EventArgs a) + { + SetStatusLabel("Checking..."); + } + + private void SetStatusLabel(string str) + { + ((WebGatePluginUserControl)base.Control).MainStatusMessage = str; + } } } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.Designer.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.Designer.cs 2008-07-30 20:45:49 UTC (rev 303) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.Designer.cs 2008-08-02 12:39:10 UTC (rev 304) @@ -34,7 +34,10 @@ this.CheckingIntervalNumericUpDown = new System.Windows.Forms.NumericUpDown(); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.MainToolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); ((System.ComponentModel.ISupportInitialize)(this.CheckingIntervalNumericUpDown)).BeginInit(); + this.statusStrip1.SuspendLayout(); this.SuspendLayout(); // // textBox2 @@ -45,7 +48,7 @@ this.textBox2.Location = new System.Drawing.Point(3, 58); this.textBox2.Multiline = true; this.textBox2.Name = "textBox2"; - this.textBox2.Size = new System.Drawing.Size(263, 167); + this.textBox2.Size = new System.Drawing.Size(263, 145); this.textBox2.TabIndex = 2; // // setAddressButton @@ -114,10 +117,26 @@ this.label2.TabIndex = 7; this.label2.Text = "seconds."; // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.MainToolStripStatusLabel}); + this.statusStrip1.Location = new System.Drawing.Point(0, 206); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(269, 22); + this.statusStrip1.TabIndex = 8; + this.statusStrip1.Text = "statusStrip1"; + // + // MainToolStripStatusLabel + // + this.MainToolStripStatusLabel.Name = "MainToolStripStatusLabel"; + this.MainToolStripStatusLabel.Size = new System.Drawing.Size(0, 17); + // // WebGatePluginUserControl // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.statusStrip1); this.Controls.Add(this.label2); this.Controls.Add(this.label1); this.Controls.Add(this.CheckingIntervalNumericUpDown); @@ -128,6 +147,8 @@ this.Size = new System.Drawing.Size(269, 228); this.Load += new System.EventHandler(this.WebGatePluginUserControl_Load); ((System.ComponentModel.ISupportInitialize)(this.CheckingIntervalNumericUpDown)).EndInit(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -141,5 +162,7 @@ private System.Windows.Forms.NumericUpDown CheckingIntervalNumericUpDown; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel MainToolStripStatusLabel; } } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.cs 2008-07-30 20:45:49 UTC (rev 303) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.cs 2008-08-02 12:39:10 UTC (rev 304) @@ -54,5 +54,13 @@ } } } + + public string MainStatusMessage + { + set + { + MainToolStripStatusLabel.Text = value; + } + } } } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.resx =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.resx 2008-07-30 20:45:49 UTC (rev 303) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePluginUserControl.resx 2008-08-02 12:39:10 UTC (rev 304) @@ -117,4 +117,7 @@ <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> + <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> </root> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-08-15 22:02:34
|
Revision: 324 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=324&view=rev Author: brus07 Date: 2008-08-15 22:02:44 +0000 (Fri, 15 Aug 2008) Log Message: ----------- Fixed bug with spare testing state of Testers for submit, which in DataContainer (in testing). Bug this need refactoring. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Data/DataMediator.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs Modified: ACMServer/trunk/ACMServer/Library/Data/DataMediator.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Data/DataMediator.cs 2008-08-15 12:50:52 UTC (rev 323) +++ ACMServer/trunk/ACMServer/Library/Data/DataMediator.cs 2008-08-15 22:02:44 UTC (rev 324) @@ -36,6 +36,12 @@ return d.ContainsKey(id); } + public bool Contains(Submit data) + { + DeleteOld(); + return Contains(data.id); + } + public bool Add(Submit data) { DeleteOld(); Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-08-15 12:50:52 UTC (rev 323) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-08-15 22:02:44 UTC (rev 324) @@ -25,7 +25,7 @@ { return instance; } - + protected override void DataSender(string message, int clientIndex) { Submit submit = Submit.CreateFromXml(message); @@ -35,6 +35,13 @@ base.DataSender(message, clientIndex); } } + private void Send2(Submit submit) + { + if (dataContainer.Contains(submit) == false) + { + base.Send(submit.ToString()); + } + } public new void Send(string message) { SubmitList submitList = SubmitList.CreateFromXml(message); @@ -49,7 +56,8 @@ for (int index = 0; index < submitList.Items.Length; index++) { - base.Send(submitList.Items[index].ToString()); + Send2(submitList.Items[index]); + //base.Send(submitList.Items[index].ToString()); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-08-25 14:13:34
|
Revision: 338 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=338&view=rev Author: brus07 Date: 2008-08-25 14:13:29 +0000 (Mon, 25 Aug 2008) Log Message: ----------- Added SystemMessage into whole project. This was sending through all modules. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj ACMServer/trunk/ACMServer/Library/Connector/Getter/IGetter.cs ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs ACMServer/trunk/ACMServer/Library/LibraryExtention/LibraryExtention.csproj ACMServer/trunk/ACMServer/Mediator/Form1.cs ACMServer/trunk/ACMServer/Mediator/Library/MediatorKernel.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/Plugin1/Class1.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/Plugin1/Plugin1.csproj ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGate.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.csproj ACMServer/trunk/ACMServer/Plugins/PluginsFramework/BaseMediatorPlugin.cs ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsFramework.csproj ACMServer/trunk/ACMServer/Tester/Form1.cs ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs Added Paths: ----------- ACMServer/trunk/ACMServer/Library/LibraryExtention/SystemMessage.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs Removed Paths: ------------- ACMServer/trunk/ACMServer/Library/Connector/Getter/FileGetter.cs Modified: ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-08-25 14:13:29 UTC (rev 338) @@ -38,7 +38,6 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> - <Compile Include="Getter\FileGetter.cs" /> <Compile Include="Getter\IGetter.cs" /> <Compile Include="Getter\WebGetter.cs" /> <Compile Include="SocketClient.cs" /> @@ -56,6 +55,10 @@ <Project>{30C0EFA3-36A8-4C6F-8FEC-28F771D4933F}</Project> <Name>Data</Name> </ProjectReference> + <ProjectReference Include="..\LibraryExtention\LibraryExtention.csproj"> + <Project>{A8135069-F8BA-4E5D-835F-3FF3F350AA5D}</Project> + <Name>LibraryExtention</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. Deleted: ACMServer/trunk/ACMServer/Library/Connector/Getter/FileGetter.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Getter/FileGetter.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Library/Connector/Getter/FileGetter.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -1,41 +0,0 @@ -using System; - -namespace AcmContester.Library.Connector.Getter -{ - class FileGetter: IGetter - { - public object GetInfoFromSite() - { - try - { - string res = ""; - using (System.IO.StreamReader sr = new System.IO.StreamReader("a.txt")) - { - res = sr.ReadToEnd(); - } - if (res.Length == 0) - return null; - return res; - } - catch (Exception) - { - } - return null; - } - - public void Send(string message) - { - try - { - using (System.IO.StreamWriter sr = new System.IO.StreamWriter("b.txt", true)) - { - sr.WriteLine(DateTime.Now.ToLongTimeString() + ": " + message); - } - } - catch (Exception) - { - } - //TODO: - } - } -} Modified: ACMServer/trunk/ACMServer/Library/Connector/Getter/IGetter.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Getter/IGetter.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Library/Connector/Getter/IGetter.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -1,9 +1,10 @@ +using AcmContester.Library.LibraryExtention; namespace AcmContester.Library.Connector.Getter { - interface IGetter + public interface IWebGetter { - object GetInfoFromSite(); - void Send(string message); + SystemMessage GetInfoFromSite(); + void Send(SystemMessage message); } } Modified: ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -5,10 +5,11 @@ using System.IO; using System.Text; using AcmContester.Library.LibraryExtention.Data; +using AcmContester.Library.LibraryExtention; namespace AcmContester.Library.Connector.Getter { - class WebGetter: IGetter + class WebGetter: IWebGetter { //"http://127.0.0.1/d"; string fullPathToWebPages = ""; @@ -36,15 +37,17 @@ } } - public void Send(string message) + public void Send(SystemMessage message) { - SendX(message); + SendX(message.Message); } - public object GetInfoFromSite() + public SystemMessage GetInfoFromSite() { checkAddress(); - return GetInfoFromSiteX(); + object ob = GetInfoFromSiteX(); + SystemMessage sysMes = new SystemMessage(ob.ToString(), ""); + return sysMes; } void SendX(string message) Modified: ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -1,5 +1,6 @@ using System; using JadBenAutho.EasySocket; +using AcmContester.Library.LibraryExtention; namespace AcmContester.Library.Connector { @@ -7,7 +8,7 @@ { EasyClient client; - public delegate void DataArrivedDelegate(string s); + public delegate void DataArrivedDelegate(SystemMessage s); public event DataArrivedDelegate onDataArrived; string ip = "127.0.0.1"; @@ -39,14 +40,16 @@ client.Dispose(); client = null; } - public void Send(string message) + public void Send(SystemMessage message) { - client.SendData(message); + byte[] bytes = SystemMessage.Serialize(message); + client.SendData(bytes); } private void DataArrived(object Data) { - OnDataArrived(Data.ToString()); + SystemMessage mes = SystemMessage.Deserialize((byte[])Data); + OnDataArrived(mes); } public bool IsConnected() { @@ -55,7 +58,7 @@ return client.IsConnected; } - private void OnDataArrived(string message) + private void OnDataArrived(SystemMessage message) { if (onDataArrived != null) { Modified: ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -1,6 +1,7 @@ using System; using JadBenAutho.EasySocket; using System.Collections.Generic; +using AcmContester.Library.LibraryExtention; namespace AcmContester.Library.Connector { @@ -9,7 +10,7 @@ int port = 4120; EasyServer server; - public delegate void DataArrivedDelegate(string s); + public delegate void DataArrivedDelegate(SystemMessage s); public event DataArrivedDelegate onDataArrived; public SocketServer() @@ -34,8 +35,13 @@ } } - public void Send(string message) + private void ServerSend(SystemMessage mes, int TargetClientIndex) { + byte[] bytes = SystemMessage.Serialize(mes); + server.SendData(bytes, TargetClientIndex); + } + public void Send(SystemMessage message) + { List<int> freeTesters = GetFreeTesters(); if (freeTesters.Count != 0) { @@ -43,22 +49,23 @@ DataSender(message, freeTesters[random.Next() % freeTesters.Count]); } } - protected virtual void DataSender(string message, int clientIndex) + protected virtual void DataSender(SystemMessage message, int clientIndex) { - server.SendData(message, clientIndex); + ServerSend(message, clientIndex); } private void DataArrived(object Data, SocketStream DataSender) { - if (SystemMessage(Data.ToString()) == true) + SystemMessage sysMes = SystemMessage.Deserialize((byte[])Data); + if (SystemMessageX(sysMes) == true) return; - DataArriver(Data.ToString()); + DataArriver(sysMes); } - protected virtual void DataArriver(string message) + protected virtual void DataArriver(SystemMessage message) { OnDataArrived(message); } - private void OnDataArrived(string message) + private void OnDataArrived(SystemMessage message) { if (onDataArrived != null) { @@ -92,7 +99,8 @@ string message = "test"; message += " " + server.ClientsList[i].GetHashCode().ToString(); message += " " + curHashCode; - server.SendData(message, i); + SystemMessage mes = new SystemMessage(message, "system"); + ServerSend(mes, i); } @@ -137,15 +145,15 @@ /// </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 SystemMessage(string message) + private bool SystemMessageX(SystemMessage message) { char[] chars = new char[1]; chars[0] = ' '; - string[] mes = message.Split(chars); + string[] mes = message.Message.Split(chars); if (mes[0] == "busy" || mes[0] == "free") { lock(q) - q.Enqueue(message); + q.Enqueue(message.Message); return true; } return false; Modified: ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -1,6 +1,7 @@ using System; using System.Timers; using AcmContester.Library.Connector.Getter; +using AcmContester.Library.LibraryExtention; namespace AcmContester.Library.Connector { @@ -8,21 +9,34 @@ { Timer timer = new Timer(); - public delegate void DataArrivedDelegate(string s); + public delegate void DataArrivedDelegate(SystemMessage s); public event DataArrivedDelegate onDataArrived; public event EventHandler onChecking; public event EventHandler onChecked; - private IGetter getter = new WebGetter(); + private IWebGetter getter = new WebGetter(); - public WebConnector() + private WebConnector() { + Init(); + } + public WebConnector(IWebGetter getter): this() + { + //this.getter = getter; + } + private void Init() + { + InitTimer(); + } + private void InitTimer() + { timer.Interval = 10 * 1000; timer.Elapsed += new ElapsedEventHandler(OnTimedEvent); timer.Enabled = true; } + public string Address { //TODO: @@ -35,6 +49,7 @@ ((WebGetter)getter).FullPathToWebPages = value; } } + // Specify what you want to happen when the Elapsed event is // raised. @@ -42,12 +57,9 @@ { timer.Enabled = false; OnChecking(); - object ob = getter.GetInfoFromSite(); + SystemMessage message = getter.GetInfoFromSite(); OnChecked(); - if (ob != null) - { - DataArrived(ob); - } + DataArrived(message); timer.Enabled = true; } @@ -61,16 +73,16 @@ if (onChecked != null) onChecked(this, null); } - - private void DataArrived(object Data) + + private void DataArrived(SystemMessage Data) { if (onDataArrived != null) { - onDataArrived(Data.ToString()); + onDataArrived(Data); } } - public void Send(string message) + public void Send(SystemMessage message) { getter.Send(message); } Modified: ACMServer/trunk/ACMServer/Library/LibraryExtention/LibraryExtention.csproj =================================================================== --- ACMServer/trunk/ACMServer/Library/LibraryExtention/LibraryExtention.csproj 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Library/LibraryExtention/LibraryExtention.csproj 2008-08-25 14:13:29 UTC (rev 338) @@ -36,6 +36,7 @@ <Compile Include="Log.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Reader.cs" /> + <Compile Include="SystemMessage.cs" /> <Compile Include="XML\XmlHelper.cs" /> <Compile Include="XML\XmlSerializer.cs" /> <Compile Include="XML\XmlValidator.cs" /> Added: ACMServer/trunk/ACMServer/Library/LibraryExtention/SystemMessage.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/LibraryExtention/SystemMessage.cs (rev 0) +++ ACMServer/trunk/ACMServer/Library/LibraryExtention/SystemMessage.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -0,0 +1,55 @@ +using System; +using System.Runtime.Serialization; +using System.Runtime.Serialization.Formatters.Binary; +using System.IO; + +namespace AcmContester.Library.LibraryExtention +{ + [Serializable] + public class SystemMessage + { + string type; + + public string Type + { + get + { + return type; + } + } + + string message; + + public string Message + { + get + { + return message; + } + } + + public SystemMessage(string message, string type) + { + this.message = message; + this.type = type; + } + + public static byte[] Serialize(SystemMessage ob) + { + IFormatter formatter = new BinaryFormatter(); + MemoryStream mem = new MemoryStream(); + Stream stream = mem; + formatter.Serialize(stream, ob); + stream.Close(); + return mem.GetBuffer(); + } + public static SystemMessage Deserialize(byte[] buffer) + { + IFormatter formatter = new BinaryFormatter(); + Stream stream = new MemoryStream(buffer); + SystemMessage ob = (SystemMessage)formatter.Deserialize(stream); + stream.Close(); + return ob; + } + } +} Modified: ACMServer/trunk/ACMServer/Mediator/Form1.cs =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -8,6 +8,7 @@ using AcmContester.Library.Connector; using System.Net.Sockets; using System.IO; +using AcmContester.Library.LibraryExtention; namespace Mediator { @@ -79,7 +80,7 @@ private void Disconnnect() { if (kernel != null) - kernel.SendToAll("stop"); + kernel.SendToAll(new SystemMessage("stop", "action")); } Modified: ACMServer/trunk/ACMServer/Mediator/Library/MediatorKernel.cs =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Library/MediatorKernel.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Mediator/Library/MediatorKernel.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -3,6 +3,7 @@ using AcmContester.Plugins.PluginsFramework; using System.Collections.Generic; using System.Windows.Forms; +using AcmContester.Library.LibraryExtention; namespace AcmContester.Mediator.Library { @@ -68,7 +69,7 @@ temp(this, e); } - private void DataArrivedFromClientList(string message) + private void DataArrivedFromClientList(SystemMessage message) { if (testerSideList != null) { @@ -78,7 +79,7 @@ } } } - private void DataArrivedFromTesterList(string message) + private void DataArrivedFromTesterList(SystemMessage message) { if (clientSideList != null) { @@ -89,7 +90,7 @@ } } - public void SendToAll(string message) + public void SendToAll(SystemMessage message) { DataArrivedFromClientList(message); DataArrivedFromTesterList(message); Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/Plugin1/Class1.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/Plugin1/Class1.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/Plugin1/Class1.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -1,13 +1,14 @@ using System; using AcmContester.Plugins.PluginsFramework; +using AcmContester.Library.LibraryExtention; namespace Plugin1 { public class Class1: BaseMediatorPlugin { - public override void Send(string message) + public override void Send(SystemMessage message) { - Console.WriteLine("Plugin1::Class1::Send(" + message + ");"); + Console.WriteLine("Plugin1::Class1::Send(" + message.Message + ");"); Console.WriteLine("The method or operation is not implemented."); //throw new Exception("The method or operation is not implemented."); } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/Plugin1/Plugin1.csproj =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/Plugin1/Plugin1.csproj 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/Plugin1/Plugin1.csproj 2008-08-25 14:13:29 UTC (rev 338) @@ -36,6 +36,10 @@ <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> + <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/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -1,6 +1,7 @@ using System; using AcmContester.Library.Connector; using AcmContester.Library.LibraryExtention.Data; +using AcmContester.Library.LibraryExtention; namespace AcmContester.Plugins.MediatorPlugins.SocketServerGatePlugin { @@ -11,7 +12,7 @@ { private static SocketServerGate instance = new SocketServerGate(); - public new delegate void DataArrivedDelegate(string s); + public new delegate void DataArrivedDelegate(SystemMessage s); public new event DataArrivedDelegate onDataArrived; DataMediator dataContainer = new DataMediator(); @@ -26,9 +27,9 @@ return instance; } - protected override void DataSender(string message, int clientIndex) + protected override void DataSender(SystemMessage message, int clientIndex) { - Submit submit = Submit.CreateFromXml(message); + Submit submit = Submit.CreateFromXml(message.Message); if (dataContainer.Add(submit) == true) { OnLogMessage("send " + submit.id + " to " + clientIndex); @@ -39,12 +40,13 @@ { if (dataContainer.Contains(submit) == false) { - base.Send(submit.ToString()); + SystemMessage sysMes = new SystemMessage(submit.ToString(), "submit"); + base.Send(sysMes); } } - public new void Send(string message) + public new void Send(SystemMessage message) { - SubmitList submitList = SubmitList.CreateFromXml(message); + SubmitList submitList = SubmitList.CreateFromXml(message.Message); OnLogMessage("Get submits"); string ids = ""; @@ -61,9 +63,9 @@ } } - protected override void DataArriver(string message) + protected override void DataArriver(SystemMessage message) { - Result result = Result.CreateFromXml(message); + Result result = Result.CreateFromXml(message.Message); OnLogMessage("result " + result.Submit.id); OnLogMessage("\t " + result.res); @@ -71,7 +73,7 @@ base.DataArriver(message); dataContainer.Return(result); } - private void DataArrived(string message) + private void DataArrived(SystemMessage message) { if (onDataArrived != null) onDataArrived(message); Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -1,6 +1,7 @@ using System; using AcmContester.Plugins.PluginsFramework; using SocketServerGatePlugin; +using AcmContester.Library.LibraryExtention; namespace AcmContester.Plugins.MediatorPlugins.SocketServerGatePlugin { @@ -18,9 +19,9 @@ socketServerGate.LogMessage += new EventHandler<SocketServerGate.LogMessageEventArgs>(socketServerGate_LogMessage); } - public override void Send(string message) + public override void Send(SystemMessage message) { - if (message == "stop") + if (message.Message == "stop") { socketServerGate.Stop(); return; Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGate.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGate.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -10,7 +10,7 @@ { private static WebGate instance = new WebGate(); - private WebGate() + private WebGate(): base(new WebGetter()) { } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -1,6 +1,7 @@ using System; using AcmContester.Plugins.PluginsFramework; using WebGatePlugin; +using AcmContester.Library.LibraryExtention; namespace AcmContester.Plugins.MediatorPlugins.WebGatePlugin { @@ -19,17 +20,17 @@ webGate.onChecking += OnChecking; } - public override void Send(string message) + public override void Send(SystemMessage message) { - string text = " Send: " + message.Length + " bytes" + Environment.NewLine; + string text = " Send: " + message.Message.Length + " bytes" + Environment.NewLine; ((WebGatePluginUserControl)base.Control).AddText(text); webGate.Send(message); } - protected override void DataArrived(string message) + protected override void DataArrived(SystemMessage message) { - string text = "Arrived: " + message.Length + " bytes"; + string text = "Arrived: " + message.Message.Length + " bytes"; ((WebGatePluginUserControl)base.Control).AddText(text); base.DataArrived(message); Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.csproj =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.csproj 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.csproj 2008-08-25 14:13:29 UTC (rev 338) @@ -44,12 +44,17 @@ <Compile Include="WebGatePluginUserControl.Designer.cs"> <DependentUpon>WebGatePluginUserControl.cs</DependentUpon> </Compile> + <Compile Include="WebGetter.cs" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\..\Library\Connector\Connector.csproj"> <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> Added: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs (rev 0) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -0,0 +1,23 @@ +using System; +using AcmContester.Library.Connector.Getter; +using AcmContester.Library.LibraryExtention; + +namespace AcmContester.Plugins.MediatorPlugins.WebGatePlugin +{ + class WebGetter: IWebGetter + { + #region IWebGetter Members + + public SystemMessage GetInfoFromSite() + { + throw new Exception("The method or operation is not implemented."); + } + + public void Send(SystemMessage message) + { + throw new Exception("The method or operation is not implemented."); + } + + #endregion + } +} Modified: ACMServer/trunk/ACMServer/Plugins/PluginsFramework/BaseMediatorPlugin.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/PluginsFramework/BaseMediatorPlugin.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Plugins/PluginsFramework/BaseMediatorPlugin.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -1,5 +1,6 @@ using System; using System.Windows.Forms; +using AcmContester.Library.LibraryExtention; namespace AcmContester.Plugins.PluginsFramework { @@ -8,10 +9,10 @@ /// </summary> public abstract class BaseMediatorPlugin { - public delegate void DataArrived_EventHandler(string message); + public delegate void DataArrived_EventHandler(SystemMessage message); public event DataArrived_EventHandler onDataArrived; - public abstract void Send(string message); + public abstract void Send(SystemMessage message); private UserControl control = null; @@ -27,7 +28,7 @@ } } - protected virtual void DataArrived(string message) + protected virtual void DataArrived(SystemMessage message) { if (onDataArrived != null) onDataArrived(message); Modified: ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsFramework.csproj =================================================================== --- ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsFramework.csproj 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsFramework.csproj 2008-08-25 14:13:29 UTC (rev 338) @@ -36,6 +36,12 @@ <Compile Include="PluginsLoader.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\Library\LibraryExtention\LibraryExtention.csproj"> + <Project>{A8135069-F8BA-4E5D-835F-3FF3F350AA5D}</Project> + <Name>LibraryExtention</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/Tester/Form1.cs =================================================================== --- ACMServer/trunk/ACMServer/Tester/Form1.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Tester/Form1.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -6,10 +6,8 @@ using System.Text; using System.Windows.Forms; using System.IO; -using AcmContester.Library.LibraryExtention; -using System.Threading; using AcmContester.Tester.Library; -using LogDataGridView; +using AcmContester.Library.LibraryExtention; namespace Tester { @@ -95,7 +93,7 @@ { AddText(type + ": " + text); AddTextToGridLog(new LogMessage(text, type)); - view.AddRow(new SystemMessage(text, type)); + view.AddRow(new LogDataGridView.SystemMessage(text, type)); } public class LogMessage Modified: ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-08-19 09:42:45 UTC (rev 337) +++ ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-08-25 14:13:29 UTC (rev 338) @@ -8,7 +8,7 @@ { class SocketClientGate: SocketClient { - public delegate void DataArrivedDelegate(string s); + public delegate void DataArrivedDelegate(SystemMessage s); public event DataArrivedDelegate onDataArrived; public SocketClientGate(string IP) @@ -17,13 +17,13 @@ base.onDataArrived +=new SocketClient.DataArrivedDelegate(SocketClientGate_onDataArrived); } - void SocketClientGate_onDataArrived(string message) + void SocketClientGate_onDataArrived(SystemMessage message) { - if (SystemMessage(message) == true) + if (SystemMessageX(message) == true) return; - OnAddLogText("Receive", message); + OnAddLogText("Receive", message.Message); //OnDataArrived(message); - AddWork(message); + AddWork(message.Message); } public new void Disconnect() @@ -34,7 +34,7 @@ } - private void OnDataArrived(string message) + private void OnDataArrived(SystemMessage message) { if (onDataArrived != null) { @@ -43,8 +43,9 @@ } - private bool SystemMessage(string message) + private bool SystemMessageX(SystemMessage _message) { + string message = _message.Message; char[] chars = new char[1]; chars[0] = ' '; string[] mes = message.Split(chars); @@ -65,7 +66,7 @@ result += " " + mes[i]; } OnAddLogText("SystemSend", result); - base.Send(result); + base.Send(new SystemMessage(result, "")); return true; } return false; @@ -147,7 +148,7 @@ { Result res = Result.CreateFromXml(result); OnAddLogText("Send", "ID " + res.Submit.id + " result - " + res.res); - this.Send(result); + this.Send(new SystemMessage(result, "")); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-08-31 09:16:31
|
Revision: 339 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=339&view=rev Author: brus07 Date: 2008-08-31 09:16:40 +0000 (Sun, 31 Aug 2008) Log Message: ----------- Added new constructors to SystemMessage. Replace all call of SystemMessage constructor to small version. (new SystemMessage(string message)) Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs ACMServer/trunk/ACMServer/Library/LibraryExtention/SystemMessage.cs ACMServer/trunk/ACMServer/Mediator/Form1.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs Modified: ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs 2008-08-25 14:13:29 UTC (rev 338) +++ ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs 2008-08-31 09:16:40 UTC (rev 339) @@ -46,7 +46,7 @@ { checkAddress(); object ob = GetInfoFromSiteX(); - SystemMessage sysMes = new SystemMessage(ob.ToString(), ""); + SystemMessage sysMes = new SystemMessage(ob.ToString()); return sysMes; } Modified: ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-08-25 14:13:29 UTC (rev 338) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-08-31 09:16:40 UTC (rev 339) @@ -99,7 +99,7 @@ string message = "test"; message += " " + server.ClientsList[i].GetHashCode().ToString(); message += " " + curHashCode; - SystemMessage mes = new SystemMessage(message, "system"); + SystemMessage mes = new SystemMessage(message); ServerSend(mes, i); } Modified: ACMServer/trunk/ACMServer/Library/LibraryExtention/SystemMessage.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/LibraryExtention/SystemMessage.cs 2008-08-25 14:13:29 UTC (rev 338) +++ ACMServer/trunk/ACMServer/Library/LibraryExtention/SystemMessage.cs 2008-08-31 09:16:40 UTC (rev 339) @@ -8,7 +8,7 @@ [Serializable] public class SystemMessage { - string type; + string type = ""; public string Type { @@ -18,7 +18,7 @@ } } - string message; + string message = ""; public string Message { @@ -28,12 +28,31 @@ } } - public SystemMessage(string message, string type) + string description = ""; + public string Description { + get + { + return description; + } + } + + public SystemMessage(string message) + { this.message = message; + } + + public SystemMessage(string message, string type): this(message) + { this.type = type; } + public SystemMessage(string message, string type, string description) + : this(message, type) + { + this.description = description; + } + public static byte[] Serialize(SystemMessage ob) { IFormatter formatter = new BinaryFormatter(); Modified: ACMServer/trunk/ACMServer/Mediator/Form1.cs =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-08-25 14:13:29 UTC (rev 338) +++ ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-08-31 09:16:40 UTC (rev 339) @@ -80,7 +80,7 @@ private void Disconnnect() { if (kernel != null) - kernel.SendToAll(new SystemMessage("stop", "action")); + kernel.SendToAll(new SystemMessage("stop")); } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-08-25 14:13:29 UTC (rev 338) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-08-31 09:16:40 UTC (rev 339) @@ -40,7 +40,7 @@ { if (dataContainer.Contains(submit) == false) { - SystemMessage sysMes = new SystemMessage(submit.ToString(), "submit"); + SystemMessage sysMes = new SystemMessage(submit.ToString()); base.Send(sysMes); } } Modified: ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-08-25 14:13:29 UTC (rev 338) +++ ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-08-31 09:16:40 UTC (rev 339) @@ -66,7 +66,7 @@ result += " " + mes[i]; } OnAddLogText("SystemSend", result); - base.Send(new SystemMessage(result, "")); + base.Send(new SystemMessage(result)); return true; } return false; @@ -148,7 +148,7 @@ { Result res = Result.CreateFromXml(result); OnAddLogText("Send", "ID " + res.Submit.id + " result - " + res.res); - this.Send(new SystemMessage(result, "")); + this.Send(new SystemMessage(result)); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-08-31 09:56:34
|
Revision: 341 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=341&view=rev Author: brus07 Date: 2008-08-31 09:56:44 +0000 (Sun, 31 Aug 2008) Log Message: ----------- Form send Stop message to SocketServerGatePlugin with specified type of SystemMessage. Modified Paths: -------------- ACMServer/trunk/ACMServer/Mediator/Form1.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs Modified: ACMServer/trunk/ACMServer/Mediator/Form1.cs =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-08-31 09:55:07 UTC (rev 340) +++ ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-08-31 09:56:44 UTC (rev 341) @@ -80,7 +80,7 @@ private void Disconnnect() { if (kernel != null) - kernel.SendToAll(new SystemMessage("stop")); + kernel.SendToAll(new SystemMessage("stop", "ApplicationSystem")); } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs 2008-08-31 09:55:07 UTC (rev 340) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.cs 2008-08-31 09:56:44 UTC (rev 341) @@ -21,7 +21,7 @@ public override void Send(SystemMessage message) { - if (message.Message == "stop") + if (message.IsType("ApplicationSystem") && message.Message == "stop") { socketServerGate.Stop(); return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-08-31 10:42:26
|
Revision: 342 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=342&view=rev Author: brus07 Date: 2008-08-31 10:42:35 +0000 (Sun, 31 Aug 2008) Log Message: ----------- Now Getter for web can be realize in Plugin. Realized WebGetter in Plugin. Old WebGate generate exception when using. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj ACMServer/trunk/ACMServer/Library/Connector/Getter/IGetter.cs ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGate.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.csproj ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs Added Paths: ----------- ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetterOld.cs Removed Paths: ------------- ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs Modified: ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-08-31 09:56:44 UTC (rev 341) +++ ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-08-31 10:42:35 UTC (rev 342) @@ -39,7 +39,7 @@ </ItemGroup> <ItemGroup> <Compile Include="Getter\IGetter.cs" /> - <Compile Include="Getter\WebGetter.cs" /> + <Compile Include="Getter\WebGetterOld.cs" /> <Compile Include="SocketClient.cs" /> <Compile Include="SocketServer.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> Modified: ACMServer/trunk/ACMServer/Library/Connector/Getter/IGetter.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Getter/IGetter.cs 2008-08-31 09:56:44 UTC (rev 341) +++ ACMServer/trunk/ACMServer/Library/Connector/Getter/IGetter.cs 2008-08-31 10:42:35 UTC (rev 342) @@ -6,5 +6,10 @@ { SystemMessage GetInfoFromSite(); void Send(SystemMessage message); + string PathToSource + { + get; + set; + } } } Deleted: ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs 2008-08-31 09:56:44 UTC (rev 341) +++ ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs 2008-08-31 10:42:35 UTC (rev 342) @@ -1,96 +0,0 @@ -using System; -using System.Threading; -using System.Windows.Forms; -using System.Net; -using System.IO; -using System.Text; -using AcmContester.Library.LibraryExtention.Data; -using AcmContester.Library.LibraryExtention; - -namespace AcmContester.Library.Connector.Getter -{ - class WebGetter: IWebGetter - { - //"http://127.0.0.1/d"; - string fullPathToWebPages = ""; - - public string FullPathToWebPages - { - get - { - checkAddress(); - return fullPathToWebPages; - } - set - { - fullPathToWebPages = value; - } - } - - private void checkAddress() - { - if (fullPathToWebPages == "") - { - StreamReader s = new StreamReader("InDataW.txt", Encoding.Default); - fullPathToWebPages = s.ReadLine(); - s.Close(); - } - } - - public void Send(SystemMessage message) - { - SendX(message.Message); - } - - public SystemMessage GetInfoFromSite() - { - checkAddress(); - object ob = GetInfoFromSiteX(); - SystemMessage sysMes = new SystemMessage(ob.ToString()); - return sysMes; - } - - void SendX(string message) - { - string res = ""; - string id = ""; - string usedMemory = ""; - string usedTime = ""; - try - { - //TODO: - Result result = Result.CreateFromXml(message); - res = result.res; - id = result.Submit.id.ToString(); - usedMemory = result.usedMemory.ToString(); - usedTime = result.usedTime.ToString(); - } - catch (Exception) - { - return; - } - string fullURL = fullPathToWebPages + "/set.php?"; - fullURL += "res=" + res; - fullURL += "&id=" + id; - fullURL += "&usedMemory=" + usedMemory; - fullURL += "&usedTime=" + usedTime; - HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(fullURL); - myRequest.Method = "GET"; - WebResponse myResponse = myRequest.GetResponse(); - myResponse.Close(); - } - string GetInfoFromSiteX() - { - HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(fullPathToWebPages + "/get.php"); - myRequest.Method = "GET"; - WebResponse myResponse = myRequest.GetResponse(); - StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8); - string result = sr.ReadToEnd(); - sr.Close(); - myResponse.Close(); - if (result.Length == 0) - return null; - return result; - } - } -} Copied: ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetterOld.cs (from rev 339, ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetter.cs) =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetterOld.cs (rev 0) +++ ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetterOld.cs 2008-08-31 10:42:35 UTC (rev 342) @@ -0,0 +1,44 @@ +using System; +using System.Threading; +using System.Windows.Forms; +using System.Net; +using System.IO; +using System.Text; +using AcmContester.Library.LibraryExtention.Data; +using AcmContester.Library.LibraryExtention; + +namespace AcmContester.Library.Connector.Getter +{ + class WebGetterOld: IWebGetter + { + //"http://127.0.0.1/d"; + string fullPathToWebPages = ""; + + public void Send(SystemMessage message) + { + throw new Exception("The method or operation is not implemented."); + } + + public SystemMessage GetInfoFromSite() + { + throw new Exception("The method or operation is not implemented."); + } + + #region IWebGetter Members + + + public string PathToSource + { + get + { + return fullPathToWebPages; + } + set + { + fullPathToWebPages = value; + } + } + + #endregion + } +} Property changes on: ACMServer/trunk/ACMServer/Library/Connector/Getter/WebGetterOld.cs ___________________________________________________________________ Added: svn:mergeinfo + Modified: ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs 2008-08-31 09:56:44 UTC (rev 341) +++ ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs 2008-08-31 10:42:35 UTC (rev 342) @@ -15,7 +15,7 @@ public event EventHandler onChecking; public event EventHandler onChecked; - private IWebGetter getter = new WebGetter(); + private IWebGetter getter = new WebGetterOld(); private WebConnector() { @@ -23,7 +23,7 @@ } public WebConnector(IWebGetter getter): this() { - //this.getter = getter; + this.getter = getter; } private void Init() { @@ -42,11 +42,12 @@ //TODO: get { - return ((WebGetter)getter).FullPathToWebPages; + + return getter.PathToSource; } set { - ((WebGetter)getter).FullPathToWebPages = value; + getter.PathToSource = value; } } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGate.cs 2008-08-31 09:56:44 UTC (rev 341) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGate.cs 2008-08-31 10:42:35 UTC (rev 342) @@ -10,7 +10,8 @@ { private static WebGate instance = new WebGate(); - private WebGate(): base(new WebGetter()) + private WebGate() + : base(new WebGetter()) { } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.csproj =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.csproj 2008-08-31 09:56:44 UTC (rev 341) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.csproj 2008-08-31 10:42:35 UTC (rev 342) @@ -51,6 +51,10 @@ <Project>{211DD6A5-2D73-439E-8722-ED2C89ED1DDB}</Project> <Name>Connector</Name> </ProjectReference> + <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/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs 2008-08-31 09:56:44 UTC (rev 341) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs 2008-08-31 10:42:35 UTC (rev 342) @@ -1,23 +1,112 @@ using System; using AcmContester.Library.Connector.Getter; using AcmContester.Library.LibraryExtention; +using System.IO; +using System.Text; +using AcmContester.Library.LibraryExtention.Data; +using System.Net; namespace AcmContester.Plugins.MediatorPlugins.WebGatePlugin { class WebGetter: IWebGetter { + //"http://127.0.0.1/d"; + string fullPathToWebPages = ""; + + public string FullPathToWebPages + { + get + { + checkAddress(); + return fullPathToWebPages; + } + set + { + fullPathToWebPages = value; + } + } + + private void checkAddress() + { + if (fullPathToWebPages == "") + { + StreamReader s = new StreamReader("InDataW.txt", Encoding.Default); + fullPathToWebPages = s.ReadLine(); + s.Close(); + } + } + #region IWebGetter Members public SystemMessage GetInfoFromSite() { - throw new Exception("The method or operation is not implemented."); + checkAddress(); + object ob = GetInfoFromSiteX(); + SystemMessage sysMes = new SystemMessage(ob.ToString()); + return sysMes; } public void Send(SystemMessage message) { - throw new Exception("The method or operation is not implemented."); + SendX(message.Message); } + public string PathToSource + { + get + { + return fullPathToWebPages; + } + set + { + fullPathToWebPages = value; + } + } + #endregion + + + void SendX(string message) + { + string res = ""; + string id = ""; + string usedMemory = ""; + string usedTime = ""; + try + { + //TODO: + Result result = Result.CreateFromXml(message); + res = result.res; + id = result.Submit.id.ToString(); + usedMemory = result.usedMemory.ToString(); + usedTime = result.usedTime.ToString(); + } + catch (Exception) + { + return; + } + string fullURL = fullPathToWebPages + "/set.php?"; + fullURL += "res=" + res; + fullURL += "&id=" + id; + fullURL += "&usedMemory=" + usedMemory; + fullURL += "&usedTime=" + usedTime; + HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(fullURL); + myRequest.Method = "GET"; + WebResponse myResponse = myRequest.GetResponse(); + myResponse.Close(); + } + string GetInfoFromSiteX() + { + HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(fullPathToWebPages + "/get.php"); + myRequest.Method = "GET"; + WebResponse myResponse = myRequest.GetResponse(); + StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8); + string result = sr.ReadToEnd(); + sr.Close(); + myResponse.Close(); + if (result.Length == 0) + return null; + return result; + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-09-16 13:18:21
|
Revision: 350 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=350&view=rev Author: brus07 Date: 2008-09-16 13:18:31 +0000 (Tue, 16 Sep 2008) Log Message: ----------- Added queue in SocketClientGate, and treeing send to free Tester. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs Modified: ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-09-14 15:01:05 UTC (rev 349) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-09-16 13:18:31 UTC (rev 350) @@ -40,14 +40,16 @@ byte[] bytes = SystemMessage.Serialize(mes); server.SendData(bytes, TargetClientIndex); } - public void Send(SystemMessage message) + public 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) { Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-09-14 15:01:05 UTC (rev 349) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-09-16 13:18:31 UTC (rev 350) @@ -2,6 +2,8 @@ using AcmContester.Library.Connector; using AcmContester.Library.LibraryExtention.Data; using AcmContester.Library.LibraryExtention; +using System.Collections.Generic; +using System.Threading; namespace AcmContester.Plugins.MediatorPlugins.SocketServerGatePlugin { @@ -36,16 +38,63 @@ base.DataSender(message, clientIndex); } } + + Dictionary<SystemMessage, object> poolWork = new Dictionary<SystemMessage, object>(); + bool poolWorking = false; private void Send2(Submit submit) { if (dataContainer.Contains(submit) == false) { - SystemMessage sysMes = new SystemMessage(submit.ToString()); - base.Send(sysMes); + SystemMessage sysMes = new SystemMessage(submit.ToString(), "TestingSubmit"); + lock (poolWork) + { + poolWork.Add(sysMes, null); + } + startPool(); } } - public new void Send(SystemMessage message) + private void runPool() { + if (poolWorking == true) + return; + poolWorking = true; + while (true) + { + Thread.Sleep(100); + lock (poolWork) + { + if (poolWork.Count == 0) + break; + foreach (SystemMessage sysMes in poolWork.Keys) + { + if (base.Send(sysMes) == true) + { + poolWork.Remove(sysMes); + break; + } + } + } + } + poolWorking = false; + } + private static void RunningPool(Object ob) + { + SocketServerGate ssg = (SocketServerGate)ob; + ssg.runPool(); + } + private void startPool() + { + if (poolWorking == false) + { + ThreadPool.QueueUserWorkItem(RunningPool, this); + } + } + + public new bool Send(SystemMessage message) + { + if (message.IsType("TestingSubmitList") == false) + return false; + SubmitList submitList = SubmitList.CreateFromXml(message.Message); OnLogMessage("Get submits"); @@ -59,8 +108,8 @@ for (int index = 0; index < submitList.Items.Length; index++) { Send2(submitList.Items[index]); - //base.Send(submitList.Items[index].ToString()); } + return true; } protected override void DataArriver(SystemMessage message) Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs 2008-09-14 15:01:05 UTC (rev 349) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs 2008-09-16 13:18:31 UTC (rev 350) @@ -49,16 +49,17 @@ public SystemMessage GetInfoFromSite() { checkAddress(); - object ob = GetInfoFromSiteX(); + object ob = MediatorGetInfoFromSiteX(); if (ob == null) return new SystemMessage("", "Empty"); - SystemMessage sysMes = new SystemMessage(ob.ToString()); + SystemMessage sysMes = new SystemMessage(ob.ToString(), "TestingSubmitList"); return sysMes; } public void Send(SystemMessage message) { - SendX(message.Message); + if (message.IsType("TestingResult") == true) + MediatorSendX(message.Message); } public string PathToSource @@ -75,7 +76,12 @@ #endregion - + void MediatorSendX(string message) + { + Result result = Result.CreateFromXml(message); + SendX(message); + container.Return(result); + } void SendX(string message) { string res = ""; @@ -105,6 +111,30 @@ WebResponse myResponse = myRequest.GetResponse(); myResponse.Close(); } + + string MediatorGetInfoFromSiteX() + { + string getAll = GetInfoFromSiteX(); + if (String.IsNullOrEmpty(getAll) == true) + return null; + SubmitList list = SubmitList.CreateFromXml(getAll); + List<Submit> result = new List<Submit>(); + for (int i = 0; i < list.Items.Length; i++) + { + if (container.Contains(list.Items[i]) == false) + { + result.Add(list.Items[i]); + + //TODO: \xEF\xEE\xF2\xF0\xB3\xE1\xED\xEE \xE4\xEE\xE1\xE0\xE2\xEB\xFF\xF2\xE8 \xF2\xB3\xEB\xFC\xEA\xE8 \xF2\xEE\xE4\xB3 \xEA\xEE\xEB\xE8 \xF6\xE5\xE9 \xF1\xE0\xE1\xEC\xB3\xF2 \xE2\xB3\xE4\xEF\xF0\xE0\xE2\xEB\xE5\xED\xE8\xE9 \xED\xE0 \xF2\xE5\xF1\xF2\xF3\xE2\xE0\xED\xED\xFF + container.Add(list.Items[i]); + } + } + if (result.Count == 0) + return null; + SubmitList resultList = new SubmitList(); + resultList.Items = result.ToArray(); + return resultList.ToString(); + } string GetInfoFromSiteX() { HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(fullPathToWebPages + "/get.php"); Modified: ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-09-14 15:01:05 UTC (rev 349) +++ ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-09-16 13:18:31 UTC (rev 350) @@ -148,7 +148,7 @@ { Result res = Result.CreateFromXml(result); OnAddLogText("Send", "ID " + res.Submit.id + " result - " + res.res); - this.Send(new SystemMessage(result)); + this.Send(new SystemMessage(result, "TestingResult")); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-09-20 22:01:56
|
Revision: 367 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=367&view=rev Author: brus07 Date: 2008-09-20 22:01:36 +0000 (Sat, 20 Sep 2008) Log Message: ----------- Rename "Checker" project to "Runner". In the future, necessary to rename to the best name. Modified Paths: -------------- ACMServer/trunk/ACMServer/ACMTester.sln ACMServer/trunk/ACMServer/Tester/Tester.csproj Added Paths: ----------- ACMServer/trunk/ACMServer/Runner/ ACMServer/trunk/ACMServer/Runner/Runner.csproj Removed Paths: ------------- ACMServer/trunk/ACMServer/Checker/ ACMServer/trunk/ACMServer/Runner/Checker.csproj Modified: ACMServer/trunk/ACMServer/ACMTester.sln =================================================================== --- ACMServer/trunk/ACMServer/ACMTester.sln 2008-09-20 22:01:05 UTC (rev 366) +++ ACMServer/trunk/ACMServer/ACMTester.sln 2008-09-20 22:01:36 UTC (rev 367) @@ -9,7 +9,7 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibraryExtention", "Library\LibraryExtention\LibraryExtention.csproj", "{A8135069-F8BA-4E5D-835F-3FF3F350AA5D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Checker", "Checker\Checker.csproj", "{052D9F77-17AF-42F3-BFBF-975A19383496}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Runner", "Runner\Runner.csproj", "{052D9F77-17AF-42F3-BFBF-975A19383496}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Data", "Library\Data\Data.csproj", "{30C0EFA3-36A8-4C6F-8FEC-28F771D4933F}" EndProject Property changes on: ACMServer/trunk/ACMServer/Runner ___________________________________________________________________ Added: svn:ignore + bin obj Added: tsvn:logminsize + 5 Added: svn:mergeinfo + Deleted: ACMServer/trunk/ACMServer/Runner/Checker.csproj =================================================================== --- ACMServer/trunk/ACMServer/Checker/Checker.csproj 2008-09-19 21:53:02 UTC (rev 355) +++ ACMServer/trunk/ACMServer/Runner/Checker.csproj 2008-09-20 22:01:36 UTC (rev 367) @@ -1,70 +0,0 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>8.0.50727</ProductVersion> - <SchemaVersion>2.0</SchemaVersion> - <ProjectGuid>{052D9F77-17AF-42F3-BFBF-975A19383496}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>Checker</RootNamespace> - <AssemblyName>Checker</AssemblyName> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="SourceTest, Version=1.0.3077.22878, Culture=neutral, processorArchitecture=x86"> - <SpecificVersion>False</SpecificVersion> - <HintPath>.\SourceTest.dll</HintPath> - </Reference> - <Reference Include="System" /> - <Reference Include="System.Data" /> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="Class1.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - </ItemGroup> - <ItemGroup> - <Content Include="InData.txt"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </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> - </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. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> - <PropertyGroup> - <PostBuildEvent> - </PostBuildEvent> - </PropertyGroup> -</Project> \ No newline at end of file Copied: ACMServer/trunk/ACMServer/Runner/Runner.csproj (from rev 355, ACMServer/trunk/ACMServer/Checker/Checker.csproj) =================================================================== --- ACMServer/trunk/ACMServer/Runner/Runner.csproj (rev 0) +++ ACMServer/trunk/ACMServer/Runner/Runner.csproj 2008-09-20 22:01:36 UTC (rev 367) @@ -0,0 +1,70 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.50727</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{052D9F77-17AF-42F3-BFBF-975A19383496}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Runner</RootNamespace> + <AssemblyName>Runner</AssemblyName> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="SourceTest, Version=1.0.3077.22878, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>.\SourceTest.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Class1.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <Content Include="InData.txt"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </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> + </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. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> + <PropertyGroup> + <PostBuildEvent> + </PostBuildEvent> + </PropertyGroup> +</Project> \ No newline at end of file Property changes on: ACMServer/trunk/ACMServer/Runner/Runner.csproj ___________________________________________________________________ Added: svn:mergeinfo + Modified: ACMServer/trunk/ACMServer/Tester/Tester.csproj =================================================================== --- ACMServer/trunk/ACMServer/Tester/Tester.csproj 2008-09-20 22:01:05 UTC (rev 366) +++ ACMServer/trunk/ACMServer/Tester/Tester.csproj 2008-09-20 22:01:36 UTC (rev 367) @@ -70,9 +70,9 @@ <Compile Include="Library\SocketClientGate.cs" /> </ItemGroup> <ItemGroup> - <ProjectReference Include="..\Checker\Checker.csproj"> + <ProjectReference Include="..\Runner\Runner.csproj"> <Project>{052D9F77-17AF-42F3-BFBF-975A19383496}</Project> - <Name>Checker</Name> + <Name>Runner</Name> </ProjectReference> <ProjectReference Include="..\Library\Connector\Connector.csproj"> <Project>{211DD6A5-2D73-439E-8722-ED2C89ED1DDB}</Project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-09-22 11:52:17
|
Revision: 369 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=369&view=rev Author: brus07 Date: 2008-09-22 11:52:05 +0000 (Mon, 22 Sep 2008) Log Message: ----------- Connected new (2.0) SharpTester version. But now, *.dll files copy to Runner directory and included to project. Modified Paths: -------------- ACMServer/trunk/ACMServer/Runner/Class1.cs ACMServer/trunk/ACMServer/Runner/InData.txt ACMServer/trunk/ACMServer/Runner/Runner.csproj ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs Added Paths: ----------- ACMServer/trunk/ACMServer/Runner/AllowedFunc.txt ACMServer/trunk/ACMServer/Runner/Checker.dll ACMServer/trunk/ACMServer/Runner/Load.dll ACMServer/trunk/ACMServer/Runner/Main.dll ACMServer/trunk/ACMServer/Runner/MutanticFramework.dll ACMServer/trunk/ACMServer/Runner/Plugin.dll ACMServer/trunk/ACMServer/Runner/ScriptDotNet.dll ACMServer/trunk/ACMServer/Runner/Test.dll ACMServer/trunk/ACMServer/Runner/TesterInData.txt ACMServer/trunk/ACMServer/Runner/VirtualPlugin.dll ACMServer/trunk/ACMServer/Runner/scriptExample.txt Removed Paths: ------------- ACMServer/trunk/ACMServer/Runner/SourceTest.dll Property Changed: ---------------- ACMServer/trunk/ACMServer/Runner/ Property changes on: ACMServer/trunk/ACMServer/Runner ___________________________________________________________________ Modified: svn:ignore - bin obj + bin obj *.user Added: ACMServer/trunk/ACMServer/Runner/AllowedFunc.txt =================================================================== --- ACMServer/trunk/ACMServer/Runner/AllowedFunc.txt (rev 0) +++ ACMServer/trunk/ACMServer/Runner/AllowedFunc.txt 2008-09-22 11:52:05 UTC (rev 369) @@ -0,0 +1,57 @@ +kernel32.dll DeleteCriticalSection +kernel32.dll LeaveCriticalSection +kernel32.dll EnterCriticalSection +kernel32.dll InitializeCriticalSection +kernel32.dll VirtualFree +kernel32.dll VirtualAlloc +kernel32.dll LocalFree +kernel32.dll LocalAlloc +kernel32.dll GetVersion +kernel32.dll GetCurrentThreadId +kernel32.dll GetThreadLocale +kernel32.dll GetStartupInfoA +kernel32.dll GetLocaleInfoA +kernel32.dll GetCommandLineA +kernel32.dll FreeLibrary +kernel32.dll ExitProcess +kernel32.dll WriteFile +kernel32.dll UnhandledExceptionFilter +kernel32.dll RtlUnwind +kernel32.dll RaiseException +kernel32.dll GetStdHandle +user32.dll GetKeyboardType +user32.dll MessageBoxA +advapi32.dll RegQueryValueExA +advapi32.dll RegOpenKeyExA +advapi32.dll RegCloseKey +kernel32.dll TlsSetValue +kernel32.dll TlsGetValue +kernel32.dll GetModuleHandleA +kernel32.dll WideCharToMultiByte +kernel32.dll lstrlenA +kernel32.dll lstrcpynA +kernel32.dll LoadLibraryExA +kernel32.dll GetProcAddress +kernel32.dll GetModuleFileNameA +kernel32.dll FindFirstFileA +kernel32.dll FindClose +user32.dll LoadStringA +user32.dll CharNextA +oleaut32.dll SysFreeString +kernel32.dll VirtualQuery +kernel32.dll GetVersionExA +kernel32.dll GetStringTypeExA +kernel32.dll GetDiskFreeSpaceA +kernel32.dll GetCPInfo +kernel32.dll GetACP +kernel32.dll EnumCalendarInfoA +user32.dll GetSystemMetrics +user32.dll CharToOemA +kernel32.dll GetLastError +kernel32.dll SetFilePointer +kernel32.dll SetEndOfFile +kernel32.dll ReadFile +kernel32.dll GetFileSize +kernel32.dll GetFileType +kernel32.dll CreateFileA +kernel32.dll CloseHandle \ No newline at end of file Property changes on: ACMServer/trunk/ACMServer/Runner/Checker.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: ACMServer/trunk/ACMServer/Runner/Class1.cs =================================================================== --- ACMServer/trunk/ACMServer/Runner/Class1.cs 2008-09-21 08:13:45 UTC (rev 368) +++ ACMServer/trunk/ACMServer/Runner/Class1.cs 2008-09-22 11:52:05 UTC (rev 369) @@ -1,27 +1,16 @@ using System; using System.Collections.Generic; using System.Text; -using SourceTest; using System.IO; using AcmContester.Library.LibraryExtention; using AcmContester.Library.LibraryExtention.Data; +using Main; +using Test; namespace Checker { public class Checker { - static void func(int x, TResult res) - { - Console.WriteLine("test number {0}, result: {1}, details: {2}", x, TSource.TestResultToString(res.res), res.Details); - } - - static void funcWithLog(int x, TResult res) - { - Log log = Log.GetLog(); - log.Loging(" Test #" + x + " Details " + res.Details + "\xA0\n", Log.Priority.INFO); - //Console.WriteLine("test number {0}, result: {1}, details: {2}", x, TSource.TestResultToString(res.res), res.Details); - } - public static string GetResult(string message) { Log log = Log.GetLog(); @@ -34,52 +23,77 @@ 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(); - String problem = s.ReadLine(); - String temp = s.ReadLine(); - String source = s.ReadLine(); - s.Close(); - //s = File.OpenText(source); - c.CompPath = compiler; - c.ProblemPath = problem; - c.LoadLimits(); - c.Src = code; - //c.Src = s.ReadToEnd(); - //s.Close(); - c.TempPath = temp; - c.TestHandler += new TTestHandler(funcWithLog); - c.Language = (TLang)1; - c.ProcessAll(); - c.State = (TSourceState)6; - log.Loging("Compile result: " + TSource.CompileResultToString(c.Summary.compres.res) + "\nCompilation details: " + c.Summary.compres.Details + "\nUsed Time for compile: " + c.Summary.compres.UsedTime, Log.Priority.INFO); - //Console.WriteLine("Compile result: {0}\nCompilation details: {1}\nUsed Time for compile: {2}", TSource.CompileResultToString(c.Summary.compres.res), c.Summary.compres.Details, c.Summary.compres.UsedTime); - log.Loging("Test result: " + TSource.TestResultToString(c.Summary.res.res), Log.Priority.INFO); - //Console.WriteLine("Test result: {0}", TSource.TestResultToString(c.Summary.res.res)); - log.Loging("Points: " + c.Summary.res.points, Log.Priority.INFO); - //Console.WriteLine("Points: {0}", c.Summary.res.points); - log.Loging("Used Time: " + c.Summary.res.UsedTime, Log.Priority.INFO); - //Console.WriteLine("Used Time: {0}", c.Summary.res.UsedTime); - log.Loging("Used Memory: " + c.Summary.res.UsedMemory, Log.Priority.INFO); - //Console.WriteLine("Used Memory: {0}", c.Summary.res.UsedMemory); - log.Loging("Used Real Time: " + c.Summary.res.UsedRealTime, Log.Priority.INFO); - //Console.WriteLine("Used Real Time: {0}", c.Summary.res.UsedRealTime); - //Console.ReadKey(); - log.Loging("----------------------------------------------------", Log.Priority.INFO); - log.Loging("", Log.Priority.INFO); + Result result = new Result(submit); - if (c.Summary.compres.res != (TCompRes)0 ) + try { - Result resulta = new Result(submit); - resulta.res = TSource.CompileResultToString(c.Summary.compres.res); - return resulta.ToStringX(); + //Console.SetOut(File.CreateText("logout.txt")); + string[] data = File.ReadAllLines("InData.txt"); + + string src = code; + TestEnv test = new TestEnv(src, data[0], data[1], data[2]); + test.Compile(); + + log.Loging("------------------BEGIN SOURCE--------------------------", Log.Priority.INFO); + Console.WriteLine("------------------BEGIN SOURCE--------------------------"); + + log.Loging(src, Log.Priority.INFO); + Console.WriteLine(src); + + log.Loging("-------------------END SOURCE---------------------------", Log.Priority.INFO); + Console.WriteLine("-------------------END SOURCE---------------------------"); + + log.Loging(String.Format("Compile result: {0}, details: {1}, usedtime:{2}", test.comp.Result.ToString(), test.comp.Details, test.comp.UsedTime), Log.Priority.INFO); + Console.WriteLine("Compile result: {0}, details: {1}, usedtime:{2}", test.comp.Result.ToString(), test.comp.Details, test.comp.UsedTime); + + log.Loging(String.Format("Comp Output: {0}", test.comp.CompilerOutput), Log.Priority.INFO); + Console.WriteLine("Comp Output: {0}", test.comp.CompilerOutput); + + if (test.comp.Result == Test.CompRes.OK) + { + test.RunAllTests(SecureType.Double); + + for (int i = 0; i < test.run.results.Length; i++) + { + log.Loging(String.Format("Test #{0} result: {1}, details: {2}, usedtime:{3}, usedRealTime: {4}, usedmemory: {5}", i + 1, + test.run.results[i].res, test.run.results[i].Details, test.run.results[i].UsedTime, test.run.results[i].UsedRealTime, test.run.results[i].UsedMemory), Log.Priority.INFO); + Console.WriteLine("Test #{0} result: {1}, details: {2}, usedtime:{3}, usedRealTime: {4}, usedmemory: {5}", i + 1, + test.run.results[i].res, test.run.results[i].Details, test.run.results[i].UsedTime, test.run.results[i].UsedRealTime, test.run.results[i].UsedMemory); + } + } + + + //TODO: + result.res = test.comp.Result.ToString(); + if (test.comp.Result == Test.CompRes.OK) + { + int usedTime = -1; + int usedMemory = -1; + for (int i = 0; i < test.run.results.Length; i++) + { + if (test.run.results[i].res == TestResult.Accepted) + { + usedTime = Math.Max(usedTime, test.run.results[i].UsedTime); + usedMemory = Math.Max(usedMemory, test.run.results[i].UsedMemory); + result.res = test.run.results[i].res.ToString(); + } + else + { + result.res = test.run.results[i].res.ToString(); + break; + } + } + if (result.res == TestResult.Accepted.ToString()) + { + result.usedMemory = usedTime; + result.usedTime = usedMemory; + } + } } - //TODO: - Result result = new Result(submit); - result.res = TSource.TestResultToString(c.Summary.res.res); - result.usedMemory = c.Summary.res.UsedMemory; - result.usedTime = c.Summary.res.UsedTime; + catch (Exception tex) + { + result.res = "Exception"; + } return result.ToStringX(); } } Modified: ACMServer/trunk/ACMServer/Runner/InData.txt =================================================================== --- ACMServer/trunk/ACMServer/Runner/InData.txt 2008-09-21 08:13:45 UTC (rev 368) +++ ACMServer/trunk/ACMServer/Runner/InData.txt 2008-09-22 11:52:05 UTC (rev 369) @@ -1,4 +1,3 @@ -d:\SAMPLE\Compillers\D7.bat -d:\SAMPLE\Test\ -d:\SAMPLE\Temp\ -d:\SAMPLE\source.txt +d:\Sample\Compiler\D7.bat +d:\Sample\Temp\ +d:\Sample\Problem\ \ No newline at end of file Property changes on: ACMServer/trunk/ACMServer/Runner/Load.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: ACMServer/trunk/ACMServer/Runner/Main.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: ACMServer/trunk/ACMServer/Runner/MutanticFramework.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: ACMServer/trunk/ACMServer/Runner/Plugin.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: ACMServer/trunk/ACMServer/Runner/Runner.csproj =================================================================== --- ACMServer/trunk/ACMServer/Runner/Runner.csproj 2008-09-21 08:13:45 UTC (rev 368) +++ ACMServer/trunk/ACMServer/Runner/Runner.csproj 2008-09-22 11:52:05 UTC (rev 369) @@ -28,24 +28,17 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> - <Reference Include="SourceTest, Version=1.0.3077.22878, Culture=neutral, processorArchitecture=x86"> - <SpecificVersion>False</SpecificVersion> - <HintPath>.\SourceTest.dll</HintPath> - </Reference> + <Reference Include="Main, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" /> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.Xml" /> + <Reference Include="Test, Version=1.0.3187.73, Culture=neutral, processorArchitecture=x86" /> </ItemGroup> <ItemGroup> <Compile Include="Class1.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> - <Content Include="InData.txt"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - </ItemGroup> - <ItemGroup> <ProjectReference Include="..\Library\Data\Data.csproj"> <Project>{30C0EFA3-36A8-4C6F-8FEC-28F771D4933F}</Project> <Name>Data</Name> @@ -55,6 +48,44 @@ <Name>LibraryExtention</Name> </ProjectReference> </ItemGroup> + <ItemGroup> + <Content Include="AllowedFunc.txt"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="Checker.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="InData.txt"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="Load.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="Main.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="MutanticFramework.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="Plugin.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="ScriptDotNet.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="scriptExample.txt"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="Test.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TesterInData.txt"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="VirtualPlugin.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + </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. Property changes on: ACMServer/trunk/ACMServer/Runner/ScriptDotNet.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: ACMServer/trunk/ACMServer/Runner/Test.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: ACMServer/trunk/ACMServer/Runner/TesterInData.txt =================================================================== --- ACMServer/trunk/ACMServer/Runner/TesterInData.txt (rev 0) +++ ACMServer/trunk/ACMServer/Runner/TesterInData.txt 2008-09-22 11:52:05 UTC (rev 369) @@ -0,0 +1,3 @@ +100 +TestingUser +USER12345 \ No newline at end of file Property changes on: ACMServer/trunk/ACMServer/Runner/VirtualPlugin.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: ACMServer/trunk/ACMServer/Runner/scriptExample.txt =================================================================== --- ACMServer/trunk/ACMServer/Runner/scriptExample.txt (rev 0) +++ ACMServer/trunk/ACMServer/Runner/scriptExample.txt 2008-09-22 11:52:05 UTC (rev 369) @@ -0,0 +1,3 @@ +if (output==correctOutput) +result='AC'; +else result='WA'; \ No newline at end of file Modified: ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-09-21 08:13:45 UTC (rev 368) +++ ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-09-22 11:52:05 UTC (rev 369) @@ -10,8 +10,8 @@ { private string descriptionMessage = ""; - public delegate void DataArrivedDelegate(SystemMessage s); - public event DataArrivedDelegate onDataArrived; + public new delegate void DataArrivedDelegate(SystemMessage s); + public new event DataArrivedDelegate onDataArrived; public SocketClientGate(string IP) : base(IP) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-09-25 07:47:19
|
Revision: 373 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=373&view=rev Author: brus07 Date: 2008-09-25 07:47:17 +0000 (Thu, 25 Sep 2008) Log Message: ----------- Moved LogDataGridView.dll to Resource folder Modified Paths: -------------- ACMServer/trunk/ACMServer/Tester/Tester.csproj Added Paths: ----------- ACMServer/trunk/ACMServer/Resource/LogDataGridView.dll Removed Paths: ------------- ACMServer/trunk/ACMServer/Tester/LogDataGridView.dll Property changes on: ACMServer/trunk/ACMServer/Resource/LogDataGridView.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Modified: ACMServer/trunk/ACMServer/Tester/Tester.csproj =================================================================== --- ACMServer/trunk/ACMServer/Tester/Tester.csproj 2008-09-24 19:51:37 UTC (rev 372) +++ ACMServer/trunk/ACMServer/Tester/Tester.csproj 2008-09-25 07:47:17 UTC (rev 373) @@ -28,7 +28,10 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> - <Reference Include="LogDataGridView, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" /> + <Reference Include="LogDataGridView, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\Resource\LogDataGridView.dll</HintPath> + </Reference> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.Deployment" /> @@ -87,11 +90,6 @@ <Name>LibraryExtention</Name> </ProjectReference> </ItemGroup> - <ItemGroup> - <Content Include="LogDataGridView.dll"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - </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. |
From: <br...@us...> - 2008-09-30 09:25:11
|
Revision: 397 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=397&view=rev Author: brus07 Date: 2008-09-30 09:24:53 +0000 (Tue, 30 Sep 2008) Log Message: ----------- Fixed bug. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/WorkingPool.cs Modified: ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-09-30 08:48:32 UTC (rev 396) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-09-30 09:24:53 UTC (rev 397) @@ -103,6 +103,11 @@ /// <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++) Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/WorkingPool.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/WorkingPool.cs 2008-09-30 08:48:32 UTC (rev 396) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/WorkingPool.cs 2008-09-30 09:24:53 UTC (rev 397) @@ -35,10 +35,11 @@ break; foreach (SystemMessage sysMes in poolWork.Keys) { - //TODO: potribno zrobyty, shot pry posylci "poolWork" ne buv zalokanyj + //TODO: potribno zrobyty, shob pry posylci "poolWork" ne buv zalokanyj if (OnSendData(sysMes) == true) { poolWork.Remove(sysMes); + break; } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-10-01 09:58:25
|
Revision: 400 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=400&view=rev Author: brus07 Date: 2008-10-01 09:58:09 +0000 (Wed, 01 Oct 2008) Log Message: ----------- Refactoring in using SystemMessageType. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Data/DataMediator.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs Modified: ACMServer/trunk/ACMServer/Library/Data/DataMediator.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Data/DataMediator.cs 2008-09-30 18:19:23 UTC (rev 399) +++ ACMServer/trunk/ACMServer/Library/Data/DataMediator.cs 2008-10-01 09:58:09 UTC (rev 400) @@ -20,6 +20,14 @@ } } + public int Count + { + get + { + return d.Count; + } + } + /// <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> Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-09-30 18:19:23 UTC (rev 399) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-10-01 09:58:09 UTC (rev 400) @@ -34,12 +34,18 @@ protected override void DataSender(SystemMessage message, int clientIndex) { - Submit submit = Submit.CreateFromXml(message.Message); - if (dataContainer.Add(submit) == true) + if (message.IsType("TestingSubmit") == true) { - OnLogMessage("Send", submit.id + " to " + clientIndex); - base.DataSender(message, clientIndex); + Submit submit = Submit.CreateFromXml(message.Message); + if (dataContainer.Add(submit) == true) + { + OnLogMessage("Send", submit.id + " to " + clientIndex); + base.DataSender(message, clientIndex); + } + return; } + + base.DataSender(message, clientIndex); } @@ -57,22 +63,24 @@ public new bool Send(SystemMessage message) { - if (message.IsType("TestingSubmitList") == false) - return false; + if (message.IsType("TestingSubmitList") == true) + { + SubmitList submitList = SubmitList.CreateFromXml(message.Message); - SubmitList submitList = SubmitList.CreateFromXml(message.Message); + GenerateLogMessageWirhIDs(submitList); - GenerateLogMessageWirhIDs(submitList); - - for (int index = 0; index < submitList.Items.Length; index++) - { - if (dataContainer.Contains(submitList.Items[index]) == false) + for (int index = 0; index < submitList.Items.Length; index++) { - SystemMessage sysMes = new SystemMessage(submitList.Items[index].ToString(), "TestingSubmit"); - pool.Send(sysMes); + if (dataContainer.Contains(submitList.Items[index]) == false) + { + SystemMessage sysMes = new SystemMessage(submitList.Items[index].ToString(), "TestingSubmit"); + pool.Send(sysMes); + } } + return true; } - return true; + + return false; } protected override void DataArriver(SystemMessage message) Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs 2008-09-30 18:19:23 UTC (rev 399) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGatePlugin.cs 2008-10-01 09:58:09 UTC (rev 400) @@ -22,11 +22,13 @@ public override void Send(SystemMessage message) { - if (message.IsType("ApplicationSystem") && message.Message == "stop") + if (message.IsType("ApplicationSystem")) { - return; + if (message.Message == "stop") + return; } - string text = message.Message.Length + " bytes" + Environment.NewLine; + + string text = message.Message.Length + " bytes"; ((WebGatePluginUserControl)base.Control).AddText("Send", text); webGate.Send(message); @@ -34,11 +36,21 @@ protected override void DataArrived(SystemMessage message) { + if (message.IsType("Empty") == true) + { + ((WebGatePluginUserControl)base.Control).AddText("SystemReceive", "0 bytes"); + return; + } + if (message.IsType("SystemResult") == true) + { + ((WebGatePluginUserControl)base.Control).AddText("SystemReceive", message.Message); + return; + } + string text = message.Message.Length + " bytes"; ((WebGatePluginUserControl)base.Control).AddText("Receive", text); + base.DataArrived(message); - if (message.IsType("Empty") == false) - base.DataArrived(message); } private void OnChecked(object o,EventArgs a) Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs 2008-09-30 18:19:23 UTC (rev 399) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/WebGatePlugin/WebGetter.cs 2008-10-01 09:58:09 UTC (rev 400) @@ -49,17 +49,14 @@ public SystemMessage GetData() { checkAddress(); - object ob = MediatorGetInfoFromSiteX(); - if (ob == null) - return new SystemMessage("", "Empty"); - SystemMessage sysMes = new SystemMessage(ob.ToString(), "TestingSubmitList"); - return sysMes; + return GetMessageFromSite();; } public void Send(SystemMessage message) { if (message.IsType("TestingResult") == true) - MediatorSendX(message.Message); + SendTestingResultToSite(message.Message); + //jaksho inakshyj typ, todi potribno bude inakshu funkciju vyklykaty } public string PathToSource @@ -76,31 +73,20 @@ #endregion - void MediatorSendX(string message) + void SendTestingResultToSite(string message) { - Result result = Result.CreateFromXml(message); - SendX(message); - container.Return(result); - } - void SendX(string message) - { string res = ""; string id = ""; string usedMemory = ""; string usedTime = ""; - try - { - //TODO: - Result result = Result.CreateFromXml(message); - res = result.res; - id = result.Submit.id.ToString(); - usedMemory = result.usedMemory.ToString(); - usedTime = result.usedTime.ToString(); - } - catch (Exception) - { - return; - } + + //TODO: + Result result = Result.CreateFromXml(message); + res = result.res; + id = result.Submit.id.ToString(); + usedMemory = result.usedMemory.ToString(); + usedTime = result.usedTime.ToString(); + string fullURL = fullPathToWebPages + "/set.php?"; fullURL += "res=" + res; fullURL += "&id=" + id; @@ -110,14 +96,31 @@ myRequest.Method = "GET"; WebResponse myResponse = myRequest.GetResponse(); myResponse.Close(); + + container.Return(result); } - string MediatorGetInfoFromSiteX() + SystemMessage GetMessageFromSite() { - string getAll = GetInfoFromSiteX(); + string getAll = GetFullInfoFromSite(); if (String.IsNullOrEmpty(getAll) == true) - return null; - SubmitList list = SubmitList.CreateFromXml(getAll); + return new SystemMessage("", "Empty"); + if (getAll.Contains("submitList") == true) + { + return CreateTestingSubmitListMessageFromText(getAll); + } + if (getAll.Contains("SystemResult") == true) + { + return new SystemMessage(getAll, "SystemResult"); + } + + //tut potribno realizuvaty vidpovidni sturktury i vyklykaty ihshyt danyh + return new SystemMessage(getAll, "UnknownContent"); + } + + SystemMessage CreateTestingSubmitListMessageFromText(string info) + { + SubmitList list = SubmitList.CreateFromXml(info); List<Submit> result = new List<Submit>(); for (int i = 0; i < list.Items.Length; i++) { @@ -130,22 +133,35 @@ } } if (result.Count == 0) - return null; + return new SystemMessage("Web checked: All submits in queue (queue size " + container.Count.ToString() + ")", "SystemResult"); SubmitList resultList = new SubmitList(); resultList.Items = result.ToArray(); - return resultList.ToString(); + return new SystemMessage(resultList.ToString(), "TestingSubmitList"); } - string GetInfoFromSiteX() + + string GetFullInfoFromSite() { - HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(fullPathToWebPages + "/get.php"); - myRequest.Method = "GET"; - WebResponse myResponse = myRequest.GetResponse(); - StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8); - string result = sr.ReadToEnd(); - sr.Close(); - myResponse.Close(); - if (result.Length == 0) - return null; + string result = null; + try + { + HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(fullPathToWebPages + "/get.php"); + myRequest.Method = "GET"; + //myRequest.Timeout = 100000; + WebResponse myResponse = myRequest.GetResponse(); + StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8); + result = sr.ReadToEnd(); + sr.Close(); + myResponse.Close(); + if (result.Length == 0) + return null; + } + catch (WebException wex) + { + if (wex.Status == WebExceptionStatus.Timeout) + { + return "SystemResult: Timeout"; + } + } return result; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-10-04 23:21:19
|
Revision: 404 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=404&view=rev Author: brus07 Date: 2008-10-04 23:18:38 +0000 (Sat, 04 Oct 2008) Log Message: ----------- Refactoring in using SystemMessageType. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs Modified: ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-10-03 14:16:07 UTC (rev 403) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-10-04 23:18:38 UTC (rev 404) @@ -67,8 +67,11 @@ private void DataArrived(object Data, SocketStream DataSender) { SystemMessage sysMes = SystemMessage.Deserialize((byte[])Data); - if (SystemMessageX(sysMes) == true) - return; + if (sysMes.IsType("SystemTestBusyMessage") == true) + { + if (SystemMessageX(sysMes) == true) + return; + } DataArriver(sysMes); } protected virtual void DataArriver(SystemMessage message) @@ -121,7 +124,7 @@ string message = "test"; message += " " + server.ClientsList[i].GetHashCode().ToString(); message += " " + curHashCode; - SystemMessage mes = new SystemMessage(message); + SystemMessage mes = new SystemMessage(message, "SystemTestBusyMessage"); ServerSend(mes, i); } } Modified: ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-10-03 14:16:07 UTC (rev 403) +++ ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-10-04 23:18:38 UTC (rev 404) @@ -21,12 +21,19 @@ void SocketClientGate_onDataArrived(SystemMessage message) { - if (SystemMessageX(message) == true) - return; + if (message.IsType("SystemTestBusyMessage") == true) + { + if (SystemMessageX(message) == true) + return; + } OnAddLogText("Receive", message.Message); //OnDataArrived(message); descriptionMessage = message.Description; - AddWork(message.Message); + + if (message.IsType("TestingSubmit") == true) + { + AddWork(message.Message); + } } public new void Disconnect() @@ -69,7 +76,7 @@ result += " " + mes[i]; } OnAddLogText("SystemSend", result); - base.Send(new SystemMessage(result)); + base.Send(new SystemMessage(result, _message.Type, _message.Description)); return true; } return false; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-10-07 16:01:45
|
Revision: 409 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=409&view=rev Author: brus07 Date: 2008-10-07 16:01:38 +0000 (Tue, 07 Oct 2008) Log Message: ----------- Added new class architecture for Connector module. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs ACMServer/trunk/ACMServer/Tester/Form1.cs ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs ACMServer/trunk/ACMServer/Tester/Tester.csproj Added Paths: ----------- ACMServer/trunk/ACMServer/Library/Connector/AbstractConnector.cs ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs ACMServer/trunk/ACMServer/Tester/Library/WorkRunner.cs Added: ACMServer/trunk/ACMServer/Library/Connector/AbstractConnector.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/AbstractConnector.cs (rev 0) +++ ACMServer/trunk/ACMServer/Library/Connector/AbstractConnector.cs 2008-10-07 16:01:38 UTC (rev 409) @@ -0,0 +1,20 @@ +using System; +using AcmContester.Library.LibraryExtention; + +namespace AcmContester.Library.Connector +{ + public abstract class AbstractConnector + { + public delegate void DataArrivedDelegate(SystemMessage message); + public event DataArrivedDelegate onDataArrived; + + protected void OnDataArrived(SystemMessage message) + { + DataArrivedDelegate tempEvent = onDataArrived; + if (tempEvent != null) + tempEvent(message); + } + + public abstract bool Send(SystemMessage message); + } +} Modified: ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-10-07 15:08:49 UTC (rev 408) +++ ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-10-07 16:01:38 UTC (rev 409) @@ -38,9 +38,11 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> + <Compile Include="AbstractConnector.cs" /> <Compile Include="Getter\IGetter.cs" /> <Compile Include="Getter\WebGetterOld.cs" /> <Compile Include="SocketClient.cs" /> + <Compile Include="SocketClientTask.cs" /> <Compile Include="SocketServer.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="WebConnector.cs" /> Modified: ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs 2008-10-07 15:08:49 UTC (rev 408) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs 2008-10-07 16:01:38 UTC (rev 409) @@ -4,13 +4,10 @@ namespace AcmContester.Library.Connector { - public class SocketClient + public class SocketClient: AbstractConnector { EasyClient client; - public delegate void DataArrivedDelegate(SystemMessage s); - public event DataArrivedDelegate onDataArrived; - string ip = "127.0.0.1"; int port = 4120; @@ -40,10 +37,11 @@ client.Dispose(); client = null; } - public void Send(SystemMessage message) + public override bool Send(SystemMessage message) { byte[] bytes = SystemMessage.Serialize(message); client.SendData(bytes); + return true; } private void DataArrived(object Data) @@ -51,19 +49,12 @@ SystemMessage mes = SystemMessage.Deserialize((byte[])Data); OnDataArrived(mes); } + public bool IsConnected() { if (client == null) return false; return client.IsConnected; } - - private void OnDataArrived(SystemMessage message) - { - if (onDataArrived != null) - { - onDataArrived(message); - } - } } } Added: ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs (rev 0) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs 2008-10-07 16:01:38 UTC (rev 409) @@ -0,0 +1,37 @@ +using System; +using AcmContester.Library.LibraryExtention; + +namespace AcmContester.Library.Connector +{ + public class SocketClientTask: AbstractConnector + { + SocketClient client; + + public SocketClientTask(string IP) + { + client = new SocketClient(IP); + client.onDataArrived += base.OnDataArrived; + } + + public override bool Send(SystemMessage message) + { + return client.Send(message); + } + + public void Connect() + { + client.Connect(); + } + + public void Disconnect() + { + if (client.IsConnected() == true) + client.Disconnect(); + } + + public bool IsConnected() + { + return client.IsConnected(); + } + } +} Modified: ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-10-07 15:08:49 UTC (rev 408) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-10-07 16:01:38 UTC (rev 409) @@ -5,7 +5,7 @@ namespace AcmContester.Library.Connector { - public class SocketServer + public class SocketServer: AbstractConnector { int port = 4120; EasyServer server; @@ -16,8 +16,6 @@ //unknown - nevidomyj Dictionary<int, string> cleintStatus = new Dictionary<int, string>(); - public delegate void DataArrivedDelegate(SystemMessage s); - public event DataArrivedDelegate onDataArrived; public SocketServer() { @@ -46,7 +44,7 @@ byte[] bytes = SystemMessage.Serialize(mes); server.SendData(bytes, TargetClientIndex); } - public bool Send(SystemMessage message) + public override bool Send(SystemMessage message) { List<int> freeTesters = GetFreeTesters(); if (freeTesters.Count != 0) @@ -79,13 +77,6 @@ cleintStatus[Int32.Parse(message.Description)] = "free"; OnDataArrived(message); } - private void OnDataArrived(SystemMessage message) - { - if (onDataArrived != null) - { - onDataArrived(message); - } - } public int CountClients() { Modified: ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs 2008-10-07 15:08:49 UTC (rev 408) +++ ACMServer/trunk/ACMServer/Library/Connector/WebConnector.cs 2008-10-07 16:01:38 UTC (rev 409) @@ -5,13 +5,10 @@ namespace AcmContester.Library.Connector { - public class WebConnector + public class WebConnector: AbstractConnector { Timer timer = new Timer(); - public delegate void DataArrivedDelegate(SystemMessage s); - public event DataArrivedDelegate onDataArrived; - public event EventHandler onChecking; public event EventHandler onChecked; @@ -60,7 +57,7 @@ OnChecking(); SystemMessage message = getter.GetData(); OnChecked(); - DataArrived(message); + OnDataArrived(message); timer.Enabled = true; } @@ -75,17 +72,10 @@ onChecked(this, null); } - private void DataArrived(SystemMessage Data) + public override bool Send(SystemMessage message) { - if (onDataArrived != null) - { - onDataArrived(Data); - } - } - - public void Send(SystemMessage message) - { getter.Send(message); + return true; } protected void SetTimerInterval(int valueOfSeconds) Modified: ACMServer/trunk/ACMServer/Tester/Form1.cs =================================================================== --- ACMServer/trunk/ACMServer/Tester/Form1.cs 2008-10-07 15:08:49 UTC (rev 408) +++ ACMServer/trunk/ACMServer/Tester/Form1.cs 2008-10-07 16:01:38 UTC (rev 409) @@ -49,7 +49,6 @@ { socket = new SocketClientGate(textBox3.Text); socket.onAddLogText += AddText; - //socket.onDataArrived += DataArrived; } socket.Connect(); } @@ -63,8 +62,7 @@ { if (socket != null) { - if (socket.IsConnected() == true) - socket.Disconnect(); + socket.Disconnect(); socket = null; } } Modified: ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-10-07 15:08:49 UTC (rev 408) +++ ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-10-07 16:01:38 UTC (rev 409) @@ -6,17 +6,18 @@ namespace AcmContester.Tester.Library { - class SocketClientGate: SocketClient + class SocketClientGate: SocketClientTask { private string descriptionMessage = ""; - public new delegate void DataArrivedDelegate(SystemMessage s); - public new event DataArrivedDelegate onDataArrived; + //TODO: tut vin tymchasovo, potribno bude perenesty jogo kudys dali + private WorkRunner workRunner = new WorkRunner(); public SocketClientGate(string IP) : base(IP) { base.onDataArrived +=new SocketClient.DataArrivedDelegate(SocketClientGate_onDataArrived); + workRunner.onDataArrived += Send; } void SocketClientGate_onDataArrived(SystemMessage message) @@ -27,32 +28,22 @@ return; } OnAddLogText("Receive", message.Message); - //OnDataArrived(message); + descriptionMessage = message.Description; if (message.IsType("TestingSubmit") == true) { - AddWork(message.Message); + workRunner.AddWork(message.Message); } } public new void Disconnect() { - if (thread != null) - thread.Abort(); + workRunner.Stop(); base.Disconnect(); } - private void OnDataArrived(SystemMessage message) - { - if (onDataArrived != null) - { - onDataArrived(message); - } - } - - private bool SystemMessageX(SystemMessage _message) { string message = _message.Message; @@ -63,7 +54,7 @@ { OnAddLogText("SystemReceive", message); string result = ""; - if (IsBusy() == true) + if (workRunner.IsBusy() == true) { result = "busy"; } @@ -82,87 +73,17 @@ return false; } - string source = ""; - object working = 0; - Thread thread = new Thread(new ParameterizedThreadStart(Go)); - private bool IsBusy() + public override bool Send(SystemMessage message) { - lock (working) - { - if ((int)working == 1 || (thread.ThreadState == ThreadState.Running)) - { - return true; - } - } - return false; - } + message = new SystemMessage(message); + message.Description = descriptionMessage; - private void AddWork(string message) - { - if (IsBusy() == true) - { - OnAddLogText("info", "--------- busy ---------"); - return; - } + Result res = Result.CreateFromXml(message.Message); + OnAddLogText("Send", "ID " + res.Submit.id + " result - " + res.res); - //TODO: tut potribno stavyty lock - // a znimaty vze u samomu Thread'i - // (dyv. na inshe TODO:) - lock(source) - source = message; - - //TODO: potribno jakos obnulyty status thread, - // tak shob ne potribno bulo stvorjuvaty novyj - thread = new Thread(new ParameterizedThreadStart(Go)); - thread.Start(this); + return base.Send(message); } - static void Go(object data) - { - if (data is SocketClient == false) - throw new ArgumentException(); - - SocketClientGate gate = (SocketClientGate)data; - - lock (gate.working) - gate.working = 1; - - string copySource; - //TODO: tut potribno znimaty postavlenyj lock - // toj lock postavlenyj u potoci sho vyklykav cej - lock (gate.source) - copySource = gate.source; - gate.Run(copySource); - - lock (gate.working) - gate.working = 0; - } - - void Run(string message) - { - string result; - try - { - result = Checker.Checker.GetResult(message); - } - catch (Exception ex) - { - Log log = Log.GetLog(); - log.Loging("Form1::DataArrived: Error: " + ex.Message, Log.Priority.ERR); - log.Loging("Form1::DataArrived: Error: " + ex.StackTrace, Log.Priority.ERR); - return; - } - - //TODO: ne znaju chy tut potriben lcok - lock (this) - { - Result res = Result.CreateFromXml(result); - OnAddLogText("Send", "ID " + res.Submit.id + " result - " + res.res); - this.Send(new SystemMessage(result, "TestingResult", descriptionMessage)); - } - } - - public delegate void AddLogTextDelegate(string type, string text); public event AddLogTextDelegate onAddLogText; private void OnAddLogText(string type, string text) Added: ACMServer/trunk/ACMServer/Tester/Library/WorkRunner.cs =================================================================== --- ACMServer/trunk/ACMServer/Tester/Library/WorkRunner.cs (rev 0) +++ ACMServer/trunk/ACMServer/Tester/Library/WorkRunner.cs 2008-10-07 16:01:38 UTC (rev 409) @@ -0,0 +1,105 @@ +using System; +using AcmContester.Library.LibraryExtention; +using System.Threading; +using AcmContester.Library.LibraryExtention.Data; + +namespace AcmContester.Tester.Library +{ + class WorkRunner + { + + public delegate bool DataArrivedDelegate(SystemMessage message); + public event DataArrivedDelegate onDataArrived; + + string source = ""; + object working = 0; + Thread thread = new Thread(new ParameterizedThreadStart(Go)); + + internal bool IsBusy() + { + lock (working) + { + if ((int)working == 1 || (thread.ThreadState == ThreadState.Running)) + { + return true; + } + } + return false; + } + + internal void AddWork(string message) + { + if (IsBusy() == true) + { + return; + } + + //TODO: tut potribno stavyty lock + // a znimaty vze u samomu Thread'i + // (dyv. na inshe TODO:) + lock (source) + source = message; + + //TODO: potribno jakos obnulyty status thread, + // tak shob ne potribno bulo stvorjuvaty novyj + thread = new Thread(new ParameterizedThreadStart(Go)); + thread.Start(this); + } + + static void Go(object data) + { + if (data is WorkRunner == false) + throw new ArgumentException(); + + WorkRunner gate = (WorkRunner)data; + + lock (gate.working) + gate.working = 1; + + string copySource; + //TODO: tut potribno znimaty postavlenyj lock + // toj lock postavlenyj u potoci sho vyklykav cej + lock (gate.source) + copySource = gate.source; + gate.Run(copySource); + + lock (gate.working) + gate.working = 0; + } + + void Run(string message) + { + string result; + try + { + result = Checker.Checker.GetResult(message); + } + catch (Exception ex) + { + Log log = Log.GetLog(); + log.Loging("Form1::DataArrived: Error: " + ex.Message, Log.Priority.ERR); + log.Loging("Form1::DataArrived: Error: " + ex.StackTrace, Log.Priority.ERR); + return; + } + + //TODO: ne znaju chy tut potriben lock + lock (this) + { + this.Send(new SystemMessage(result, "TestingResult")); + } + } + + private bool Send(SystemMessage systemMessage) + { + if (onDataArrived != null) + return this.onDataArrived(systemMessage); + return true; + } + + internal void Stop() + { + if (thread != null) + thread.Abort(); + } + } +} Modified: ACMServer/trunk/ACMServer/Tester/Tester.csproj =================================================================== --- ACMServer/trunk/ACMServer/Tester/Tester.csproj 2008-10-07 15:08:49 UTC (rev 408) +++ ACMServer/trunk/ACMServer/Tester/Tester.csproj 2008-10-07 16:01:38 UTC (rev 409) @@ -46,6 +46,7 @@ <Compile Include="Form1.Designer.cs"> <DependentUpon>Form1.cs</DependentUpon> </Compile> + <Compile Include="Library\WorkRunner.cs" /> <Compile Include="Program.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <EmbeddedResource Include="Form1.resx"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-10-07 21:07:38
|
Revision: 411 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=411&view=rev Author: brus07 Date: 2008-10-07 21:07:31 +0000 (Tue, 07 Oct 2008) Log Message: ----------- Continues added new class architecture for Connector module. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs Added Paths: ----------- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerTask.cs Removed Paths: ------------- ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs Modified: ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-10-07 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-10-07 21:07:31 UTC (rev 411) @@ -42,9 +42,10 @@ <Compile Include="Getter\IGetter.cs" /> <Compile Include="Getter\WebGetterOld.cs" /> <Compile Include="SocketClient.cs" /> - <Compile Include="SocketClientTask.cs" /> - <Compile Include="SocketServer.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="SocketServer.cs"> + <SubType>Code</SubType> + </Compile> <Compile Include="WebConnector.cs" /> </ItemGroup> <ItemGroup> Modified: ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs 2008-10-07 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs 2008-10-07 21:07:31 UTC (rev 411) @@ -6,20 +6,32 @@ { public class SocketClient: AbstractConnector { - EasyClient client; - string ip = "127.0.0.1"; int port = 4120; + EasyClient client; + + void init() + { + client = new EasyClient(new ServerInfo(this.ip, this.port, true)); + client.DataArrived += DataArrived; + } + public SocketClient() { + init(); } public SocketClient(string IP) { this.ip = IP; - client = new EasyClient(new ServerInfo(this.ip, this.port, true)); - client.DataArrived += DataArrived; + init(); } + public SocketClient(string IP, int Port) + { + this.ip = IP; + this.port = Port; + init(); + } public void Connect() { @@ -32,11 +44,21 @@ } public void Disconnect() { - if (client.IsConnected == true) - client.DisconnectFromServer(); - client.Dispose(); - client = null; + if (client != null) + { + if (client.IsConnected == true) + client.DisconnectFromServer(); + client.Dispose(); + client = null; + } } + public bool IsConnected() + { + if (client == null) + return false; + return client.IsConnected; + } + public override bool Send(SystemMessage message) { byte[] bytes = SystemMessage.Serialize(message); @@ -50,11 +72,5 @@ OnDataArrived(mes); } - public bool IsConnected() - { - if (client == null) - return false; - return client.IsConnected; - } } } Deleted: ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs 2008-10-07 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketClientTask.cs 2008-10-07 21:07:31 UTC (rev 411) @@ -1,37 +0,0 @@ -using System; -using AcmContester.Library.LibraryExtention; - -namespace AcmContester.Library.Connector -{ - public class SocketClientTask: AbstractConnector - { - SocketClient client; - - public SocketClientTask(string IP) - { - client = new SocketClient(IP); - client.onDataArrived += base.OnDataArrived; - } - - public override bool Send(SystemMessage message) - { - return client.Send(message); - } - - public void Connect() - { - client.Connect(); - } - - public void Disconnect() - { - if (client.IsConnected() == true) - client.Disconnect(); - } - - public bool IsConnected() - { - return client.IsConnected(); - } - } -} Deleted: ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs 2008-10-07 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs 2008-10-07 21:07:31 UTC (rev 411) @@ -1,180 +0,0 @@ -using System; -using JadBenAutho.EasySocket; -using System.Collections.Generic; -using AcmContester.Library.LibraryExtention; - -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) - { - 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/SocketServerGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-10-07 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-10-07 21:07:31 UTC (rev 411) @@ -10,7 +10,7 @@ /// <summary> /// Pattern: Singleton /// </summary> - class SocketServerGate : SocketServer + class SocketServerGate : SocketServerTask { private static SocketServerGate instance = new SocketServerGate(); Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj 2008-10-07 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj 2008-10-07 21:07:31 UTC (rev 411) @@ -28,6 +28,10 @@ <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> @@ -48,6 +52,7 @@ <Compile Include="SocketServerGatePluginUserControl.Designer.cs"> <DependentUpon>SocketServerGatePluginUserControl.cs</DependentUpon> </Compile> + <Compile Include="SocketServerTask.cs" /> <Compile Include="WorkingPool.cs" /> </ItemGroup> <ItemGroup> Copied: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerTask.cs (from rev 410, ACMServer/trunk/ACMServer/Library/Connector/SocketServerTask.cs) =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerTask.cs (rev 0) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerTask.cs 2008-10-07 21:07:31 UTC (rev 411) @@ -0,0 +1,182 @@ +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 20:32:33 UTC (rev 410) +++ ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-10-07 21:07:31 UTC (rev 411) @@ -1,22 +1,22 @@ using System; using AcmContester.Library.Connector; -using System.Threading; using AcmContester.Library.LibraryExtention; using AcmContester.Library.LibraryExtention.Data; namespace AcmContester.Tester.Library { - class SocketClientGate: SocketClientTask + class SocketClientGate: AbstractConnector { + SocketClient client; private string descriptionMessage = ""; //TODO: tut vin tymchasovo, potribno bude perenesty jogo kudys dali private WorkRunner workRunner = new WorkRunner(); public SocketClientGate(string IP) - : base(IP) { - base.onDataArrived +=new SocketClient.DataArrivedDelegate(SocketClientGate_onDataArrived); + client = new SocketClient(IP); + client.onDataArrived +=new SocketClient.DataArrivedDelegate(SocketClientGate_onDataArrived); workRunner.onDataArrived += Send; } @@ -37,11 +37,6 @@ } } - public new void Disconnect() - { - workRunner.Stop(); - base.Disconnect(); - } private bool SystemMessageX(SystemMessage _message) @@ -67,7 +62,7 @@ result += " " + mes[i]; } OnAddLogText("SystemSend", result); - base.Send(new SystemMessage(result, _message.Type, _message.Description)); + this.Send(new SystemMessage(result, _message.Type, _message.Description)); return true; } return false; @@ -78,10 +73,13 @@ message = new SystemMessage(message); message.Description = descriptionMessage; - Result res = Result.CreateFromXml(message.Message); - OnAddLogText("Send", "ID " + res.Submit.id + " result - " + res.res); + if (message.IsType("TestingResult") == true) + { + Result res = Result.CreateFromXml(message.Message); + OnAddLogText("Send", "ID " + res.Submit.id + " result - " + res.res); + } - return base.Send(message); + return client.Send(message); } public delegate void AddLogTextDelegate(string type, string text); @@ -91,5 +89,19 @@ if (onAddLogText != null) onAddLogText(type,text); } + + public void Connect() + { + client.Connect(); + } + public void Disconnect() + { + client.Disconnect(); + workRunner.Stop(); + } + public bool IsConnected() + { + return client.IsConnected(); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |
From: <br...@us...> - 2008-10-13 18:19:57
|
Revision: 415 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=415&view=rev Author: brus07 Date: 2008-10-13 18:19:46 +0000 (Mon, 13 Oct 2008) Log Message: ----------- Delete old example plugin. Modified Paths: -------------- ACMServer/trunk/ACMServer/ACMMediator.sln Removed Paths: ------------- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/Plugin1/ Modified: ACMServer/trunk/ACMServer/ACMMediator.sln =================================================================== --- ACMServer/trunk/ACMServer/ACMMediator.sln 2008-10-10 21:36:40 UTC (rev 414) +++ ACMServer/trunk/ACMServer/ACMMediator.sln 2008-10-13 18:19:46 UTC (rev 415) @@ -13,8 +13,6 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MediatorPlugins", "MediatorPlugins", "{E4F4B91E-CC25-410B-B53A-E2507EFA4FCB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Plugin1", "Plugins\MediatorPlugins\Plugin1\Plugin1.csproj", "{B75187D7-2032-44F3-AC12-20804C7229AC}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginsFramework", "Plugins\PluginsFramework\PluginsFramework.csproj", "{69FB4176-F298-4AF7-B714-B6758AA9A58E}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebGatePlugin", "Plugins\MediatorPlugins\WebGatePlugin\WebGatePlugin.csproj", "{20B192BC-FD4D-4ED5-90F5-B5994F995238}" @@ -43,10 +41,6 @@ {A8135069-F8BA-4E5D-835F-3FF3F350AA5D}.Debug|Any CPU.Build.0 = Debug|Any CPU {A8135069-F8BA-4E5D-835F-3FF3F350AA5D}.Release|Any CPU.ActiveCfg = Release|Any CPU {A8135069-F8BA-4E5D-835F-3FF3F350AA5D}.Release|Any CPU.Build.0 = Release|Any CPU - {B75187D7-2032-44F3-AC12-20804C7229AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B75187D7-2032-44F3-AC12-20804C7229AC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B75187D7-2032-44F3-AC12-20804C7229AC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B75187D7-2032-44F3-AC12-20804C7229AC}.Release|Any CPU.Build.0 = Release|Any CPU {69FB4176-F298-4AF7-B714-B6758AA9A58E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {69FB4176-F298-4AF7-B714-B6758AA9A58E}.Debug|Any CPU.Build.0 = Debug|Any CPU {69FB4176-F298-4AF7-B714-B6758AA9A58E}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -78,7 +72,6 @@ {4EB54D66-105B-4CFD-8883-CBE7CA70AFA5} = {9AC82C0B-F256-41DD-9B4A-A59EC7EB4890} {E4F4B91E-CC25-410B-B53A-E2507EFA4FCB} = {D80861F5-3751-4D49-884B-1A10FE1BCB07} {69FB4176-F298-4AF7-B714-B6758AA9A58E} = {D80861F5-3751-4D49-884B-1A10FE1BCB07} - {B75187D7-2032-44F3-AC12-20804C7229AC} = {E4F4B91E-CC25-410B-B53A-E2507EFA4FCB} {20B192BC-FD4D-4ED5-90F5-B5994F995238} = {E4F4B91E-CC25-410B-B53A-E2507EFA4FCB} {9462E3BD-67AD-4887-BF4C-8B6A25048941} = {E4F4B91E-CC25-410B-B53A-E2507EFA4FCB} EndGlobalSection This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-10-14 21:53:07
|
Revision: 417 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=417&view=rev Author: brus07 Date: 2008-10-14 21:52:59 +0000 (Tue, 14 Oct 2008) Log Message: ----------- MediatorKernel moved to PluginsFramework Modified Paths: -------------- ACMServer/trunk/ACMServer/Mediator/Form1.cs ACMServer/trunk/ACMServer/Mediator/Mediator.csproj ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsFramework.csproj ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsLoader.cs Added Paths: ----------- ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernel.cs Modified: ACMServer/trunk/ACMServer/Mediator/Form1.cs =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-10-14 20:29:04 UTC (rev 416) +++ ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-10-14 21:52:59 UTC (rev 417) @@ -9,6 +9,7 @@ using System.Net.Sockets; using System.IO; using AcmContester.Library.LibraryExtention; +using AcmContester.Plugins.PluginsFramework; namespace Mediator { @@ -22,22 +23,22 @@ textBox2.Text = s; } - AcmContester.Mediator.Library.MediatorKernel kernel; + MediatorKernel kernel; private void button2_Click(object sender, EventArgs e) { - kernel = new AcmContester.Mediator.Library.MediatorKernel(); + kernel = new MediatorKernel(); System.Threading.ThreadPool.QueueUserWorkItem(RunLoadDll); } void RunLoadDll(Object ob) { - kernel.AddControl += new EventHandler<AcmContester.Mediator.Library.MediatorKernel.ControlEventArgs>(kernel_AddControl); - kernel.LoadLists(); + kernel.AddControl += new EventHandler<AcmContester.Plugins.PluginsFramework.MediatorKernel.ControlEventArgs>(kernel_AddControl); + kernel.LoadLists("Dll_Tester", "Dll_Web"); } - delegate void AddControlCallback(object sender, AcmContester.Mediator.Library.MediatorKernel.ControlEventArgs e); - void kernel_AddControl(object sender, AcmContester.Mediator.Library.MediatorKernel.ControlEventArgs e) + delegate void AddControlCallback(object sender, AcmContester.Plugins.PluginsFramework.MediatorKernel.ControlEventArgs e); + void kernel_AddControl(object sender, AcmContester.Plugins.PluginsFramework.MediatorKernel.ControlEventArgs e) { if (this.tabControl1.InvokeRequired) { Modified: ACMServer/trunk/ACMServer/Mediator/Mediator.csproj =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Mediator.csproj 2008-10-14 20:29:04 UTC (rev 416) +++ ACMServer/trunk/ACMServer/Mediator/Mediator.csproj 2008-10-14 21:52:59 UTC (rev 417) @@ -42,7 +42,6 @@ <Compile Include="Form1.Designer.cs"> <DependentUpon>Form1.cs</DependentUpon> </Compile> - <Compile Include="Library\MediatorKernel.cs" /> <Compile Include="Program.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <EmbeddedResource Include="Form1.resx"> @@ -83,6 +82,9 @@ <Name>PluginsFramework</Name> </ProjectReference> </ItemGroup> + <ItemGroup> + <Folder Include="Library\" /> + </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. Copied: ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernel.cs (from rev 414, ACMServer/trunk/ACMServer/Mediator/Library/MediatorKernel.cs) =================================================================== --- ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernel.cs (rev 0) +++ ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernel.cs 2008-10-14 21:52:59 UTC (rev 417) @@ -0,0 +1,108 @@ +using System; +using System.Collections; +using AcmContester.Plugins.PluginsFramework; +using System.Collections.Generic; +using System.Windows.Forms; +using AcmContester.Library.LibraryExtention; + +namespace AcmContester.Plugins.PluginsFramework +{ + public class MediatorKernel + { + List<BaseMediatorPlugin> clientSideList; + List<BaseMediatorPlugin> testerSideList; + + public sealed class ControlEventArgs : EventArgs + { + Control control; + string name; + public ControlEventArgs(Control in_Control, string in_Name) + { + control = in_Control; + name = in_Name; + } + public Control Control + { + get + { + return control; + } + } + public string Name + { + get + { + return name; + } + } + + } + + public event EventHandler<ControlEventArgs> AddControl; + + public void LoadLists(string testerFolderPath, string clientFolderPath) + { + LoadAllTesterList(testerFolderPath); + LoadAllClientList(clientFolderPath); + } + + public void LoadAllTesterList(string folderPath) + { + testerSideList = PluginsLoader<BaseMediatorPlugin>.Load(folderPath); + foreach (BaseMediatorPlugin plugin in testerSideList) + { + plugin.onDataArrived += DataArrivedFromTesterList; + if (plugin.Control != null) + { + this.OnAddControl(new ControlEventArgs(plugin.Control, plugin.GetType().Name)); + } + } + } + public void LoadAllClientList(string folderPath) + { + clientSideList = PluginsLoader<BaseMediatorPlugin>.Load(folderPath); + foreach (BaseMediatorPlugin plugin in clientSideList) + { + plugin.onDataArrived += DataArrivedFromClientList; + if (plugin.Control != null) + { + this.OnAddControl(new ControlEventArgs(plugin.Control, plugin.GetType().Name)); + } + } + } + + private void OnAddControl(ControlEventArgs e) + { + EventHandler<ControlEventArgs> temp = AddControl; + if (temp != null) + temp(this, e); + } + + private void DataArrivedFromClientList(SystemMessage message) + { + if (testerSideList != null) + { + for (int index = 0; index < testerSideList.Count; index++) + { + ((BaseMediatorPlugin)testerSideList[index]).Send(message); + } + } + } + private void DataArrivedFromTesterList(SystemMessage message) + { + if (clientSideList != null) + { + for (int index = 0; index < clientSideList.Count; index++) + { + ((BaseMediatorPlugin)clientSideList[index]).Send(message); + } + } + } + + public void SendToAll(SystemMessage message) + { + DataArrivedFromClientList(message); + DataArrivedFromTesterList(message); + } + } +} Property changes on: ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernel.cs ___________________________________________________________________ Added: svn:mergeinfo + Modified: ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsFramework.csproj =================================================================== --- ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsFramework.csproj 2008-10-14 20:29:04 UTC (rev 416) +++ ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsFramework.csproj 2008-10-14 21:52:59 UTC (rev 417) @@ -33,6 +33,7 @@ </ItemGroup> <ItemGroup> <Compile Include="BaseMediatorPlugin.cs" /> + <Compile Include="MediatorKernel.cs" /> <Compile Include="PluginsLoader.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> Modified: ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsLoader.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsLoader.cs 2008-10-14 20:29:04 UTC (rev 416) +++ ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsLoader.cs 2008-10-14 21:52:59 UTC (rev 417) @@ -43,7 +43,11 @@ ///\xE3\xE5\xED\xE5\xF0\xF3\xBA\xF2\xFC\xF1\xFF \xEF\xEE\xF2\xF0\xB3\xE1\xED\xE8\xE9 \xF8\xEB\xFF\xF5 \xE4\xEE dll \xF3 \xE4\xE8\xF0\xE5\xEA\xF2\xEE\xF0\xB3\xBF directory string fileName = directory.Substring(directory.LastIndexOf('\\')+1) + ".dll"; string fileFullName = directory + "\\" + fileName; - ScanAndLoad(fileFullName, ref plugins); + List<T> lst = ScanAndLoad(fileFullName); + foreach(T t in lst) + { + plugins.Add(t); + } } return plugins; } @@ -54,11 +58,12 @@ /// </summary> /// <param name="filename">Which file to scan.</param> /// <param name="lst">Where to add found objects.</param> - private static void ScanAndLoad(string filename, ref List<T> lst) + public static List<T> ScanAndLoad(string filename) { + List<T> lst = new List<T>(); if (File.Exists(filename) == false) { - return; + return lst; } Assembly assembly; @@ -68,7 +73,7 @@ } catch { - return; + return lst; } if (assembly != null) { @@ -99,6 +104,7 @@ } } } + return lst; } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-10-14 22:35:26
|
Revision: 418 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=418&view=rev Author: brus07 Date: 2008-10-14 22:35:16 +0000 (Tue, 14 Oct 2008) Log Message: ----------- Added folder structure for TesterPlugins. Modified Paths: -------------- ACMServer/trunk/ACMServer/ACMTester.sln Added Paths: ----------- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/ Modified: ACMServer/trunk/ACMServer/ACMTester.sln =================================================================== --- ACMServer/trunk/ACMServer/ACMTester.sln 2008-10-14 21:52:59 UTC (rev 417) +++ ACMServer/trunk/ACMServer/ACMTester.sln 2008-10-14 22:35:16 UTC (rev 418) @@ -13,6 +13,12 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Data", "Library\Data\Data.csproj", "{30C0EFA3-36A8-4C6F-8FEC-28F771D4933F}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{99406CE6-D303-4383-A33D-948E1BBE2537}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginsFramework", "Plugins\PluginsFramework\PluginsFramework.csproj", "{69FB4176-F298-4AF7-B714-B6758AA9A58E}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TesterPlugins", "TesterPlugins", "{9A3BBF7F-8FCA-4AA1-8531-6DE6EFEB2F4D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -39,6 +45,10 @@ {30C0EFA3-36A8-4C6F-8FEC-28F771D4933F}.Debug|Any CPU.Build.0 = Debug|Any CPU {30C0EFA3-36A8-4C6F-8FEC-28F771D4933F}.Release|Any CPU.ActiveCfg = Release|Any CPU {30C0EFA3-36A8-4C6F-8FEC-28F771D4933F}.Release|Any CPU.Build.0 = Release|Any CPU + {69FB4176-F298-4AF7-B714-B6758AA9A58E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {69FB4176-F298-4AF7-B714-B6758AA9A58E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {69FB4176-F298-4AF7-B714-B6758AA9A58E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {69FB4176-F298-4AF7-B714-B6758AA9A58E}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -47,5 +57,7 @@ {211DD6A5-2D73-439E-8722-ED2C89ED1DDB} = {72651BCE-2999-49F0-8B33-4F6E4EE824D0} {A8135069-F8BA-4E5D-835F-3FF3F350AA5D} = {72651BCE-2999-49F0-8B33-4F6E4EE824D0} {30C0EFA3-36A8-4C6F-8FEC-28F771D4933F} = {72651BCE-2999-49F0-8B33-4F6E4EE824D0} + {69FB4176-F298-4AF7-B714-B6758AA9A58E} = {99406CE6-D303-4383-A33D-948E1BBE2537} + {9A3BBF7F-8FCA-4AA1-8531-6DE6EFEB2F4D} = {99406CE6-D303-4383-A33D-948E1BBE2537} EndGlobalSection EndGlobal Property changes on: ACMServer/trunk/ACMServer/Plugins/TesterPlugins ___________________________________________________________________ Added: tsvn:logminsize + 5 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-10-21 07:44:11
|
Revision: 419 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=419&view=rev Author: brus07 Date: 2008-10-21 07:44:02 +0000 (Tue, 21 Oct 2008) Log Message: ----------- Added to PluginsFramework UserControl for work with plugins in all application equally (one app, one MediatorKernelGUI, one MediatorKernel, one Config, many Plugins). Modified Paths: -------------- ACMServer/trunk/ACMServer/Mediator/Form1.Designer.cs ACMServer/trunk/ACMServer/Mediator/Form1.cs ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsFramework.csproj Added Paths: ----------- ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernelGUI.Designer.cs ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernelGUI.cs ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernelGUI.resx Modified: ACMServer/trunk/ACMServer/Mediator/Form1.Designer.cs =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Form1.Designer.cs 2008-10-14 22:35:16 UTC (rev 418) +++ ACMServer/trunk/ACMServer/Mediator/Form1.Designer.cs 2008-10-21 07:44:02 UTC (rev 419) @@ -33,11 +33,7 @@ this.button3 = new System.Windows.Forms.Button(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.textBox2 = new System.Windows.Forms.TextBox(); - this.textBox3 = new System.Windows.Forms.TextBox(); - this.tabControl1 = new System.Windows.Forms.TabControl(); - this.tabPage1 = new System.Windows.Forms.TabPage(); - this.tabControl1.SuspendLayout(); - this.tabPage1.SuspendLayout(); + this.panel1 = new System.Windows.Forms.Panel(); this.SuspendLayout(); // // button2 @@ -87,57 +83,31 @@ this.textBox2.Size = new System.Drawing.Size(110, 20); this.textBox2.TabIndex = 11; // - // textBox3 + // panel1 // - this.textBox3.Dock = System.Windows.Forms.DockStyle.Fill; - this.textBox3.Location = new System.Drawing.Point(3, 3); - this.textBox3.Multiline = true; - this.textBox3.Name = "textBox3"; - this.textBox3.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.textBox3.Size = new System.Drawing.Size(343, 190); - this.textBox3.TabIndex = 12; - // - // tabControl1 - // - this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.tabControl1.Controls.Add(this.tabPage1); - this.tabControl1.Location = new System.Drawing.Point(12, 70); - this.tabControl1.Name = "tabControl1"; - this.tabControl1.SelectedIndex = 0; - this.tabControl1.Size = new System.Drawing.Size(357, 222); - this.tabControl1.TabIndex = 13; + this.panel1.Location = new System.Drawing.Point(12, 70); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(357, 222); + this.panel1.TabIndex = 12; // - // tabPage1 - // - this.tabPage1.Controls.Add(this.textBox3); - this.tabPage1.Location = new System.Drawing.Point(4, 22); - this.tabPage1.Name = "tabPage1"; - this.tabPage1.Padding = new System.Windows.Forms.Padding(3); - this.tabPage1.Size = new System.Drawing.Size(349, 196); - this.tabPage1.TabIndex = 0; - this.tabPage1.Text = "Main"; - this.tabPage1.UseVisualStyleBackColor = true; - // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(369, 317); - this.Controls.Add(this.tabControl1); this.Controls.Add(this.textBox2); this.Controls.Add(this.statusStrip1); this.Controls.Add(this.button3); this.Controls.Add(this.label1); this.Controls.Add(this.button2); + this.Controls.Add(this.panel1); this.Name = "Form1"; this.Text = "Gate"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); this.Load += new System.EventHandler(this.Form1_Load); - this.tabControl1.ResumeLayout(false); - this.tabPage1.ResumeLayout(false); - this.tabPage1.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -150,9 +120,7 @@ private System.Windows.Forms.Button button3; private System.Windows.Forms.StatusStrip statusStrip1; private System.Windows.Forms.TextBox textBox2; - private System.Windows.Forms.TextBox textBox3; - private System.Windows.Forms.TabControl tabControl1; - private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.Panel panel1; } } Modified: ACMServer/trunk/ACMServer/Mediator/Form1.cs =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-10-14 22:35:16 UTC (rev 418) +++ ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-10-21 07:44:02 UTC (rev 419) @@ -15,6 +15,7 @@ { public partial class Form1 : Form { + MediatorKernelGUI kernel; public Form1() { @@ -23,56 +24,14 @@ textBox2.Text = s; } - MediatorKernel kernel; private void button2_Click(object sender, EventArgs e) { - kernel = new MediatorKernel(); - System.Threading.ThreadPool.QueueUserWorkItem(RunLoadDll); + kernel = new MediatorKernelGUI("Dll_Tester", "Dll_Web"); + kernel.Dock = DockStyle.Fill; + this.panel1.Controls.Add(kernel); } - void RunLoadDll(Object ob) - { - kernel.AddControl += new EventHandler<AcmContester.Plugins.PluginsFramework.MediatorKernel.ControlEventArgs>(kernel_AddControl); - kernel.LoadLists("Dll_Tester", "Dll_Web"); - } - - delegate void AddControlCallback(object sender, AcmContester.Plugins.PluginsFramework.MediatorKernel.ControlEventArgs e); - void kernel_AddControl(object sender, AcmContester.Plugins.PluginsFramework.MediatorKernel.ControlEventArgs e) - { - if (this.tabControl1.InvokeRequired) - { - AddControlCallback d = new AddControlCallback(kernel_AddControl); - this.Invoke(d, new object[] { sender, e }); - } - else - { - Control control = e.Control; - control.Dock = DockStyle.Fill; - string name = e.Name; - TabPage page = new TabPage(name); - page.Controls.Add(control); - tabControl1.TabPages.Add(page); - } - } - - delegate void UpdateTextLogCallback(string message, TextBox textBox); - private void UpdateTextLog(string message, TextBox textBox) - { - if (textBox.InvokeRequired) - { - UpdateTextLogCallback d = new UpdateTextLogCallback(UpdateTextLog); - this.Invoke(d, new object[] { message }); - } - else - { - textBox.Text += message; - textBox.Select(textBox3.Text.Length, 0); - textBox.ScrollToCaret(); - } - - } - private void button3_Click(object sender, EventArgs e) { Disconnnect(); Added: ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernelGUI.Designer.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernelGUI.Designer.cs (rev 0) +++ ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernelGUI.Designer.cs 2008-10-21 07:44:02 UTC (rev 419) @@ -0,0 +1,58 @@ +namespace AcmContester.Plugins.PluginsFramework +{ + partial class MediatorKernelGUI + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.SuspendLayout(); + // + // tabControl1 + // + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(0, 0); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(359, 282); + this.tabControl1.TabIndex = 0; + // + // MediatorKernelGUI + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.tabControl1); + this.Name = "MediatorKernelGUI"; + this.Size = new System.Drawing.Size(359, 282); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TabControl tabControl1; + } +} Added: ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernelGUI.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernelGUI.cs (rev 0) +++ ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernelGUI.cs 2008-10-21 07:44:02 UTC (rev 419) @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Text; +using System.Windows.Forms; +using AcmContester.Plugins.PluginsFramework; +using AcmContester.Library.LibraryExtention; + +namespace AcmContester.Plugins.PluginsFramework +{ + public partial class MediatorKernelGUI : UserControl + { + MediatorKernel mediator = new MediatorKernel(); + + private MediatorKernelGUI() + { + InitializeComponent(); + } + + public MediatorKernelGUI(string testerFolderPath, string clientFolderPath) + { + InitializeComponent(); + LoadLists(testerFolderPath, clientFolderPath); + } + + private void LoadLists(string testerFolderPath, string clientFolderPath) + { + List<string> list = new List<string>(); + list.Add(testerFolderPath); + list.Add(clientFolderPath); + System.Threading.ThreadPool.QueueUserWorkItem(RunLoadDll,list); + } + + private void RunLoadDll(Object ob) + { + if (ob is List<string> == false) + throw new ArgumentException(); + List<string> list = (List<string>)ob; + if (list.Count != 2) + throw new ArgumentException(); + string testerFolderPath = list[0]; + string clientFolderPath = list[1]; + + mediator.AddControl += new EventHandler<MediatorKernel.ControlEventArgs>(mediator_AddControl); + mediator.LoadLists(testerFolderPath, clientFolderPath); + } + + private delegate void AddControlCallback(object sender, MediatorKernel.ControlEventArgs e); + private void mediator_AddControl(object sender, MediatorKernel.ControlEventArgs e) + { + if (this.tabControl1.InvokeRequired) + { + AddControlCallback d = new AddControlCallback(mediator_AddControl); + this.Invoke(d, new object[] { sender, e }); + } + else + { + Control control = e.Control; + control.Dock = DockStyle.Fill; + string name = e.Name; + TabPage page = new TabPage(name); + page.Controls.Add(control); + tabControl1.TabPages.Add(page); + } + } + + public void SendToAll(SystemMessage message) + { + mediator.SendToAll(message); + } + } +} Added: ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernelGUI.resx =================================================================== --- ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernelGUI.resx (rev 0) +++ ACMServer/trunk/ACMServer/Plugins/PluginsFramework/MediatorKernelGUI.resx 2008-10-21 07:44:02 UTC (rev 419) @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file Modified: ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsFramework.csproj =================================================================== --- ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsFramework.csproj 2008-10-14 22:35:16 UTC (rev 418) +++ ACMServer/trunk/ACMServer/Plugins/PluginsFramework/PluginsFramework.csproj 2008-10-21 07:44:02 UTC (rev 419) @@ -29,11 +29,20 @@ </PropertyGroup> <ItemGroup> <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> <Compile Include="BaseMediatorPlugin.cs" /> <Compile Include="MediatorKernel.cs" /> + <Compile Include="MediatorKernelGUI.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="MediatorKernelGUI.Designer.cs"> + <DependentUpon>MediatorKernelGUI.cs</DependentUpon> + </Compile> <Compile Include="PluginsLoader.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> @@ -43,6 +52,12 @@ <Name>LibraryExtention</Name> </ProjectReference> </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="MediatorKernelGUI.resx"> + <SubType>Designer</SubType> + <DependentUpon>MediatorKernelGUI.cs</DependentUpon> + </EmbeddedResource> + </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. |
From: <br...@us...> - 2008-10-22 11:58:37
|
Revision: 420 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=420&view=rev Author: brus07 Date: 2008-10-22 11:58:24 +0000 (Wed, 22 Oct 2008) Log Message: ----------- Added TestRunnerPlugin. In this plugin using Tester for test source. But now using old version of testing module. Modified Paths: -------------- ACMServer/trunk/ACMServer/ACMMediator.sln Added Paths: ----------- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/ ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/Properties/ ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/Properties/AssemblyInfo.cs ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.cs ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.csproj ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/WorkRunner.cs Modified: ACMServer/trunk/ACMServer/ACMMediator.sln =================================================================== --- ACMServer/trunk/ACMServer/ACMMediator.sln 2008-10-21 07:44:02 UTC (rev 419) +++ ACMServer/trunk/ACMServer/ACMMediator.sln 2008-10-22 11:58:24 UTC (rev 420) @@ -23,6 +23,12 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "testData", "Library\testData\testData.csproj", "{4EB54D66-105B-4CFD-8883-CBE7CA70AFA5}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TesterPlugins", "TesterPlugins", "{D67E1C70-DFE6-4C3E-BCA9-DD3DB9CB4B30}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestRunnerPlugin", "Plugins\TesterPlugins\TestRunnerPlugin\TestRunnerPlugin.csproj", "{8F305004-8FB7-4F85-8063-3A7041DB840F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Runner", "Runner\Runner.csproj", "{052D9F77-17AF-42F3-BFBF-975A19383496}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -61,6 +67,14 @@ {4EB54D66-105B-4CFD-8883-CBE7CA70AFA5}.Debug|Any CPU.Build.0 = Debug|Any CPU {4EB54D66-105B-4CFD-8883-CBE7CA70AFA5}.Release|Any CPU.ActiveCfg = Release|Any CPU {4EB54D66-105B-4CFD-8883-CBE7CA70AFA5}.Release|Any CPU.Build.0 = Release|Any CPU + {8F305004-8FB7-4F85-8063-3A7041DB840F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8F305004-8FB7-4F85-8063-3A7041DB840F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8F305004-8FB7-4F85-8063-3A7041DB840F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8F305004-8FB7-4F85-8063-3A7041DB840F}.Release|Any CPU.Build.0 = Release|Any CPU + {052D9F77-17AF-42F3-BFBF-975A19383496}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {052D9F77-17AF-42F3-BFBF-975A19383496}.Debug|Any CPU.Build.0 = Debug|Any CPU + {052D9F77-17AF-42F3-BFBF-975A19383496}.Release|Any CPU.ActiveCfg = Release|Any CPU + {052D9F77-17AF-42F3-BFBF-975A19383496}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -72,7 +86,9 @@ {4EB54D66-105B-4CFD-8883-CBE7CA70AFA5} = {9AC82C0B-F256-41DD-9B4A-A59EC7EB4890} {E4F4B91E-CC25-410B-B53A-E2507EFA4FCB} = {D80861F5-3751-4D49-884B-1A10FE1BCB07} {69FB4176-F298-4AF7-B714-B6758AA9A58E} = {D80861F5-3751-4D49-884B-1A10FE1BCB07} + {D67E1C70-DFE6-4C3E-BCA9-DD3DB9CB4B30} = {D80861F5-3751-4D49-884B-1A10FE1BCB07} {20B192BC-FD4D-4ED5-90F5-B5994F995238} = {E4F4B91E-CC25-410B-B53A-E2507EFA4FCB} {9462E3BD-67AD-4887-BF4C-8B6A25048941} = {E4F4B91E-CC25-410B-B53A-E2507EFA4FCB} + {8F305004-8FB7-4F85-8063-3A7041DB840F} = {D67E1C70-DFE6-4C3E-BCA9-DD3DB9CB4B30} EndGlobalSection EndGlobal Property changes on: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin ___________________________________________________________________ Added: svn:ignore + bin obj Added: tsvn:logminsize + 5 Property changes on: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/Properties ___________________________________________________________________ Added: tsvn:logminsize + 5 Added: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/Properties/AssemblyInfo.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/Properties/AssemblyInfo.cs (rev 0) +++ ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/Properties/AssemblyInfo.cs 2008-10-22 11:58:24 UTC (rev 420) @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("TestRunnerPlugin")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Home")] +[assembly: AssemblyProduct("TestRunnerPlugin")] +[assembly: AssemblyCopyright("Copyright © Home 2008")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("7defcb4b-5ef7-4f12-97e0-03dcdaccbb09")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyFileVersion("1.0.0.0")] Added: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.cs (rev 0) +++ ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.cs 2008-10-22 11:58:24 UTC (rev 420) @@ -0,0 +1,46 @@ +using System; +using AcmContester.Plugins.PluginsFramework; +using AcmContester.Library.LibraryExtention; +using AcmContester.Library.LibraryExtention.Data; + +namespace AcmContester.Plugins.MediatorPlugins.TestRunnerPlugin +{ + public class TestRunnerPlugin: BaseMediatorPlugin + { + WorkRunner runner = new WorkRunner(); + public TestRunnerPlugin() + { + runner.onDataArrived += new WorkRunner.DataArrivedDelegate(runner_onDataArrived); + } + + private bool runner_onDataArrived(SystemMessage message) + { + base.DataArrived(message); + return true; + } + + public override void Send(SystemMessage message) + { + if (message.IsType("ApplicationSystem") && message.Message == "stop") + { + runner.Stop(); + return; + } + + if (message.IsType("TestingSubmit") == true) + runner.AddWork(message.Message); + if (message.IsType("TestingSubmitList") == true) + { + SubmitList list = SubmitList.CreateFromXml(message.Message); + for (int i = 0; i < list.Items.Length; i++) + { + while (runner.IsBusy() == true) + System.Threading.Thread.Sleep(50); + runner.AddWork(list.Items[i].ToString()); + } + + } + } + + } +} Added: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.csproj =================================================================== --- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.csproj (rev 0) +++ ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.csproj 2008-10-22 11:58:24 UTC (rev 420) @@ -0,0 +1,66 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.50727</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{8F305004-8FB7-4F85-8063-3A7041DB840F}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>TestRunnerPlugin</RootNamespace> + <AssemblyName>TestRunnerPlugin</AssemblyName> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="TestRunnerPlugin.cs" /> + <Compile Include="WorkRunner.cs" /> + </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> + </ProjectReference> + <ProjectReference Include="..\..\..\Runner\Runner.csproj"> + <Project>{052D9F77-17AF-42F3-BFBF-975A19383496}</Project> + <Name>Runner</Name> + </ProjectReference> + <ProjectReference Include="..\..\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. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file Copied: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/WorkRunner.cs (from rev 418, ACMServer/trunk/ACMServer/Tester/Library/WorkRunner.cs) =================================================================== --- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/WorkRunner.cs (rev 0) +++ ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/WorkRunner.cs 2008-10-22 11:58:24 UTC (rev 420) @@ -0,0 +1,105 @@ +using System; +using System.Threading; +using AcmContester.Library.LibraryExtention; + +namespace AcmContester.Plugins.MediatorPlugins.TestRunnerPlugin +{ + class WorkRunner + { + + public delegate bool DataArrivedDelegate(SystemMessage message); + public event DataArrivedDelegate onDataArrived; + + string source = ""; + object working = 0; + Thread thread = new Thread(new ParameterizedThreadStart(Go)); + + internal bool IsBusy() + { + lock (working) + { + if ((int)working == 1 || (thread.ThreadState == ThreadState.Running)) + { + return true; + } + } + return false; + } + + internal bool AddWork(string message) + { + if (IsBusy() == true) + { + return false; + } + + //TODO: tut potribno stavyty lock + // a znimaty vze u samomu Thread'i + // (dyv. na inshe TODO:) + lock (source) + source = message; + + //TODO: potribno jakos obnulyty status thread, + // tak shob ne potribno bulo stvorjuvaty novyj + thread = new Thread(new ParameterizedThreadStart(Go)); + thread.Start(this); + return true; + } + + static void Go(object data) + { + if (data is WorkRunner == false) + throw new ArgumentException(); + + WorkRunner gate = (WorkRunner)data; + + lock (gate.working) + gate.working = 1; + + string copySource; + //TODO: tut potribno znimaty postavlenyj lock + // toj lock postavlenyj u potoci sho vyklykav cej + lock (gate.source) + copySource = gate.source; + gate.Run(copySource); + + lock (gate.working) + gate.working = 0; + } + + void Run(string message) + { + string result; + try + { + result = Checker.Checker.GetResult(message); + } + catch (Exception ex) + { + Log log = Log.GetLog(); + log.Loging("Form1::DataArrived: Error: " + ex.Message, Log.Priority.ERR); + log.Loging("Form1::DataArrived: Error: " + ex.StackTrace, Log.Priority.ERR); + return; + } + + //TODO: ne znaju chy tut potriben lock + lock (this) + { + this.Send(new SystemMessage(result, "TestingResult")); + } + } + + private bool Send(SystemMessage systemMessage) + { + if (onDataArrived != null) + return this.onDataArrived(systemMessage); + return true; + } + + internal void Stop() + { + if (thread != null) + thread.Abort(); + } + } +} Property changes on: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/WorkRunner.cs ___________________________________________________________________ Added: svn:mergeinfo + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-10-31 21:47:45
|
Revision: 425 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=425&view=rev Author: brus07 Date: 2008-10-31 21:47:35 +0000 (Fri, 31 Oct 2008) Log Message: ----------- Added Configuration class. Get address to plugins from initialization files (INI). Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/LibraryExtention/LibraryExtention.csproj ACMServer/trunk/ACMServer/Mediator/Form1.cs ACMServer/trunk/ACMServer/Mediator/Mediator.csproj ACMServer/trunk/ACMServer/Mediator/Program.cs Added Paths: ----------- ACMServer/trunk/ACMServer/Library/LibraryExtention/Configuration.cs ACMServer/trunk/ACMServer/Mediator/Config.ini ACMServer/trunk/ACMServer/Mediator/TesterConfig.ini Added: ACMServer/trunk/ACMServer/Library/LibraryExtention/Configuration.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/LibraryExtention/Configuration.cs (rev 0) +++ ACMServer/trunk/ACMServer/Library/LibraryExtention/Configuration.cs 2008-10-31 21:47:35 UTC (rev 425) @@ -0,0 +1,58 @@ +using System; + +namespace AcmContester.Library.LibraryExtention +{ + public static class Configuration + { + public static string ExecutablePath; + + static readonly string defaultConfigFileName = "config.ini"; + static public string DefaultConfigFileName + { + get + { + return defaultConfigFileName; + } + } + + static string concreteConfigFileName; + + public static string ConcreteConfigFileName + { + get + { + return concreteConfigFileName; + } + set + { + concreteConfigFileName = value; + } + } + + public static string PluginLeftDirectory; + public static string PluginRightDirectory; + + private static string LoadStringFromDifferentFile(string sectionName, string keyName) + { + string defaultString = "#$%^$343@#$"; + string result = defaultString; + if (concreteConfigFileName != null) + { + IniFile ini = new IniFile(ConcreteConfigFileName); + result = ini.GetString(sectionName, keyName, defaultString); + } + if (result == defaultString) + { + IniFile ini = new IniFile(DefaultConfigFileName); + result = ini.GetString(sectionName, keyName, ""); + } + return result; + } + + public static void Load() + { + PluginLeftDirectory = LoadStringFromDifferentFile("Plugin", "LeftDirectory"); + PluginRightDirectory = LoadStringFromDifferentFile("Plugin", "RightDirectory"); + } + } +} Modified: ACMServer/trunk/ACMServer/Library/LibraryExtention/LibraryExtention.csproj =================================================================== --- ACMServer/trunk/ACMServer/Library/LibraryExtention/LibraryExtention.csproj 2008-10-31 21:44:07 UTC (rev 424) +++ ACMServer/trunk/ACMServer/Library/LibraryExtention/LibraryExtention.csproj 2008-10-31 21:47:35 UTC (rev 425) @@ -33,6 +33,7 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> + <Compile Include="Configuration.cs" /> <Compile Include="IniFile.cs" /> <Compile Include="Log.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> @@ -50,4 +51,4 @@ <Target Name="AfterBuild"> </Target> --> -</Project> \ No newline at end of file +</Project> Added: ACMServer/trunk/ACMServer/Mediator/Config.ini =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Config.ini (rev 0) +++ ACMServer/trunk/ACMServer/Mediator/Config.ini 2008-10-31 21:47:35 UTC (rev 425) @@ -0,0 +1,3 @@ +[Plugin] +LeftDirectory=Dll_Web +RightDirectory=Dll_Tester \ No newline at end of file Modified: ACMServer/trunk/ACMServer/Mediator/Form1.cs =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-10-31 21:44:07 UTC (rev 424) +++ ACMServer/trunk/ACMServer/Mediator/Form1.cs 2008-10-31 21:47:35 UTC (rev 425) @@ -11,6 +11,8 @@ using AcmContester.Library.LibraryExtention; using AcmContester.Plugins.PluginsFramework; + + namespace Mediator { public partial class Form1 : Form @@ -27,7 +29,10 @@ private void button2_Click(object sender, EventArgs e) { - kernel = new MediatorKernelGUI("Dll_Tester", "Dll_Web"); + kernel = new MediatorKernelGUI(Configuration.PluginRightDirectory, + Configuration.PluginLeftDirectory); + //kernel = new MediatorKernelGUI("Dll_Tester", "Dll_Web"); + //kernel = new MediatorKernelGUI("Dll_Runner", "Dll_Client"); kernel.Dock = DockStyle.Fill; this.panel1.Controls.Add(kernel); } Modified: ACMServer/trunk/ACMServer/Mediator/Mediator.csproj =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Mediator.csproj 2008-10-31 21:44:07 UTC (rev 424) +++ ACMServer/trunk/ACMServer/Mediator/Mediator.csproj 2008-10-31 21:47:35 UTC (rev 425) @@ -58,6 +58,12 @@ <DependentUpon>Resources.resx</DependentUpon> <DesignTime>True</DesignTime> </Compile> + <None Include="Config.ini"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TesterConfig.ini"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> <None Include="Properties\Settings.settings"> <Generator>SettingsSingleFileGenerator</Generator> <LastGenOutput>Settings.Designer.cs</LastGenOutput> @@ -93,4 +99,4 @@ <Target Name="AfterBuild"> </Target> --> -</Project> \ No newline at end of file +</Project> Modified: ACMServer/trunk/ACMServer/Mediator/Program.cs =================================================================== --- ACMServer/trunk/ACMServer/Mediator/Program.cs 2008-10-31 21:44:07 UTC (rev 424) +++ ACMServer/trunk/ACMServer/Mediator/Program.cs 2008-10-31 21:47:35 UTC (rev 425) @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Windows.Forms; +using System.IO; namespace Mediator { @@ -10,8 +11,16 @@ /// The main entry point for the application. /// </summary> [STAThread] - static void Main() + static void Main(string[] args) { + string path = Application.ExecutablePath; + path = System.IO.Path.GetDirectoryName(path); + AcmContester.Library.LibraryExtention.Configuration.ExecutablePath = path; + if (args.Length == 1) + { + AcmContester.Library.LibraryExtention.Configuration.ConcreteConfigFileName = args[0]; + } + AcmContester.Library.LibraryExtention.Configuration.Load(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); Added: ACMServer/trunk/ACMServer/Mediator/TesterConfig.ini =================================================================== --- ACMServer/trunk/ACMServer/Mediator/TesterConfig.ini (rev 0) +++ ACMServer/trunk/ACMServer/Mediator/TesterConfig.ini 2008-10-31 21:47:35 UTC (rev 425) @@ -0,0 +1,3 @@ +[Plugin] +LeftDirectory=Dll_Web1 +RightDirectory=Dll_Tester1 \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |