| | |
| | | * CDDL HEADER END |
| | | * |
| | | * |
| | | * Copyright 2009 Sun Microsystems, Inc. |
| | | * Copyright 2009-2010 Sun Microsystems, Inc. |
| | | */ |
| | | |
| | | package com.sun.opends.sdk.ldap; |
| | |
| | | import org.opends.sdk.responses.IntermediateResponse; |
| | | import org.opends.sdk.responses.Result; |
| | | |
| | | import com.sun.opends.sdk.util.AbstractFutureResult; |
| | | import com.sun.opends.sdk.util.AsynchronousFutureResult; |
| | | |
| | | |
| | | |
| | |
| | | * The type of result returned by this future. |
| | | */ |
| | | abstract class AbstractLDAPFutureResultImpl<S extends Result> extends |
| | | AbstractFutureResult<S> implements FutureResult<S>, |
| | | IntermediateResponseHandler |
| | | AsynchronousFutureResult<S> implements IntermediateResponseHandler |
| | | { |
| | | private final AsynchronousConnection connection; |
| | | |
| | | private final int messageID; |
| | | private final int requestID; |
| | | |
| | | private IntermediateResponseHandler intermediateResponseHandler; |
| | | |
| | |
| | | |
| | | |
| | | |
| | | AbstractLDAPFutureResultImpl(final int messageID, |
| | | AbstractLDAPFutureResultImpl(final int requestID, |
| | | final ResultHandler<? super S> resultHandler, |
| | | final IntermediateResponseHandler intermediateResponseHandler, |
| | | final AsynchronousConnection connection) |
| | | { |
| | | super(resultHandler); |
| | | this.messageID = messageID; |
| | | this.requestID = requestID; |
| | | this.connection = connection; |
| | | this.intermediateResponseHandler = intermediateResponseHandler; |
| | | this.timestamp = System.currentTimeMillis(); |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public final int getRequestID() |
| | | { |
| | | return messageID; |
| | | return requestID; |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public final boolean handleIntermediateResponse( |
| | | final IntermediateResponse response) |
| | | { |
| | |
| | | protected final ErrorResultException handleCancelRequest( |
| | | final boolean mayInterruptIfRunning) |
| | | { |
| | | connection.abandon(Requests.newAbandonRequest(messageID)); |
| | | connection.abandon(Requests.newAbandonRequest(requestID)); |
| | | return null; |
| | | } |
| | | |
| | |
| | | @Override |
| | | protected void toString(final StringBuilder sb) |
| | | { |
| | | sb.append(" messageID = "); |
| | | sb.append(messageID); |
| | | sb.append(" requestID = "); |
| | | sb.append(requestID); |
| | | sb.append(" timestamp = "); |
| | | sb.append(timestamp); |
| | | super.toString(sb); |
| | |
| | | |
| | | final void adaptErrorResult(final Result result) |
| | | { |
| | | final S errorResult = newErrorResult(result.getResultCode(), result |
| | | .getDiagnosticMessage(), result.getCause()); |
| | | final S errorResult = newErrorResult(result.getResultCode(), |
| | | result.getDiagnosticMessage(), result.getCause()); |
| | | setResultOrError(errorResult); |
| | | } |
| | | |