You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2004/11/01 14:49:13 UTC
svn commit: rev 56232 - in incubator/directory/seda/trunk/src: java/org/apache/seda java/org/apache/seda/decoder test/org/apache/seda
Author: trustin
Date: Mon Nov 1 05:49:12 2004
New Revision: 56232
Modified:
incubator/directory/seda/trunk/src/java/org/apache/seda/DefaultFrontend.java
incubator/directory/seda/trunk/src/java/org/apache/seda/DefaultFrontendFactory.java
incubator/directory/seda/trunk/src/java/org/apache/seda/decoder/DefaultDecoderManager.java
incubator/directory/seda/trunk/src/test/org/apache/seda/DefaultFrontendFactoryTest.java
incubator/directory/seda/trunk/src/test/org/apache/seda/ProtocolTestCase.java
Log:
* Made DefaultFrontend and DefalutFrontendFactory UDP-aware
* Fixed: DefaultDecoderManager.createDecoder() throws NPE.
Modified: incubator/directory/seda/trunk/src/java/org/apache/seda/DefaultFrontend.java
==============================================================================
--- incubator/directory/seda/trunk/src/java/org/apache/seda/DefaultFrontend.java (original)
+++ incubator/directory/seda/trunk/src/java/org/apache/seda/DefaultFrontend.java Mon Nov 1 05:49:12 2004
@@ -28,8 +28,10 @@
import org.apache.seda.input.TCPInputManager;
import org.apache.seda.listener.ListenerManager;
import org.apache.seda.listener.TCPListenerManager;
+import org.apache.seda.listener.UDPListenerManager;
import org.apache.seda.output.OutputManager;
import org.apache.seda.output.TCPOutputManager;
+import org.apache.seda.output.UDPOutputManager;
import org.apache.seda.protocol.DefaultRequestProcessor;
import org.apache.seda.protocol.InetServicesDatabase;
import org.apache.seda.protocol.ProtocolProvider;
@@ -51,25 +53,31 @@
private final DecoderManager decMan;
private final EncoderManager encMan;
private final EventRouter router;
- private final InputManager inMan;
- private final ListenerManager srvMan;
- private final OutputManager outMan;
+ private final TCPListenerManager tcpListenerMan;
+ private final UDPListenerManager udpListenerMan;
+ private final TCPInputManager tcpInMan;
+ private final TCPOutputManager tcpOutMan;
+ private final UDPOutputManager udpOutMan;
private final RequestProcessor reqProc;
private final InetServicesDatabase inetDb;
DefaultFrontend(
BufferPool bp, DecoderManager decMan, EncoderManager encMan,
- EventRouter router, InputManager inMan,
- ListenerManager srvMan, OutputManager outMan,
+ EventRouter router, TCPInputManager tcpInMan,
+ TCPListenerManager tcpListenerMan,
+ UDPListenerManager udpListenerMan,
+ TCPOutputManager outMan, UDPOutputManager udpOutMan,
RequestProcessor reqProc, InetServicesDatabase inetDb)
{
this.bp = bp;
this.decMan = decMan;
this.encMan = encMan;
this.router = router;
- this.inMan = inMan;
- this.srvMan = srvMan;
- this.outMan = outMan;
+ this.tcpInMan = tcpInMan;
+ this.tcpListenerMan = tcpListenerMan;
+ this.udpListenerMan = udpListenerMan;
+ this.tcpOutMan = outMan;
+ this.udpOutMan = udpOutMan;
this.reqProc = reqProc;
this.inetDb = inetDb;
}
@@ -82,9 +90,12 @@
public void stop() throws Exception
{
- ((TCPListenerManager) srvMan).stop();
- ((TCPInputManager) inMan).stop();
- ((TCPOutputManager) outMan).stop();
+ tcpListenerMan.stop();
+ udpListenerMan.stop();
+ tcpInMan.stop();
+ tcpOutMan.stop();
+ udpOutMan.stop();
+
((DefaultRequestProcessor) reqProc).stop();
((DefaultDecoderManager) decMan).stop();
((DefaultEncoderManager) encMan).stop();
@@ -110,19 +121,29 @@
return router;
}
- public InputManager getInputManager()
+ public InputManager getTCPInputManager()
+ {
+ return tcpInMan;
+ }
+
+ public ListenerManager getTCPListenerManager()
+ {
+ return tcpListenerMan;
+ }
+
+ public ListenerManager getUDPListenerManager()
{
- return inMan;
+ return udpListenerMan;
}
- public ListenerManager getListenerManager()
+ public OutputManager getTCPOutputManager()
{
- return srvMan;
+ return tcpOutMan;
}
- public OutputManager getOutputManager()
+ public OutputManager getUDPOutputManager()
{
- return outMan;
+ return udpOutMan;
}
public RequestProcessor getRequestProcessor()
Modified: incubator/directory/seda/trunk/src/java/org/apache/seda/DefaultFrontendFactory.java
==============================================================================
--- incubator/directory/seda/trunk/src/java/org/apache/seda/DefaultFrontendFactory.java (original)
+++ incubator/directory/seda/trunk/src/java/org/apache/seda/DefaultFrontendFactory.java Mon Nov 1 05:49:12 2004
@@ -32,12 +32,11 @@
import org.apache.seda.event.DefaultEventRouter;
import org.apache.seda.event.EventRouter;
import org.apache.seda.event.EventRouterMonitorAdapter;
-import org.apache.seda.input.InputManager;
import org.apache.seda.input.TCPInputManager;
-import org.apache.seda.listener.ListenerManager;
import org.apache.seda.listener.TCPListenerManager;
-import org.apache.seda.output.OutputManager;
+import org.apache.seda.listener.UDPListenerManager;
import org.apache.seda.output.TCPOutputManager;
+import org.apache.seda.output.UDPOutputManager;
import org.apache.seda.protocol.DefaultInetServicesDatabase;
import org.apache.seda.protocol.DefaultRequestProcessor;
import org.apache.seda.protocol.InetServiceEntry;
@@ -68,17 +67,21 @@
InetServicesDatabase inetDb = createServicesDatabase();
// create dependent services in order
- ListenerManager listMan = createListenerManager(router);
- InputManager inMan = createInputManager(router, bp);
- OutputManager outMan = createOutputManager(router);
+ TCPListenerManager tcpListenerMan = createTCPListenerManager(router);
+ UDPListenerManager udpListenerMan = createUDPListenerManager(router, bp);
+ TCPInputManager tcpInMan = createTCPInputManager(router, bp);
+ TCPOutputManager tcpOutMan = createTCPOutputManager(router);
+ UDPOutputManager udpOutMan = createUDPOutputManager(router);
+
DecoderManager decMan = createDecoderManager(router, inetDb);
EncoderManager encMan = createEncoderManager(router, inetDb);
RequestProcessor reqProc = createRequestProcessor(router, inetDb);
DefaultFrontend fe =
new DefaultFrontend(
- bp, decMan, encMan, router, inMan, listMan,
- outMan, reqProc, inetDb);
+ bp, decMan, encMan, router, tcpInMan,
+ tcpListenerMan, udpListenerMan,
+ tcpOutMan, udpOutMan, reqProc, inetDb);
return fe;
}
@@ -160,7 +163,7 @@
return encMan;
}
- private ListenerManager createListenerManager(EventRouter router)
+ private TCPListenerManager createTCPListenerManager(EventRouter router)
throws IOException
{
TCPListenerManager listMan = new TCPListenerManager(router);
@@ -168,7 +171,15 @@
return listMan;
}
- private InputManager createInputManager(EventRouter router, BufferPool bp)
+ private UDPListenerManager createUDPListenerManager(EventRouter router, BufferPool bp)
+ throws IOException
+ {
+ UDPListenerManager listMan = new UDPListenerManager(router, bp);
+ listMan.start();
+ return listMan;
+ }
+
+ private TCPInputManager createTCPInputManager(EventRouter router, BufferPool bp)
throws IOException
{
TCPInputManager inMan = new TCPInputManager(router, bp);
@@ -176,11 +187,20 @@
return inMan;
}
- private OutputManager createOutputManager(EventRouter router)
+ private TCPOutputManager createTCPOutputManager(EventRouter router)
{
DefaultStageConfig config =
- new DefaultStageConfig("outputManager", createThreadPool(3, true));
+ new DefaultStageConfig("tcpOutputManager", createThreadPool(3, true));
TCPOutputManager outMan = new TCPOutputManager(router, config);
+ outMan.start();
+ return outMan;
+ }
+
+ private UDPOutputManager createUDPOutputManager(EventRouter router)
+ {
+ DefaultStageConfig config =
+ new DefaultStageConfig("udpOutputManager", createThreadPool(3, true));
+ UDPOutputManager outMan = new UDPOutputManager(router, config);
outMan.start();
return outMan;
}
Modified: incubator/directory/seda/trunk/src/java/org/apache/seda/decoder/DefaultDecoderManager.java
==============================================================================
--- incubator/directory/seda/trunk/src/java/org/apache/seda/decoder/DefaultDecoderManager.java (original)
+++ incubator/directory/seda/trunk/src/java/org/apache/seda/decoder/DefaultDecoderManager.java Mon Nov 1 05:49:12 2004
@@ -170,7 +170,11 @@
throws KeyExpiryException
{
String proto = inetdb.getProtoByPort(key.getLocalAddress().getPort());
- DecoderFactory factory = (DecoderFactory) factories.get(proto);
+
+ // FIXME Better synchronization implementation or non asynchronous event firing
+ DecoderFactory factory;
+ while ((factory = (DecoderFactory) factories.get(proto)) == null)
+ continue;
return factory.createDecoder();
}
Modified: incubator/directory/seda/trunk/src/test/org/apache/seda/DefaultFrontendFactoryTest.java
==============================================================================
--- incubator/directory/seda/trunk/src/test/org/apache/seda/DefaultFrontendFactoryTest.java (original)
+++ incubator/directory/seda/trunk/src/test/org/apache/seda/DefaultFrontendFactoryTest.java Mon Nov 1 05:49:12 2004
@@ -77,9 +77,9 @@
assertNotNull(fe.getEncoderManager());
assertNotNull(fe.getEventRouter());
assertNotNull(fe.getInetServicesDatabase());
- assertNotNull(fe.getInputManager());
- assertNotNull(fe.getListenerManager());
- assertNotNull(fe.getOutputManager());
+ assertNotNull(fe.getTCPInputManager());
+ assertNotNull(fe.getTCPListenerManager());
+ assertNotNull(fe.getTCPOutputManager());
assertNotNull(fe.getRequestProcessor());
}
@@ -96,8 +96,8 @@
new TCPListenerConfig(
InetAddress.getLocalHost(),
new InetServiceEntry("ldap", port));
- fe.getListenerManager().bind(config);
- fe.getListenerManager().unbind(config);
+ fe.getTCPListenerManager().bind(config);
+ fe.getTCPListenerManager().unbind(config);
}
public void testEcho() throws IOException
@@ -110,7 +110,7 @@
ListenerConfig config = null;
config = new TCPListenerConfig(InetAddress.getLocalHost(), srvEntry);
- fe.getListenerManager().bind(config);
+ fe.getTCPListenerManager().bind(config);
fe.register(new EchoProtocolProvider());
EchoTCPClient client = new EchoTCPClient();
@@ -122,6 +122,6 @@
client.getInputStream().read(recieved);
client.disconnect();
assertEquals(new String(toSend), new String(recieved));
- fe.getListenerManager().unbind(config);
+ fe.getTCPListenerManager().unbind(config);
}
}
Modified: incubator/directory/seda/trunk/src/test/org/apache/seda/ProtocolTestCase.java
==============================================================================
--- incubator/directory/seda/trunk/src/test/org/apache/seda/ProtocolTestCase.java (original)
+++ incubator/directory/seda/trunk/src/test/org/apache/seda/ProtocolTestCase.java Mon Nov 1 05:49:12 2004
@@ -63,7 +63,7 @@
protected void tearDown() throws Exception
{
super.tearDown();
- fe.getListenerManager().unbind(config);
+ fe.getTCPListenerManager().unbind(config);
fe.stop();
fe = null;
}
@@ -84,7 +84,7 @@
new InetServiceEntry(proto.getName(), port);
((DefaultInetServicesDatabase) fe.getInetServicesDatabase()).addEntry(srvEntry);
config = new TCPListenerConfig(InetAddress.getLocalHost(), srvEntry);
- fe.getListenerManager().bind(config);
+ fe.getTCPListenerManager().bind(config);
fe.register(proto);
}