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/08/08 14:24:15 UTC

svn commit: r563829 - /incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/

Author: rhs
Date: Wed Aug  8 05:24:14 2007
New Revision: 563829

URL: http://svn.apache.org/viewvc?view=rev&rev=563829
Log:
fixed a bunch of temporary hacks, we now auto process comands that have no payload

Added:
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/CommandDispatcher.java   (with props)
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodDecoder.java   (with props)
Modified:
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Channel.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ContentHandler.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Method.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodDispatcher.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodHandler.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MinaHandler.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Session.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/SessionDelegate.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Struct.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ToyBroker.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ToyClient.java

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Channel.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Channel.java?view=diff&rev=563829&r1=563828&r2=563829
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Channel.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Channel.java Wed Aug  8 05:24:14 2007
@@ -26,6 +26,7 @@
 import java.util.ArrayList;
 
 import static org.apache.qpidity.Frame.*;
+import static org.apache.qpidity.Functions.*;
 
 
 /**
@@ -134,6 +135,8 @@
         {
             method = m;
         }
+
+        System.out.println("sent " + m);
     }
 
     public void headers(Struct ... headers)
@@ -157,6 +160,7 @@
         {
             enc.writeLongStruct(hdr);
             enc.flush();
+            System.out.println("sent " + hdr);
         }
     }
 
@@ -189,6 +193,7 @@
         for (ByteBuffer buf : data)
         {
             enc.put(buf);
+            System.out.println("sent " + str(buf));
         }
         enc.flush();
         data = null;

Added: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/CommandDispatcher.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/CommandDispatcher.java?view=auto&rev=563829
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/CommandDispatcher.java (added)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/CommandDispatcher.java Wed Aug  8 05:24:14 2007
@@ -0,0 +1,53 @@
+/*
+ *
+ * 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;
+
+
+/**
+ * CommandDispatcher
+ *
+ * @author Rafael H. Schloming
+ */
+
+class CommandDispatcher implements Handler<Event<Session,Method>>
+{
+
+    private final Delegate<Session> delegate;
+
+    public CommandDispatcher(Delegate<Session> delegate)
+    {
+        this.delegate = delegate;
+    }
+
+    public void handle(Event<Session,Method> event)
+    {
+        Session ssn = event.context;
+        Method method = event.target;
+        method.setId(ssn.nextCommandId());
+        System.out.println("delegating " + method + "[" + method.getId() + "] to " + delegate);
+        method.delegate(ssn, delegate);
+        if (!method.hasPayload())
+        {
+            ssn.processed(method);
+        }
+    }
+
+}

Propchange: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/CommandDispatcher.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ContentHandler.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ContentHandler.java?view=diff&rev=563829&r1=563828&r2=563829
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ContentHandler.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ContentHandler.java Wed Aug  8 05:24:14 2007
@@ -34,11 +34,11 @@
 
     public ContentHandler(byte major, byte minor, SessionDelegate delegate)
     {
-        MethodDispatcher<Session> md =
-            new MethodDispatcher<Session>(major, minor, delegate);
-        map(Frame.METHOD, new SegmentAssembler<Session>(md));
-        map(Frame.HEADER, new SegmentAssembler<Session>
-            (new HeaderHandler(major, minor, delegate)));
+        CommandDispatcher disp = new CommandDispatcher(delegate);
+        MethodDecoder<Session> dec = new MethodDecoder<Session>(major, minor, disp);
+        HeaderHandler hh = new HeaderHandler(major, minor, delegate);
+        map(Frame.METHOD, new SegmentAssembler<Session>(dec));
+        map(Frame.HEADER, new SegmentAssembler<Session>(hh));
         map(Frame.BODY, new BodyHandler(delegate));
     }
 

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Method.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Method.java?view=diff&rev=563829&r1=563828&r2=563829
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Method.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Method.java Wed Aug  8 05:24:14 2007
@@ -30,6 +30,26 @@
 public abstract class Method extends Struct
 {
 
+    public static final Method create(int type)
+    {
+        // XXX: should generate separate factories for separate
+        // namespaces
+        return (Method) Struct.create(type);
+    }
+
+    // XXX: command subclass?
+    private long id;
+
+    public final long getId()
+    {
+        return id;
+    }
+
+    void setId(long id)
+    {
+        this.id = id;
+    }
+
     public abstract boolean hasPayload();
 
     public abstract byte getEncodedTrack();

Added: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodDecoder.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodDecoder.java?view=auto&rev=563829
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodDecoder.java (added)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodDecoder.java Wed Aug  8 05:24:14 2007
@@ -0,0 +1,59 @@
+/*
+ *
+ * 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;
+
+import java.nio.ByteBuffer;
+
+import java.util.Iterator;
+
+
+/**
+ * MethodDecoder
+ *
+ * @author Rafael H. Schloming
+ */
+
+class MethodDecoder<C> implements Handler<Event<C,Segment>>
+{
+
+    private final byte major;
+    private final byte minor;
+    private final Handler<Event<C,Method>> handler;
+
+    public MethodDecoder(byte major, byte minor, Handler<Event<C,Method>> handler)
+    {
+        this.major = major;
+        this.minor = minor;
+        this.handler = handler;
+    }
+
+    public void handle(Event<C,Segment> event)
+    {
+        System.out.println("got method segment:\n  " + event.target);
+        Iterator<ByteBuffer> fragments = event.target.getFragments();
+        Decoder dec = new FragmentDecoder(major, minor, fragments);
+        int type = (int) dec.readLong();
+        Method method = Method.create(type);
+        method.read(dec, major, minor);
+        handler.handle(new Event<C,Method>(event.context, method));
+    }
+
+}

Propchange: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodDecoder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodDispatcher.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodDispatcher.java?view=diff&rev=563829&r1=563828&r2=563829
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodDispatcher.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodDispatcher.java Wed Aug  8 05:24:14 2007
@@ -20,10 +20,6 @@
  */
 package org.apache.qpidity;
 
-import java.nio.ByteBuffer;
-
-import java.util.Iterator;
-
 
 /**
  * A MethodDispatcher parses and dispatches a method segment.
@@ -31,33 +27,21 @@
  * @author Rafael H. Schloming
  */
 
-class MethodDispatcher<C> implements Handler<Event<C,Segment>>
+class MethodDispatcher<C> implements Handler<Event<C,Method>>
 {
 
-    final private byte major;
-    final private byte minor;
     final private Delegate<C> delegate;
-    // XXX: should be on session
-    private int count = 0;
 
-    public MethodDispatcher(byte major, byte minor, Delegate<C> delegate)
+    public MethodDispatcher(Delegate<C> delegate)
     {
-        this.major = major;
-        this.minor = minor;
         this.delegate = delegate;
     }
 
-    public void handle(Event<C,Segment> event)
+    public void handle(Event<C,Method> event)
     {
-        System.out.println("got method segment:\n  " + event.target);
-        Iterator<ByteBuffer> fragments = event.target.getFragments();
-        Decoder dec = new FragmentDecoder(major, minor, fragments);
-        int type = (int) dec.readLong();
-        Struct struct = Struct.create(type);
-        struct.setId(count++);
-        struct.read(dec, major, minor);
-        System.out.println("delegating " + struct + "[" + struct.getId() + "] to " + delegate);
-        struct.delegate(event.context, delegate);
+        Method method = event.target;
+        System.out.println("delegating " + method + " to " + delegate);
+        method.delegate(event.context, delegate);
     }
 
 }

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodHandler.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodHandler.java?view=diff&rev=563829&r1=563828&r2=563829
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodHandler.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MethodHandler.java Wed Aug  8 05:24:14 2007
@@ -34,8 +34,9 @@
 
     public MethodHandler(byte major, byte minor, Delegate<C> delegate)
     {
-        MethodDispatcher md = new MethodDispatcher<C>(major, minor, delegate);
-        map(Frame.METHOD, new SegmentAssembler<C>(md));
+        MethodDispatcher disp = new MethodDispatcher<C>(delegate);
+        MethodDecoder<C> dec = new MethodDecoder<C>(major, minor, disp);
+        map(Frame.METHOD, new SegmentAssembler<C>(dec));
     }
 
 }

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MinaHandler.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MinaHandler.java?view=diff&rev=563829&r1=563828&r2=563829
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MinaHandler.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/MinaHandler.java Wed Aug  8 05:24:14 2007
@@ -64,7 +64,7 @@
 
     public void messageSent(IoSession ssn, Object obj)
     {
-        System.out.println("TX: " + obj);
+        // do nothing
     }
 
     public void exceptionCaught(IoSession ssn, Throwable e)
@@ -74,7 +74,7 @@
 
     public void sessionCreated(final IoSession ssn)
     {
-        System.out.println("created " + ssn);
+        // do nothing
     }
 
     public void sessionOpened(final IoSession ssn)

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Session.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Session.java?view=diff&rev=563829&r1=563828&r2=563829
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Session.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Session.java Wed Aug  8 05:24:14 2007
@@ -38,7 +38,6 @@
     // channel may be null
     Channel channel;
 
-    // XXX: incoming command count not used
     // incoming command count
     private long commandsIn = 0;
     // completed incoming commands
@@ -49,6 +48,11 @@
     private Map<Long,Method> commands = new HashMap<Long,Method>();
     private long mark = 0;
 
+    public Map<Long,Method> getOutstandingCommands()
+    {
+        return commands;
+    }
+
     public long getCommandsOut()
     {
         return commandsOut;
@@ -59,6 +63,11 @@
         return commandsIn;
     }
 
+    public long nextCommandId()
+    {
+        return commandsIn++;
+    }
+
     public RangeSet getProcessed()
     {
         return processed;
@@ -79,7 +88,7 @@
         processed.add(range);
     }
 
-    public void processed(Struct command)
+    public void processed(Method command)
     {
         processed(command.getId());
     }

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/SessionDelegate.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/SessionDelegate.java?view=diff&rev=563829&r1=563828&r2=563829
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/SessionDelegate.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/SessionDelegate.java Wed Aug  8 05:24:14 2007
@@ -45,6 +45,7 @@
             }
         }
         ssn.complete(excmp.getCumulativeExecutionMark());
+        System.out.println("outstanding commands: " + ssn.getOutstandingCommands());
     }
 
     @Override public void executionSync(Session ssn, ExecutionSync sync)

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Struct.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Struct.java?view=diff&rev=563829&r1=563828&r2=563829
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Struct.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Struct.java Wed Aug  8 05:24:14 2007
@@ -35,19 +35,6 @@
         return StructFactory.create(type);
     }
 
-    // XXX: command subclass?
-    private long id;
-
-    public final long getId()
-    {
-        return id;
-    }
-
-    void setId(long id)
-    {
-        this.id = id;
-    }
-
     abstract int getEncodedType();
 
 }

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ToyBroker.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ToyBroker.java?view=diff&rev=563829&r1=563828&r2=563829
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ToyBroker.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ToyBroker.java Wed Aug  8 05:24:14 2007
@@ -58,7 +58,6 @@
     {
         queues.put(qd.getQueue(), new LinkedList());
         System.out.println("declared queue: " + qd.getQueue());
-        ssn.processed(qd);
     }
 
     @Override public void messageTransfer(Session ssn, MessageTransfer xfr)

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ToyClient.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ToyClient.java?view=diff&rev=563829&r1=563828&r2=563829
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ToyClient.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/ToyClient.java Wed Aug  8 05:24:14 2007
@@ -40,7 +40,6 @@
                                    ssn.getCommand((int) l));
             }
         }
-        ssn.processed(reject);
     }
 
     public void headers(Session ssn, Struct ... headers)
@@ -85,6 +84,7 @@
         ssn.messageTransfer("fdsa", (short) 0, (short) 1);
         ssn.data("this should be rejected");
         ssn.end();
+        ssn.sync();
     }
 
 }