org.apache.cassandra.service
Class ReadCallback<T>

java.lang.Object
  extended by org.apache.cassandra.service.ReadCallback<T>
All Implemented Interfaces:
IAsyncCallback, IMessageCallback
Direct Known Subclasses:
DatacenterReadCallback

public class ReadCallback<T>
extends java.lang.Object
implements IAsyncCallback


Field Summary
protected  int blockfor
           
protected  SimpleCondition condition
           
protected static org.slf4j.Logger logger
           
protected  java.util.concurrent.atomic.AtomicInteger received
           
 IResponseResolver<T> resolver
           
 
Constructor Summary
ReadCallback(IResponseResolver<T> resolver, org.apache.cassandra.thrift.ConsistencyLevel consistencyLevel, IReadCommand command, java.util.List<java.net.InetAddress> endpoints)
          Constructor when response count has to be calculated and blocked for.
 
Method Summary
 void assureSufficientLiveNodes()
           
 int determineBlockFor(org.apache.cassandra.thrift.ConsistencyLevel consistencyLevel, java.lang.String table)
           
 T get()
           
 boolean isLatencyForSnitch()
           
protected  void maybeResolveForRepair()
          Check digests in the background on the Repair stage if we've received replies too all the requests we sent.
protected  java.util.List<java.net.InetAddress> preferredEndpoints(java.util.List<java.net.InetAddress> endpoints)
           
 void response(Message message)
           
 void response(ReadResponse result)
           
protected  boolean waitingFor(Message message)
           
protected  boolean waitingFor(ReadResponse response)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected static final org.slf4j.Logger logger

resolver

public final IResponseResolver<T> resolver

condition

protected final SimpleCondition condition

blockfor

protected final int blockfor

received

protected final java.util.concurrent.atomic.AtomicInteger received
Constructor Detail

ReadCallback

public ReadCallback(IResponseResolver<T> resolver,
                    org.apache.cassandra.thrift.ConsistencyLevel consistencyLevel,
                    IReadCommand command,
                    java.util.List<java.net.InetAddress> endpoints)
Constructor when response count has to be calculated and blocked for.

Method Detail

preferredEndpoints

protected java.util.List<java.net.InetAddress> preferredEndpoints(java.util.List<java.net.InetAddress> endpoints)

get

public T get()
      throws java.util.concurrent.TimeoutException,
             DigestMismatchException,
             java.io.IOException
Throws:
java.util.concurrent.TimeoutException
DigestMismatchException
java.io.IOException

response

public void response(Message message)
Specified by:
response in interface IAsyncCallback
Parameters:
message - response received.

waitingFor

protected boolean waitingFor(Message message)
Returns:
true if the message counts towards the blockfor threshold TODO turn the Message into a response so we don't need two versions of this method

waitingFor

protected boolean waitingFor(ReadResponse response)
Returns:
true if the response counts towards the blockfor threshold

response

public void response(ReadResponse result)

maybeResolveForRepair

protected void maybeResolveForRepair()
Check digests in the background on the Repair stage if we've received replies too all the requests we sent.


determineBlockFor

public int determineBlockFor(org.apache.cassandra.thrift.ConsistencyLevel consistencyLevel,
                             java.lang.String table)

assureSufficientLiveNodes

public void assureSufficientLiveNodes()
                               throws org.apache.cassandra.thrift.UnavailableException
Throws:
org.apache.cassandra.thrift.UnavailableException

isLatencyForSnitch

public boolean isLatencyForSnitch()
Specified by:
isLatencyForSnitch in interface IMessageCallback
Returns:
true if this callback is on the read path and its latency should be given as input to the dynamic snitch.


Copyright © 2011 The Apache Software Foundation