AbstractChannel.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 org.jboss.messaging.channel.interfaces.Channel; import org.jboss.messaging.interfaces.Consumer; import org.jboss.messaging.interfaces.MessageReference; /** * An abstract channel * * @author <a href="mailto:adrian@jboss.org">Adrian Brock</a> * @version $Revision: 1.1 $ */ public abstract class AbstractChannel implements Channel { // Constants ----------------------------------------------------- // Attributes ---------------------------------------------------- /** The consumer */ protected Consumer consumer; /** The channel handler */ protected ChannelHandler handler; // Static -------------------------------------------------------- // Constructors -------------------------------------------------- /** * Create a new AbstractChannel. * * @param consumer the consumer * @param handler the handler */ public AbstractChannel(Consumer consumer, ChannelHandler handler) { this.consumer = consumer; this.handler = handler; } // Public -------------------------------------------------------- // Channel implementation ---------------------------------------- public void send(MessageReference message) { handler.addMessage(message); } public MessageReference receive(long wait) { // There must be a message immediately available if (wait == -1) return handler.removeMessage(consumer); // Wait for a message handler.waitMessage(consumer, wait); return null; } public void close() { handler.stopWaitMessage(consumer); } // Protected ----------------------------------------------------- // Package Private ----------------------------------------------- // Private ------------------------------------------------------- // Inner Classes ------------------------------------------------- }
AbstractChannel.java |