summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2007-01-24 19:52:28 +0000
committerRafael H. Schloming <rhs@apache.org>2007-01-24 19:52:28 +0000
commitda2b073621927734685d5753b57864e1af45c53f (patch)
tree53d1d0ef1a68a9227fa3b7dfe0b4e93a1acac912
parent098b3212584da1d9bdb8718c8c9e82e796d904a5 (diff)
downloadqpid-python-da2b073621927734685d5753b57864e1af45c53f.tar.gz
Filled in MessageRecoverHandler.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/qpid.0-9@499551 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/handler/MessageRecoverHandler.java21
1 files changed, 18 insertions, 3 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/handler/MessageRecoverHandler.java b/java/broker/src/main/java/org/apache/qpid/server/handler/MessageRecoverHandler.java
index 84460035e6..33a3b0735f 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/handler/MessageRecoverHandler.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/handler/MessageRecoverHandler.java
@@ -20,9 +20,12 @@
*/
package org.apache.qpid.server.handler;
+import org.apache.log4j.Logger;
+
import org.apache.qpid.AMQException;
import org.apache.qpid.framing.MessageRecoverBody;
import org.apache.qpid.protocol.AMQMethodEvent;
+import org.apache.qpid.server.AMQChannel;
import org.apache.qpid.server.exchange.ExchangeRegistry;
import org.apache.qpid.server.protocol.AMQProtocolSession;
import org.apache.qpid.server.queue.QueueRegistry;
@@ -31,6 +34,8 @@ import org.apache.qpid.server.state.StateAwareMethodListener;
public class MessageRecoverHandler implements StateAwareMethodListener<MessageRecoverBody>
{
+ private static final Logger _logger = Logger.getLogger(MessageRecoverHandler.class);
+
private static MessageRecoverHandler _instance = new MessageRecoverHandler();
public static MessageRecoverHandler getInstance()
@@ -39,13 +44,23 @@ public class MessageRecoverHandler implements StateAwareMethodListener<MessageRe
}
private MessageRecoverHandler() {}
-
-
+
public void methodReceived (AMQProtocolSession protocolSession,
AMQMethodEvent<MessageRecoverBody> evt)
throws AMQException
{
- // TODO
+ _logger.debug("Recover received on protocol session " + protocolSession + " and channel " + evt.getChannelId());
+ AMQChannel channel = protocolSession.getChannel(evt.getChannelId());
+ if (channel == null)
+ {
+ throw new AMQException("Unknown channel " + evt.getChannelId());
+ }
+ MessageRecoverBody body = evt.getMethod();
+ if (body.requeue) {
+ channel.requeue();
+ } else {
+ channel.resend(protocolSession);
+ }
}
}