summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2007-09-17 21:06:53 +0000
committerRafael H. Schloming <rhs@apache.org>2007-09-17 21:06:53 +0000
commitd576e8af1b815495901aca7e207cf2076944659e (patch)
treef4d509b5315d783a75c051febc39136ace40f857 /java
parent24966bd7fbaff11d8a0f1ad282180154c96a7d2f (diff)
downloadqpid-python-d576e8af1b815495901aca7e207cf2076944659e.tar.gz
* ProtocolEvent.Switch --> ProtocolDelegate
* Delegate --> MethodDelegate * Added method dispatching as a separate delegation level to the hierarchy underneath ProtocolDelegate. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@576587 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rwxr-xr-xjava/common/generate6
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java40
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/Channel.java56
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java2
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java9
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/Data.java7
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/Header.java7
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/Method.java6
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java42
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java9
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java17
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java9
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java25
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java7
14 files changed, 121 insertions, 121 deletions
diff --git a/java/common/generate b/java/common/generate
index b2448c6e5d..d6387623d8 100755
--- a/java/common/generate
+++ b/java/common/generate
@@ -210,7 +210,7 @@ class Struct:
out.line(" }")
out.line()
- out.line(" public <C> void delegate(C context, Delegate<C> delegate) {")
+ out.line(" public <C> void dispatch(C context, MethodDelegate<C> delegate) {")
out.line(" delegate.%s(context, this);" % dromedary(self.name))
out.line(" }")
@@ -365,8 +365,8 @@ fct.line(" }")
fct.line("}");
fct.write()
-dlg = Output(out_dir, out_pkg, "Delegate")
-dlg.line("public abstract class Delegate<C> extends AbstractDelegate<C> {")
+dlg = Output(out_dir, out_pkg, "MethodDelegate")
+dlg.line("public abstract class MethodDelegate<C> {")
for s in structs:
dlg.line(" public void %s(C context, %s struct) {}" %
(dromedary(s.name), s.name))
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java b/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java
index a8059d669f..e69de29bb2 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java
@@ -1,40 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpidity.transport;
-
-
-/**
- * AbstractDelegate
- *
- */
-
-class AbstractDelegate<C>
-{
-
- public void init(C context, ProtocolHeader header) {}
-
- public void error(C context, ProtocolError error) {}
-
- public void header(C context, Header header) {}
-
- public void data(C context, Data data) {}
-
-}
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/Channel.java b/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
index 426f954c17..8ea2eaf8c4 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
@@ -35,12 +35,13 @@ import static org.apache.qpidity.transport.util.Functions.*;
* @author Rafael H. Schloming
*/
-public class Channel extends Invoker implements Receiver<ProtocolEvent>
+public class Channel extends Invoker
+ implements Receiver<ProtocolEvent>, ProtocolDelegate<Void>
{
final private Connection connection;
final private int channel;
- final private Delegate<Channel> delegate;
+ final private MethodDelegate<Channel> delegate;
final private SessionDelegate sessionDelegate;
// session may be null
private Session session;
@@ -63,40 +64,51 @@ public class Channel extends Invoker implements Receiver<ProtocolEvent>
public void received(ProtocolEvent event)
{
- switch (event.getEncodedTrack())
+ event.delegate(null, this);
+ }
+
+ public void init(Void v, ProtocolHeader hdr)
+ {
+ connection.getConnectionDelegate().init(this, hdr);
+ }
+
+ public void method(Void v, Method method)
+ {
+ switch (method.getEncodedTrack())
{
case L1:
- event.delegate(this, connection.getConnectionDelegate());
+ method.dispatch(this, connection.getConnectionDelegate());
break;
case L2:
- event.delegate(this, delegate);
+ method.dispatch(this, delegate);
break;
case L3:
- event.delegate(session, sessionDelegate);
+ method.delegate(session, sessionDelegate);
break;
case L4:
- // XXX
- if (event instanceof Method)
- {
- Method method = (Method) event;
- method.setId(session.nextCommandId());
- method.delegate(session, sessionDelegate);
- if (!method.hasPayload())
- {
- session.processed(method);
- }
- }
- else
- {
- event.delegate(session, sessionDelegate);
- }
+ method.delegate(session, sessionDelegate);
break;
default:
throw new IllegalStateException
- ("unknown track: " + event.getEncodedTrack());
+ ("unknown track: " + method.getEncodedTrack());
}
}
+ public void header(Void v, Header header)
+ {
+ header.delegate(session, sessionDelegate);
+ }
+
+ public void data(Void v, Data data)
+ {
+ data.delegate(session, sessionDelegate);
+ }
+
+ public void error(Void v, ProtocolError error)
+ {
+ error.delegate(session, sessionDelegate);
+ }
+
public void closed()
{
System.out.println("channel closed: " + this);
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java b/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java
index 9d28b1a81e..88c8b18e0e 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java
@@ -29,7 +29,7 @@ import java.util.UUID;
* @author Rafael H. Schloming
*/
-class ChannelDelegate extends Delegate<Channel>
+class ChannelDelegate extends MethodDelegate<Channel>
{
public @Override void sessionOpen(Channel channel, SessionOpen open)
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java b/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java
index d500cc6b81..f3d3a70bff 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java
@@ -47,7 +47,7 @@ import javax.security.sasl.SaslServer;
*
* the connectionClose is kind of different for both sides
*/
-public abstract class ConnectionDelegate extends Delegate<Channel>
+public abstract class ConnectionDelegate extends MethodDelegate<Channel>
{
private String _username = "guest";
private String _password = "guest";;
@@ -68,7 +68,7 @@ public abstract class ConnectionDelegate extends Delegate<Channel>
_negotiationCompleteLock = negotiationCompleteLock;
}
- @Override public void init(Channel ch, ProtocolHeader hdr)
+ public void init(Channel ch, ProtocolHeader hdr)
{
System.out.println(hdr);
// XXX: hardcoded version
@@ -87,11 +87,6 @@ public abstract class ConnectionDelegate extends Delegate<Channel>
}
}
- @Override public void error(Channel ch, ProtocolError error)
- {
- throw new RuntimeException(error.getMessage());
- }
-
// ----------------------------------------------
// Client side
//-----------------------------------------------
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/Data.java b/java/common/src/main/java/org/apache/qpidity/transport/Data.java
index 55cde84d5e..72029d106e 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/Data.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/Data.java
@@ -71,14 +71,9 @@ public class Data implements ProtocolEvent
return Frame.L4;
}
- public <C> void delegate(C context, Delegate<C> delegate)
+ public <C> void delegate(C context, ProtocolDelegate<C> delegate)
{
delegate.data(context, this);
}
- public <C> void delegate(C context, Switch sw)
- {
- sw.data(context, this);
- }
-
}
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/Header.java b/java/common/src/main/java/org/apache/qpidity/transport/Header.java
index 632dc137c1..6f3c7819f1 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/Header.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/Header.java
@@ -63,14 +63,9 @@ public class Header implements ProtocolEvent {
return Frame.L4;
}
- public <C> void delegate(C context, Delegate<C> delegate)
+ public <C> void delegate(C context, ProtocolDelegate<C> delegate)
{
delegate.header(context, this);
}
- public <C> void delegate(C context, Switch sw)
- {
- sw.header(context, this);
- }
-
}
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/Method.java b/java/common/src/main/java/org/apache/qpidity/transport/Method.java
index edd9116a73..7304260333 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/Method.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/Method.java
@@ -54,9 +54,11 @@ public abstract class Method extends Struct implements ProtocolEvent
public abstract byte getEncodedTrack();
- public <C> void delegate(C context, Switch sw)
+ public abstract <C> void dispatch(C context, MethodDelegate<C> delegate);
+
+ public <C> void delegate(C context, ProtocolDelegate<C> delegate)
{
- sw.method(context, this);
+ delegate.method(context, this);
}
}
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java b/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java
new file mode 100644
index 0000000000..6149c3876a
--- /dev/null
+++ b/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java
@@ -0,0 +1,42 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpidity.transport;
+
+
+/**
+ * ProtocolDelegate
+ *
+ */
+
+public interface ProtocolDelegate<C>
+{
+
+ void init(C context, ProtocolHeader header);
+
+ void method(C context, Method method);
+
+ void header(C context, Header header);
+
+ void data(C context, Data data);
+
+ void error(C context, ProtocolError error);
+
+}
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java b/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java
index cd9fb3b94a..4d1b83d43e 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java
@@ -54,9 +54,9 @@ public class ProtocolError implements NetworkEvent, ProtocolEvent
return String.format(format, args);
}
- public <C> void delegate(C context, Switch sw)
+ public <C> void delegate(C context, ProtocolDelegate<C> delegate)
{
- sw.error(context, this);
+ delegate.error(context, this);
}
public void delegate(NetworkDelegate delegate)
@@ -64,9 +64,4 @@ public class ProtocolError implements NetworkEvent, ProtocolEvent
delegate.error(this);
}
- public <C> void delegate(C context, Delegate<C> delegate)
- {
- delegate.error(context, this);
- }
-
}
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java b/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java
index e2adefba9e..0b38dc6f28 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java
@@ -29,21 +29,8 @@ package org.apache.qpidity.transport;
public interface ProtocolEvent
{
- public interface Switch<C>
- {
- void init(C context, ProtocolHeader header);
- void method(C context, Method method);
- void header(C context, Header header);
- void data(C context, Data data);
- void error(C context, ProtocolError error);
- }
-
- // XXX: could do this switching with cascading defaults for the
- // specific dispatch methods
- <C> void delegate(C context, Switch sw);
-
- <C> void delegate(C context, Delegate<C> delegate);
-
byte getEncodedTrack();
+ <C> void delegate(C context, ProtocolDelegate<C> delegate);
+
}
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java b/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java
index 50cae51171..f9cd6f3947 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java
@@ -89,9 +89,9 @@ public class ProtocolHeader implements NetworkEvent, ProtocolEvent
return buf;
}
- public <C> void delegate(C context, Switch sw)
+ public <C> void delegate(C context, ProtocolDelegate<C> delegate)
{
- sw.init(context, this);
+ delegate.init(context, this);
}
public void delegate(NetworkDelegate delegate)
@@ -99,11 +99,6 @@ public class ProtocolHeader implements NetworkEvent, ProtocolEvent
delegate.init(this);
}
- public <C> void delegate(C context, Delegate<C> delegate)
- {
- delegate.init(context, this);
- }
-
public String toString()
{
return String.format("AMQP.%d %d-%d", instance, major, minor);
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java b/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java
index 8b3c661075..247e691c78 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java
@@ -20,6 +20,8 @@
*/
package org.apache.qpidity.transport;
+import org.apache.qpidity.transport.network.Frame;
+
/**
* SessionDelegate
@@ -27,10 +29,29 @@ package org.apache.qpidity.transport;
* @author Rafael H. Schloming
*/
-public abstract class SessionDelegate extends Delegate<Session>
+public abstract class SessionDelegate
+ extends MethodDelegate<Session>
+ implements ProtocolDelegate<Session>
{
+ public void init(Session ssn, ProtocolHeader hdr) { }
+
+ public void method(Session ssn, Method method) {
+ if (method.getEncodedTrack() == Frame.L4)
+ {
+ method.setId(ssn.nextCommandId());
+ method.dispatch(ssn, this);
+ if (!method.hasPayload())
+ {
+ ssn.processed(method);
+ }
+ }
+ }
+
+ public void header(Session ssn, Header header) { }
+
+ public void data(Session ssn, Data data) { }
- private static final Struct[] EMPTY_STRUCT_ARRAY = {};
+ public void error(Session ssn, ProtocolError error) { }
@Override public void executionResult(Session ssn, ExecutionResult result)
{
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java b/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
index 73be9c3492..6315d00150 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
@@ -27,9 +27,10 @@ import org.apache.qpidity.transport.ConnectionEvent;
import org.apache.qpidity.transport.Data;
import org.apache.qpidity.transport.Header;
import org.apache.qpidity.transport.Method;
-import org.apache.qpidity.transport.ProtocolHeader;
+import org.apache.qpidity.transport.ProtocolDelegate;
import org.apache.qpidity.transport.ProtocolError;
import org.apache.qpidity.transport.ProtocolEvent;
+import org.apache.qpidity.transport.ProtocolHeader;
import org.apache.qpidity.transport.Sender;
import org.apache.qpidity.transport.Struct;
@@ -45,8 +46,8 @@ import static java.lang.Math.*;
*
*/
-public class Disassembler
- implements Sender<ConnectionEvent>, ProtocolEvent.Switch<ConnectionEvent>
+public class Disassembler implements Sender<ConnectionEvent>,
+ ProtocolDelegate<ConnectionEvent>
{
private final Sender<NetworkEvent> sender;