| SharedChannelHandler.java |
/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.messaging.channel.plugins.handler;
import java.util.ArrayList;
import org.jboss.messaging.interfaces.*;
import org.jboss.messaging.interfaces.Consumer;
import org.jboss.messaging.interfaces.MessageReference;
/**
* A channel handler that has multiple consumers
*
* @author <a href="mailto:adrian@jboss.org">Adrian Brock</a>
* @version $Revision: 1.1 $
*/
public class SharedChannelHandler extends AbstractChannelHandler
{
// Constants -----------------------------------------------------
// Attributes ----------------------------------------------------
/** The waiting consumers */
private ArrayList consumers = new ArrayList();
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
/**
* Create a new SharedChannelHandler.
*
* @param messages the message set
*/
public SharedChannelHandler(MessageSet messages)
{
super(messages);
}
// Public --------------------------------------------------------
// AbstractChannelHandler overrides ------------------------------
protected void addConsumer(Consumer consumer, long wait)
{
consumers.add(consumer);
}
protected Consumer findConsumer(MessageReference reference)
{
for (int i = 0; i < consumers.size(); ++i)
{
Consumer consumer = (Consumer) consumers.get(i);
if (consumer.accepts(reference, true))
{
consumers.remove(i);
return consumer;
}
}
return null;
}
protected void removeConsumer(Consumer consumer)
{
consumers.remove(consumer);
}
// Protected -----------------------------------------------------
// Package Private -----------------------------------------------
// Private -------------------------------------------------------
// Inner Classes -------------------------------------------------
}
| SharedChannelHandler.java |