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