org.jboss.messaging.core.client.impl
Class ClientConsumerImpl

java.lang.Object
  extended by org.jboss.messaging.core.client.impl.ClientConsumerImpl
All Implemented Interfaces:
ClientConsumer, ClientConsumerInternal

public class ClientConsumerImpl
extends java.lang.Object
implements ClientConsumerInternal

Version:
$Revision: 3603 $ $Id: ClientConsumerImpl.java 3603 2008-01-21 18:49:20Z timfox $
Author:
Tim Fox, Ovidiu Feodorov, Jeff Mesnil, Clebert Suconic, Andy Taylor

Field Summary
static long CLOSE_TIMEOUT_MILLISECONDS
           
static int NUM_PRIORITIES
           
 
Constructor Summary
ClientConsumerImpl(ClientSessionInternal session, long id, int clientWindowSize, int ackBatchSize, TokenBucketLimiter rateLimiter, java.util.concurrent.Executor executor, Channel channel, java.io.File directory, boolean preAcknowledge)
           
 
Method Summary
 void acknowledge(ClientMessage message)
           
 void cleanUp()
           
 void clear()
           
 void close()
           
 void flowControl(int messageBytes, boolean discountSlowConsumer)
          flow control is synchornized because of LargeMessage and streaming.
 void flushAcks()
           
 int getBufferSize()
           
 int getClientWindowSize()
           
 long getID()
           
 java.lang.Exception getLastException()
           
 MessageHandler getMessageHandler()
           
 void handleLargeMessage(SessionReceiveMessage packet)
           
 void handleLargeMessageContinuation(SessionReceiveContinuationMessage chunk)
           
 void handleMessage(ClientMessageInternal message)
           
 boolean isClosed()
           
 boolean isFileConsumer()
           
 ClientMessage receive()
           
 ClientMessage receive(long timeout)
           
 ClientMessage receiveImmediate()
           
 void setMessageHandler(MessageHandler theHandler)
           
 void start()
           
 void stop()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLOSE_TIMEOUT_MILLISECONDS

public static final long CLOSE_TIMEOUT_MILLISECONDS
See Also:
Constant Field Values

NUM_PRIORITIES

public static final int NUM_PRIORITIES
See Also:
Constant Field Values
Constructor Detail

ClientConsumerImpl

public ClientConsumerImpl(ClientSessionInternal session,
                          long id,
                          int clientWindowSize,
                          int ackBatchSize,
                          TokenBucketLimiter rateLimiter,
                          java.util.concurrent.Executor executor,
                          Channel channel,
                          java.io.File directory,
                          boolean preAcknowledge)
Method Detail

receive

public ClientMessage receive(long timeout)
                      throws MessagingException
Specified by:
receive in interface ClientConsumer
Throws:
MessagingException

receive

public ClientMessage receive()
                      throws MessagingException
Specified by:
receive in interface ClientConsumer
Throws:
MessagingException

receiveImmediate

public ClientMessage receiveImmediate()
                               throws MessagingException
Specified by:
receiveImmediate in interface ClientConsumer
Throws:
MessagingException

getMessageHandler

public MessageHandler getMessageHandler()
                                 throws MessagingException
Specified by:
getMessageHandler in interface ClientConsumer
Throws:
MessagingException

setMessageHandler

public void setMessageHandler(MessageHandler theHandler)
                       throws MessagingException
Specified by:
setMessageHandler in interface ClientConsumer
Throws:
MessagingException

close

public void close()
           throws MessagingException
Specified by:
close in interface ClientConsumer
Throws:
MessagingException

cleanUp

public void cleanUp()
Specified by:
cleanUp in interface ClientConsumerInternal

isClosed

public boolean isClosed()
Specified by:
isClosed in interface ClientConsumer

isFileConsumer

public boolean isFileConsumer()
Specified by:
isFileConsumer in interface ClientConsumerInternal

stop

public void stop()
          throws MessagingException
Specified by:
stop in interface ClientConsumerInternal
Throws:
MessagingException

start

public void start()
Specified by:
start in interface ClientConsumerInternal

getLastException

public java.lang.Exception getLastException()
Specified by:
getLastException in interface ClientConsumer

getID

public long getID()
Specified by:
getID in interface ClientConsumerInternal

handleMessage

public void handleMessage(ClientMessageInternal message)
                   throws java.lang.Exception
Specified by:
handleMessage in interface ClientConsumerInternal
Throws:
java.lang.Exception

handleLargeMessage

public void handleLargeMessage(SessionReceiveMessage packet)
                        throws java.lang.Exception
Specified by:
handleLargeMessage in interface ClientConsumerInternal
Throws:
java.lang.Exception

handleLargeMessageContinuation

public void handleLargeMessageContinuation(SessionReceiveContinuationMessage chunk)
                                    throws java.lang.Exception
Specified by:
handleLargeMessageContinuation in interface ClientConsumerInternal
Throws:
java.lang.Exception

clear

public void clear()
Specified by:
clear in interface ClientConsumerInternal

getClientWindowSize

public int getClientWindowSize()
Specified by:
getClientWindowSize in interface ClientConsumerInternal

getBufferSize

public int getBufferSize()
Specified by:
getBufferSize in interface ClientConsumerInternal

acknowledge

public void acknowledge(ClientMessage message)
                 throws MessagingException
Specified by:
acknowledge in interface ClientConsumerInternal
Throws:
MessagingException

flushAcks

public void flushAcks()
               throws MessagingException
Specified by:
flushAcks in interface ClientConsumerInternal
Throws:
MessagingException

flowControl

public void flowControl(int messageBytes,
                        boolean discountSlowConsumer)
                 throws MessagingException
flow control is synchornized because of LargeMessage and streaming. LargeMessageBuffer will call flowcontrol here, while other handleMessage will also be calling flowControl. So, this operation needs to be atomic.

Specified by:
flowControl in interface ClientConsumerInternal
Throws:
MessagingException


Copyright © 2006 JBoss Inc. All Rights Reserved.