You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2007/09/17 23:06:54 UTC
svn commit: r576587 - in /incubator/qpid/trunk/qpid/java/common: ./
src/main/java/org/apache/qpidity/transport/
src/main/java/org/apache/qpidity/transport/network/
Author: rhs
Date: Mon Sep 17 14:06:53 2007
New Revision: 576587
URL: http://svn.apache.org/viewvc?rev=576587&view=rev
Log:
* ProtocolEvent.Switch --> ProtocolDelegate
* Delegate --> MethodDelegate
* Added method dispatching as a separate delegation level to the
hierarchy underneath ProtocolDelegate.
Added:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java (with props)
Modified:
incubator/qpid/trunk/qpid/java/common/generate
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Data.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Method.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
Modified: incubator/qpid/trunk/qpid/java/common/generate
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/generate?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/generate (original)
+++ incubator/qpid/trunk/qpid/java/common/generate Mon Sep 17 14:06:53 2007
@@ -210,7 +210,7 @@
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.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))
Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/AbstractDelegate.java Mon Sep 17 14:06:53 2007
@@ -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) {}
-
-}
Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java Mon Sep 17 14:06:53 2007
@@ -35,12 +35,13 @@
* @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,38 +64,49 @@
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()
Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ChannelDelegate.java Mon Sep 17 14:06:53 2007
@@ -29,7 +29,7 @@
* @author Rafael H. Schloming
*/
-class ChannelDelegate extends Delegate<Channel>
+class ChannelDelegate extends MethodDelegate<Channel>
{
public @Override void sessionOpen(Channel channel, SessionOpen open)
Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java Mon Sep 17 14:06:53 2007
@@ -47,7 +47,7 @@
*
* 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 @@
_negotiationCompleteLock = negotiationCompleteLock;
}
- @Override public void init(Channel ch, ProtocolHeader hdr)
+ public void init(Channel ch, ProtocolHeader hdr)
{
System.out.println(hdr);
// XXX: hardcoded version
@@ -85,11 +85,6 @@
ch.connectionStart(hdr.getMajor(), hdr.getMinor(), null, "PLAIN", "utf8");
}
- }
-
- @Override public void error(Channel ch, ProtocolError error)
- {
- throw new RuntimeException(error.getMessage());
}
// ----------------------------------------------
Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Data.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Data.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Data.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Data.java Mon Sep 17 14:06:53 2007
@@ -71,14 +71,9 @@
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);
}
}
Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java Mon Sep 17 14:06:53 2007
@@ -63,14 +63,9 @@
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);
}
}
Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Method.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Method.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Method.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Method.java Mon Sep 17 14:06:53 2007
@@ -54,9 +54,11 @@
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);
}
}
Added: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java?rev=576587&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java (added)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java Mon Sep 17 14:06:53 2007
@@ -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);
+
+}
Propchange: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolDelegate.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolError.java Mon Sep 17 14:06:53 2007
@@ -54,19 +54,14 @@
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)
{
delegate.error(this);
- }
-
- public <C> void delegate(C context, Delegate<C> delegate)
- {
- delegate.error(context, this);
}
}
Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolEvent.java Mon Sep 17 14:06:53 2007
@@ -29,21 +29,8 @@
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);
}
Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/ProtocolHeader.java Mon Sep 17 14:06:53 2007
@@ -89,19 +89,14 @@
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)
{
delegate.init(this);
- }
-
- public <C> void delegate(C context, Delegate<C> delegate)
- {
- delegate.init(context, this);
}
public String toString()
Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java Mon Sep 17 14:06:53 2007
@@ -20,6 +20,8 @@
*/
package org.apache.qpidity.transport;
+import org.apache.qpidity.transport.network.Frame;
+
/**
* SessionDelegate
@@ -27,10 +29,29 @@
* @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)
{
Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java?rev=576587&r1=576586&r2=576587&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java Mon Sep 17 14:06:53 2007
@@ -27,9 +27,10 @@
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 @@
*
*/
-public class Disassembler
- implements Sender<ConnectionEvent>, ProtocolEvent.Switch<ConnectionEvent>
+public class Disassembler implements Sender<ConnectionEvent>,
+ ProtocolDelegate<ConnectionEvent>
{
private final Sender<NetworkEvent> sender;