From: <br...@us...> - 2008-07-16 10:23:01
|
Revision: 297 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=297&view=rev Author: brus07 Date: 2008-07-16 03:23:05 -0700 (Wed, 16 Jul 2008) Log Message: ----------- Add new protocol interface. Add some protocols (send, arrived, etc.). Using new protocol in SocketServer. 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/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs Added Paths: ----------- ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/ArrivedDepthProtocol.cs ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/EasySocketProtocol.cs ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/EmptyProtocol.cs ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/Protocol.cs ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/SendDepthProtocol.cs Removed Paths: ------------- ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/EasyProtocol.cs ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/IProtocol.cs Property Changed: ---------------- ACMServer/trunk/ACMServer/ Property changes on: ACMServer/trunk/ACMServer ___________________________________________________________________ Name: svn:ignore - *.suo *.Load + *.suo *.Load *.NoLoad Modified: ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-07-11 11:35:15 UTC (rev 296) +++ ACMServer/trunk/ACMServer/Library/Connector/Connector.csproj 2008-07-16 10:23:05 UTC (rev 297) @@ -43,8 +43,11 @@ <Compile Include="Getter\WebGetter.cs" /> <Compile Include="ISocket.cs" /> <Compile Include="SocketClient.cs" /> - <Compile Include="SocketProtocol\EasyProtocol.cs" /> - <Compile Include="SocketProtocol\IProtocol.cs" /> + <Compile Include="SocketProtocol\ArrivedDepthProtocol.cs" /> + <Compile Include="SocketProtocol\EasySocketProtocol.cs" /> + <Compile Include="SocketProtocol\SendDepthProtocol.cs" /> + <Compile Include="SocketProtocol\EmptyProtocol.cs" /> + <Compile Include="SocketProtocol\Protocol.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-07-11 11:35:15 UTC (rev 296) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketClient.cs 2008-07-16 10:23:05 UTC (rev 297) @@ -7,7 +7,6 @@ public class SocketClient: ISocket { EasyClient client; - IProtocol protocol = new EasyProtocol(); public delegate void DataArrivedDelegate(string s); public event DataArrivedDelegate onDataArrived; @@ -43,12 +42,12 @@ } public void Send(string message) { - protocol.Send(message, client); + client.SendData(message); } private void DataArrived(object Data) { - protocol.DataArrived(Data.ToString(), this); + OnDataArrived(Data.ToString()); } public bool IsConnected() { Added: ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/ArrivedDepthProtocol.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/ArrivedDepthProtocol.cs (rev 0) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/ArrivedDepthProtocol.cs 2008-07-16 10:23:05 UTC (rev 297) @@ -0,0 +1,21 @@ +using System; + +namespace AcmContester.Library.Connector.SocketProtocol +{ + class ArrivedDepthProtocol: Protocol + { + public override void NextProcess(string message) + { + RunNextProcess(message); + } + + public delegate void DataArrivedDelegate(string s); + public event DataArrivedDelegate onDataArrived; + + public override void PrevProcess(string message) + { + if (onDataArrived != null) + onDataArrived(message); + } + } +} Deleted: ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/EasyProtocol.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/EasyProtocol.cs 2008-07-11 11:35:15 UTC (rev 296) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/EasyProtocol.cs 2008-07-16 10:23:05 UTC (rev 297) @@ -1,29 +0,0 @@ -using System; -using JadBenAutho.EasySocket; - -namespace AcmContester.Library.Connector.SocketProtocol -{ - class EasyProtocol: IProtocol - { - - #region IProtocol Members - - public void DataArrived(string message, ISocket socket) - { - socket.OnDataArrived(message); - } - - public void Send(string message, EasyServer server, int targerClientIndex) - { - server.SendData(message, targerClientIndex); - } - - public void Send(string message, EasyClient client) - { - if (client.IsConnected == true) - client.SendData(message); - } - - #endregion - } -} Added: ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/EasySocketProtocol.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/EasySocketProtocol.cs (rev 0) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/EasySocketProtocol.cs 2008-07-16 10:23:05 UTC (rev 297) @@ -0,0 +1,32 @@ +using System; +using JadBenAutho.EasySocket; + +namespace AcmContester.Library.Connector.SocketProtocol +{ + class EasySocketProtocol: Protocol + { + EasyServer server; + public EasySocketProtocol(EasyServer inServer) + { + server = inServer; + } + + int clientIndex = 0; + public override void NextProcess(string message) + { + if (server.CountClients > 0) + { + if (clientIndex >= server.CountClients) + clientIndex = 0; + RunNextProcess(message); + //protocol.Send(message, server, clientIndex); + clientIndex++; + } + } + + public override void PrevProcess(string message) + { + RunPrevProcess(message); + } + } +} Added: ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/EmptyProtocol.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/EmptyProtocol.cs (rev 0) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/EmptyProtocol.cs 2008-07-16 10:23:05 UTC (rev 297) @@ -0,0 +1,17 @@ +using System; + +namespace AcmContester.Library.Connector.SocketProtocol +{ + class EmptyProtocol: Protocol + { + public override void NextProcess(string message) + { + RunNextProcess(message); + } + + public override void PrevProcess(string message) + { + RunPrevProcess(message); + } + } +} Deleted: ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/IProtocol.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/IProtocol.cs 2008-07-11 11:35:15 UTC (rev 296) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/IProtocol.cs 2008-07-16 10:23:05 UTC (rev 297) @@ -1,11 +0,0 @@ -using JadBenAutho.EasySocket; - -namespace AcmContester.Library.Connector.SocketProtocol -{ - interface IProtocol - { - void DataArrived(string message, ISocket socket); - void Send(string message, EasyServer server, int targerClientIndex); - void Send(string message, EasyClient client); - } -} Added: ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/Protocol.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/Protocol.cs (rev 0) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/Protocol.cs 2008-07-16 10:23:05 UTC (rev 297) @@ -0,0 +1,33 @@ +using System; + +namespace AcmContester.Library.Connector.SocketProtocol +{ + public abstract class Protocol + { + Protocol next; + Protocol prev; + + public void SetNextProtocol(Protocol protocol) + { + this.next = protocol; + } + + public void SetPrevProtocol(Protocol protocol) + { + this.prev = protocol; + } + public abstract void NextProcess(string message); + public abstract void PrevProcess(string message); + + protected void RunNextProcess(string message) + { + if (next != null) + next.NextProcess(message); + } + protected void RunPrevProcess(string message) + { + if (prev != null) + prev.PrevProcess(message); + } + } +} Added: ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/SendDepthProtocol.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/SendDepthProtocol.cs (rev 0) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketProtocol/SendDepthProtocol.cs 2008-07-16 10:23:05 UTC (rev 297) @@ -0,0 +1,23 @@ +using System; +using JadBenAutho.EasySocket; + +namespace AcmContester.Library.Connector.SocketProtocol +{ + class SendDepthProtocol: Protocol + { + EasyServer server; + public SendDepthProtocol(EasyServer inServer) + { + server = inServer; + } + public override void NextProcess(string message) + { + server.SendData(message, 0); + } + + public override void PrevProcess(string message) + { + RunPrevProcess(message); + } + } +} Modified: ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-07-11 11:35:15 UTC (rev 296) +++ ACMServer/trunk/ACMServer/Library/Connector/SocketServer.cs 2008-07-16 10:23:05 UTC (rev 297) @@ -9,8 +9,6 @@ int port = 4120; EasyServer server; - IProtocol protocol = new EasyProtocol(); - public delegate void DataArrivedDelegate(string s); public event DataArrivedDelegate onDataArrived; @@ -18,6 +16,8 @@ { server = new EasyServer(port, true); server.DataArrived += new DataArrived2Server_EventHandler(DataArrived); + + InitProtocol(); } public void Start() @@ -38,19 +38,12 @@ private void DataArrived(object Data, SocketStream DataSender) { - protocol.DataArrived(Data.ToString(), this); + arrivedHead.PrevProcess(Data.ToString()); } - int clientIndex = 0; public void Send(string message) { - if (server.CountClients > 0) - { - if (clientIndex >= server.CountClients) - clientIndex = 0; - protocol.Send(message, server, clientIndex); - clientIndex++; - } + sendHead.NextProcess(message); } public int CountClients() @@ -58,6 +51,37 @@ return server.CountClients; } + Protocol sendHead; + Protocol sendNext; + Protocol arrivedHead; + Protocol arrivedNext; + + private void InitProtocol() + { + Protocol sendProtocol = new SendDepthProtocol(server); + Protocol arrivedProtocol = new ArrivedDepthProtocol(); + ((ArrivedDepthProtocol)arrivedProtocol).onDataArrived += OnDataArrived; + sendHead = arrivedProtocol; + arrivedProtocol.SetNextProtocol(sendProtocol); + sendNext = sendProtocol; + + arrivedHead = sendProtocol; + sendProtocol.SetPrevProtocol(arrivedProtocol); + arrivedNext = arrivedProtocol; + + Protocol easySocketProtocol = new EasySocketProtocol(server); + AddProtocol(easySocketProtocol); + } + + public void AddProtocol(Protocol protocol) + { + protocol.SetNextProtocol(sendNext); + sendHead.SetNextProtocol(protocol); + + protocol.SetPrevProtocol(arrivedHead); + arrivedNext.SetPrevProtocol(protocol); + } + #region ISocket Members public void OnDataArrived(string message) Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-07-11 11:35:15 UTC (rev 296) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-07-16 10:23:05 UTC (rev 297) @@ -29,25 +29,22 @@ public new void Send(string message) { - if (base.CountClients() > 0) + SubmitList submitList = SubmitList.CreateFromXml(message); + for (int index = 0; index < submitList.Items.Length; index++) { - SubmitList submitList = SubmitList.CreateFromXml(message); - for (int index = 0; index < submitList.Items.Length; index++) + if (dataContainer.Add(submitList.Items[index]) == true) { - if (dataContainer.Add(submitList.Items[index]) == true) - { - base.Send(submitList.Items[index].ToString()); - } + base.Send(submitList.Items[index].ToString()); } + } - OnLogMessage("SocketServerGate::Send(message)"); - string ids = ""; - for (int i = 0; i < submitList.Items.Length; i++) - { - ids += " " + submitList.Items[i].id.ToString(); - } - OnLogMessage("\t ID: " + ids); + OnLogMessage("SocketServerGate::Send(message)"); + string ids = ""; + for (int i = 0; i < submitList.Items.Length; i++) + { + ids += " " + submitList.Items[i].id.ToString(); } + OnLogMessage("\t ID: " + ids); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |