org.jgroups.blocks
Class Request

java.lang.Object
  extended by org.jgroups.blocks.Request
All Implemented Interfaces:
java.util.concurrent.Future, RspCollector, NotifyingFuture
Direct Known Subclasses:
GroupRequest, UnicastRequest

public abstract class Request
extends java.lang.Object
implements RspCollector, NotifyingFuture

Abstract class for a unicast or multicast request

Author:
Bela Ban

Field Summary
protected  boolean block_for_results
           
protected  java.util.concurrent.locks.Condition completed
          Is set as soon as the request has received all required responses
protected  RequestCorrelator corr
           
protected  boolean done
           
protected  FutureListener listener
           
protected  java.util.concurrent.locks.Lock lock
           
protected static Log log
           
protected  RequestOptions options
           
protected  long req_id
           
protected static java.util.concurrent.atomic.AtomicLong REQUEST_ID
          To generate unique request IDs (see getRequestId())
protected  Message request_msg
           
 
Constructor Summary
Request(Message request, RequestCorrelator corr, RequestOptions options)
           
 
Method Summary
 boolean cancel(boolean mayInterruptIfRunning)
           
protected  void checkCompletion(java.util.concurrent.Future future)
           
 boolean execute()
           
 boolean getBlockForResults()
           
protected static long getRequestId()
          Generates a new unique request ID
 boolean getResponsesComplete()
           
 boolean isCancelled()
           
 boolean isDone()
           
abstract  void receiveResponse(java.lang.Object response_value, Address sender, boolean is_exception)
           
protected abstract  boolean responsesComplete()
           
protected  boolean responsesComplete(long timeout)
          This method runs with lock locked (called by execute()).
protected abstract  void sendRequest()
           
 void setBlockForResults(boolean block_for_results)
           
 NotifyingFuture setListener(FutureListener listener)
          Attaches a listener and returns the same future instance, to allow for 'building' futures.
 void setResponseFilter(RspFilter filter)
           
abstract  void siteUnreachable(short site)
           
abstract  void suspect(Address mbr)
           
 java.lang.String toString()
           
abstract  void viewChange(View new_view)
           
protected  boolean waitForResults(long timeout)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.jgroups.blocks.RspCollector
transportClosed
 
Methods inherited from interface java.util.concurrent.Future
get, get
 

Field Detail

log

protected static final Log log

REQUEST_ID

protected static final java.util.concurrent.atomic.AtomicLong REQUEST_ID
To generate unique request IDs (see getRequestId())


lock

protected final java.util.concurrent.locks.Lock lock

completed

protected final java.util.concurrent.locks.Condition completed
Is set as soon as the request has received all required responses


request_msg

protected final Message request_msg

corr

protected final RequestCorrelator corr

options

protected final RequestOptions options

done

protected volatile boolean done

block_for_results

protected boolean block_for_results

req_id

protected final long req_id

listener

protected volatile FutureListener listener
Constructor Detail

Request

public Request(Message request,
               RequestCorrelator corr,
               RequestOptions options)
Method Detail

setResponseFilter

public void setResponseFilter(RspFilter filter)

getBlockForResults

public boolean getBlockForResults()

setBlockForResults

public void setBlockForResults(boolean block_for_results)

setListener

public NotifyingFuture setListener(FutureListener listener)
Description copied from interface: NotifyingFuture
Attaches a listener and returns the same future instance, to allow for 'building' futures.

Specified by:
setListener in interface NotifyingFuture
Parameters:
listener - listener to attach
Returns:
the same future instance

execute

public boolean execute()
                throws java.lang.Exception
Throws:
java.lang.Exception

sendRequest

protected abstract void sendRequest()
                             throws java.lang.Exception
Throws:
java.lang.Exception

receiveResponse

public abstract void receiveResponse(java.lang.Object response_value,
                                     Address sender,
                                     boolean is_exception)
Specified by:
receiveResponse in interface RspCollector

viewChange

public abstract void viewChange(View new_view)
Specified by:
viewChange in interface RspCollector

suspect

public abstract void suspect(Address mbr)
Specified by:
suspect in interface RspCollector

siteUnreachable

public abstract void siteUnreachable(short site)
Specified by:
siteUnreachable in interface RspCollector

responsesComplete

protected abstract boolean responsesComplete()

getResponsesComplete

public boolean getResponsesComplete()

cancel

public boolean cancel(boolean mayInterruptIfRunning)
Specified by:
cancel in interface java.util.concurrent.Future

isCancelled

public boolean isCancelled()
Specified by:
isCancelled in interface java.util.concurrent.Future

isDone

public boolean isDone()
Specified by:
isDone in interface java.util.concurrent.Future

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

checkCompletion

protected void checkCompletion(java.util.concurrent.Future future)

getRequestId

protected static long getRequestId()
Generates a new unique request ID


responsesComplete

protected boolean responsesComplete(long timeout)
                             throws java.lang.InterruptedException
This method runs with lock locked (called by execute()).

Throws:
java.lang.InterruptedException

waitForResults

protected boolean waitForResults(long timeout)


Copyright © 1998-2012 Bela Ban / Red Hat. All Rights Reserved.