com.sun.grizzly.comet
Class CometTask

java.lang.Object
  extended by com.sun.grizzly.util.SelectionKeyAttachment
      extended by com.sun.grizzly.util.SelectedKeyAttachmentLogic
          extended by com.sun.grizzly.comet.CometTask
All Implemented Interfaces:
Runnable

public class CometTask
extends SelectedKeyAttachmentLogic
implements Runnable

A Task implementation that allow Grizzly ARP to invokeCometHandler CometHandler when new data (bytes) are available from the CometSelector.

Author:
Jeanfrancois Arcand, Gustav Trede

Field Summary
protected  AsyncProcessorTask asyncProcessorTask
          The AsyncProcessorTask
protected  boolean callInterrupt
          true if run() should call cometcontext.interrupt0
protected  CometContext cometContext
          The CometContext associated with this instance.
protected  CometHandler cometHandler
          The CometHandler associated with this task.
protected  boolean cometHandlerIsAsyncRegistered
          true if comethandler is registered for async IO in cometcontext.
protected  boolean upcoming_op_isread
          The current non blocking operation.
 
Fields inherited from class com.sun.grizzly.util.SelectionKeyAttachment
DEREGISTERED, timeout, UNLIMITED_TIMEOUT
 
Constructor Summary
CometTask()
           
CometTask(CometContext cometContext, CometHandler cometHandler)
          New CometTask.
 
Method Summary
 void doTask()
          Notify the CometHandler that bytes are available for read.
 AsyncProcessorTask getAsyncProcessorTask()
          returns the AsyncProcessorTask
 CometContext getCometContext()
          Return the CometContext associated with this instance.
 CometHandler getCometHandler()
          returns the CometHandler
 long getIdleTimeoutDelay()
          
 SelectionKey getSelectionKey()
          returns selectionkey
 void handleSelectedKey(SelectionKey selectionKey)
          
 boolean isComethandlerAsyncRegistered()
          returns true if the comethandler is registered for async io
 void release(SelectionKey selectionKey)
          This should never be called for for comet, due to we are nulling the attachment and completely overriding the selector.select logic.
called by grizzly when the selectionkey is canceled and its socket closed.
 void run()
          Performs doTask() or cometContext.interrupt0
 void setAsyncProcessorTask(AsyncProcessorTask asyncProcessorTask)
          sets the AsyncProcessorTask
 void setComethandlerIsAsyncRegistered(boolean cometHandlerIsAsyncRegistered)
          sets the comettask async interest flag in the comettask
 boolean timedOut(SelectionKey key)
          
 
Methods inherited from class com.sun.grizzly.util.SelectionKeyAttachment
getAttachment, getTimeout, setIdleTimeoutDelay, setTimeout
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cometContext

protected final CometContext cometContext
The CometContext associated with this instance.


cometHandler

protected final CometHandler cometHandler
The CometHandler associated with this task.


asyncProcessorTask

protected AsyncProcessorTask asyncProcessorTask
The AsyncProcessorTask


cometHandlerIsAsyncRegistered

protected volatile boolean cometHandlerIsAsyncRegistered
true if comethandler is registered for async IO in cometcontext. used to optmize: dont give simple read == -1 operations to thread pool


upcoming_op_isread

protected boolean upcoming_op_isread
The current non blocking operation.


callInterrupt

protected boolean callInterrupt
true if run() should call cometcontext.interrupt0

Constructor Detail

CometTask

public CometTask()

CometTask

public CometTask(CometContext cometContext,
                 CometHandler cometHandler)
New CometTask.

Method Detail

run

public void run()
Performs doTask() or cometContext.interrupt0

Specified by:
run in interface Runnable

getIdleTimeoutDelay

public long getIdleTimeoutDelay()

Overrides:
getIdleTimeoutDelay in class SelectionKeyAttachment

release

public void release(SelectionKey selectionKey)
This should never be called for for comet, due to we are nulling the attachment and completely overriding the selector.select logic.
called by grizzly when the selectionkey is canceled and its socket closed.

Overrides:
release in class SelectionKeyAttachment
Parameters:
selectionKey -

timedOut

public boolean timedOut(SelectionKey key)

Overrides:
timedOut in class SelectionKeyAttachment

handleSelectedKey

public void handleSelectedKey(SelectionKey selectionKey)

Specified by:
handleSelectedKey in class SelectedKeyAttachmentLogic

doTask

public void doTask()
            throws IOException
Notify the CometHandler that bytes are available for read. The notification will invoke all CometContext

Throws:
IOException

setComethandlerIsAsyncRegistered

public void setComethandlerIsAsyncRegistered(boolean cometHandlerIsAsyncRegistered)
sets the comettask async interest flag in the comettask

Parameters:
-

isComethandlerAsyncRegistered

public boolean isComethandlerAsyncRegistered()
returns true if the comethandler is registered for async io

Returns:

getCometContext

public CometContext getCometContext()
Return the CometContext associated with this instance.

Returns:
CometContext the CometContext associated with this instance.

getAsyncProcessorTask

public AsyncProcessorTask getAsyncProcessorTask()
returns the AsyncProcessorTask

Returns:

setAsyncProcessorTask

public void setAsyncProcessorTask(AsyncProcessorTask asyncProcessorTask)
sets the AsyncProcessorTask

Parameters:
{@link - AsyncProcessorTask }

getSelectionKey

public SelectionKey getSelectionKey()
returns selectionkey

Returns:

getCometHandler

public CometHandler getCometHandler()
returns the CometHandler

Returns:
CometHandler


Copyright © 2009 SUN Microsystems. All Rights Reserved.