voldemort.store.socket.clientrequest
Interface ClientRequest<T>

Type Parameters:
T - Type of data that is returned by the request
All Known Implementing Classes:
AbstractClientRequest, AbstractStoreClientRequest, BlockingClientRequest, DeleteClientRequest, GetAllClientRequest, GetClientRequest, GetVersionsClientRequest, ProtocolNegotiatorClientRequest, PutClientRequest

public interface ClientRequest<T>

ClientRequest represents a single request/response combination to a remote Voldemort instance -- a new instance is created for each request to the server.

This class is used to support both blocking and non-blocking communication with a remote server.


Method Summary
 void complete()
          Called by the ClientRequestExecutor once all the processing (normal or abnormal) has occurred on the ClientRequest object.
 boolean formatRequest(java.io.DataOutputStream outputStream)
          This eventually calls into a nested RequestFormat instance's writeXxx method.
 T getResult()
          Once completed has been called, this will return the result of the request or thrown an error if the request wasn't completed.
 boolean isComplete()
          Returns true if complete() was called.
 boolean isCompleteResponse(java.nio.ByteBuffer buffer)
          isCompleteResponse determines if the response that the ClientRequestExecutor's received thus far is inclusive of the entire response.
 boolean isTimedOut()
          Returns true if ClientRequestExecutor timed out.
 void parseResponse(java.io.DataInputStream inputStream)
          Parses the response from the server to turn it into a result.
 void timeOut()
          Called by the ClientRequestExecutor after it has timed out.
 

Method Detail

getResult

T getResult()
            throws VoldemortException,
                   java.io.IOException
Once completed has been called, this will return the result of the request or thrown an error if the request wasn't completed.

Returns:
Result or an exception is thrown if the request failed
Throws:
VoldemortException
java.io.IOException

formatRequest

boolean formatRequest(java.io.DataOutputStream outputStream)
This eventually calls into a nested RequestFormat instance's writeXxx method. The ClientRequest actually buffers all I/O, so the data written via formatRequest is actually inserted into a ByteBuffer which is later sent over the wire to the server.

This is used internally by the ClientRequest logic and should not be invoked by users of the sub-system.

Parameters:
outputStream - Write the request to this output stream

isCompleteResponse

boolean isCompleteResponse(java.nio.ByteBuffer buffer)
isCompleteResponse determines if the response that the ClientRequestExecutor's received thus far is inclusive of the entire response. This relies on the RequestFormat instance's isCompleteXxxResponse methods.

This is used internally by the ClientRequest logic and should not be invoked by users of the sub-system.

Parameters:
buffer - ByteBuffer containing the data received thus far
Returns:
True if the buffer contains the complete response, false if it only includes part of the response.

parseResponse

void parseResponse(java.io.DataInputStream inputStream)
Parses the response from the server to turn it into a result. If this causes an application-level error to arise, it should not be thrown here, but instead stored until getResult() is called.

This is used internally by the ClientRequest logic and should not be invoked by users of the sub-system.

Parameters:
inputStream - InputStream from which to read the response

complete

void complete()
Called by the ClientRequestExecutor once all the processing (normal or abnormal) has occurred on the ClientRequest object. This exists mainly to implement blocking operations whereby we need to have a mechanism to unblock the caller waiting for the response.

This is used internally by the ClientRequest logic and should not be invoked by users of the sub-system.


isComplete

boolean isComplete()
Returns true if complete() was called.

Returns:
true if completed, false otherwise

timeOut

void timeOut()
Called by the ClientRequestExecutor after it has timed out. This is different from the complete call, since the timeout event needs to be notified to the caller in a special way.

This is used internally by the ClientRequest logic and should not be invoked by users of the sub-system.


isTimedOut

boolean isTimedOut()
Returns true if ClientRequestExecutor timed out.

Returns:
true if timed out, false otherwise


Jay Kreps, Roshan Sumbaly, Alex Feinberg, Bhupesh Bansal, Lei Gao, Chinmay Soman, Vinoth Chandar, Zhongjie Wu