org.jgroups.blocks

## Class UnicastRequest<T>

- java.lang.Object
- - org.jgroups.blocks.Request
  - - org.jgroups.blocks.UnicastRequest<T>

All Implemented Interfaces:
  java.util.concurrent.Future, RspCollector, Command, NotifyingFuture

    public class UnicastRequest<T>
    extends Request

Sends a request to a single target destination

Author:
  Bela Ban

### Field Summary

Fields
`protected Rsp<T>` `result`
`protected Address` `target`

### Fields inherited from class org.jgroups.blocks.Request

`block_for_results, completed, corr, done, GET_ABS_MAJORITY, GET_ALL, GET_FIRST, GET_MAJORITY, GET_N, GET_NONE, listener, lock, log, options, req_id, REQUEST_ID, request_msg, transport`

### Constructor Summary

Constructors
Constructor and Description
`UnicastRequest(Message m, RequestCorrelator corr, Address target, RequestOptions options)`
`UnicastRequest(Message m, Transport transport, Address target, RequestOptions options)`

### Method Summary

Methods
`T` `get()`
`T` `get(long timeout, java.util.concurrent.TimeUnit unit)`
`Rsp` `getResult()`
`void` `receiveResponse(java.lang.Object response_value, Address sender)` Callback (called by RequestCorrelator or Transport).
`protected boolean` `responsesComplete()`
`protected void` `sendRequest()`
`void` `suspect(Address suspected_member)` Callback (called by RequestCorrelator or Transport).
`java.lang.String` `toString()`
`void` `viewChange(View new_view)` If the target address is not a member of the new view, we'll mark the response as not received and unblock the caller of execute()

### Methods inherited from class org.jgroups.blocks.Request

`cancel, checkCompletion, execute, getBlockForResults, getRequestId, getResponsesComplete, isCancelled, isDone, modeToString, responsesComplete, setBlockForResults, setListener, setResponseFilter, waitForResults`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Field Detail

#### result

    protected final Rsp<T> result

#### target

    protected final Address target

### Constructor Detail

#### UnicastRequest

    public UnicastRequest(Message m,
                  RequestCorrelator corr,
                  Address target,
                  RequestOptions options)

Parameters:
  `timeout` - Time to wait for responses (ms). A value of <= 0 means wait indefinitely (e.g. if a suspicion service is available; timeouts are not needed).

#### UnicastRequest

    public UnicastRequest(Message m,
                  Transport transport,
                  Address target,
                  RequestOptions options)

Parameters:
  `timeout` - Time to wait for responses (ms). A value of <= 0 means wait indefinitely (e.g. if a suspicion service is available; timeouts are not needed).

### Method Detail

#### sendRequest

    protected void sendRequest()
                        throws java.lang.Exception

Specified by:
  `sendRequest` in class `Request`
Throws:
  `java.lang.Exception`

#### receiveResponse

    public void receiveResponse(java.lang.Object response_value,
                       Address sender)

Callback (called by RequestCorrelator or Transport). Adds a response to the response table. When all responses have been received, `execute()` returns.

Specified by:
  `receiveResponse` in interface `RspCollector`
Specified by:
  `receiveResponse` in class `Request`

#### suspect

    public void suspect(Address suspected_member)

Callback (called by RequestCorrelator or Transport). Report to `GroupRequest` that a member is reported as faulty (suspected). This method would probably be called when getting a suspect message from a failure detector (where available). It is used to exclude faulty members from the response list.

Specified by:
  `suspect` in interface `RspCollector`
Specified by:
  `suspect` in class `Request`

#### viewChange

    public void viewChange(View new_view)

If the target address is not a member of the new view, we'll mark the response as not received and unblock the caller of execute()

Specified by:
  `viewChange` in interface `RspCollector`
Specified by:
  `viewChange` in class `Request`

#### getResult

    public Rsp getResult()

#### get

    public T get()
          throws java.lang.InterruptedException,
                 java.util.concurrent.ExecutionException

Throws:
  `java.lang.InterruptedException`
  `java.util.concurrent.ExecutionException`

#### get

    public T get(long timeout,
        java.util.concurrent.TimeUnit unit)
          throws java.lang.InterruptedException,
                 java.util.concurrent.ExecutionException,
                 java.util.concurrent.TimeoutException

Throws:
  `java.lang.InterruptedException`
  `java.util.concurrent.ExecutionException`
  `java.util.concurrent.TimeoutException`

#### toString

    public java.lang.String toString()

Overrides:
  `toString` in class `Request`

#### responsesComplete

    protected boolean responsesComplete()

Specified by:
  `responsesComplete` in class `Request`