| | |
| | | this.clientContext = clientContext; |
| | | } |
| | | |
| | | /** |
| | | * Abandons the request sent by the client. |
| | | * |
| | | * @param context |
| | | * @param request |
| | | * @throws UnsupportedOperationException |
| | | */ |
| | | public void handleAbandon(final Integer context, final AbandonRequest request) |
| | | throws UnsupportedOperationException { |
| | | // Check if we have any concurrent operation with this message id. |
| | |
| | | // No response is needed. |
| | | } |
| | | |
| | | /** |
| | | * Adds the request sent by the client. |
| | | * |
| | | * @param context |
| | | * @param request |
| | | * @param handler |
| | | * @param intermediateResponseHandler |
| | | * @throws UnsupportedOperationException |
| | | */ |
| | | public void handleAdd(final Integer context, final AddRequest request, |
| | | final IntermediateResponseHandler intermediateResponseHandler, |
| | | final ResultHandler<? super Result> handler) throws UnsupportedOperationException { |
| | | final ResultHandler<Result> handler) throws UnsupportedOperationException { |
| | | Result result = null; |
| | | final AbandonableRequest abReq = new AbandonableRequest(request); |
| | | requestsInProgress.put(context, abReq); |
| | |
| | | handler.handleResult(result); |
| | | } |
| | | |
| | | /** |
| | | * @param context |
| | | * @param version |
| | | * @param request |
| | | * @param resultHandler |
| | | * @param intermediateResponseHandler |
| | | * @throws UnsupportedOperationException |
| | | */ |
| | | public void handleBind(final Integer context, final int version, final BindRequest request, |
| | | final IntermediateResponseHandler intermediateResponseHandler, |
| | | final ResultHandler<? super BindResult> resultHandler) |
| | | throws UnsupportedOperationException { |
| | | final ResultHandler<BindResult> resultHandler) throws UnsupportedOperationException { |
| | | // TODO: all bind types. |
| | | final AbandonableRequest abReq = new AbandonableRequest(request); |
| | | requestsInProgress.put(context, abReq); |
| | |
| | | requestsInProgress.remove(context); |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | public void handleConnectionClosed(final Integer context, final UnbindRequest request) { |
| | | close(); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | public void handleConnectionDisconnected(ResultCode resultCode, String message) { |
| | | close(); |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | public void handleConnectionError(final Throwable error) { |
| | | close(); |
| | | } |
| | | |
| | | /** |
| | | * @param context |
| | | * @param request |
| | | * @param resultHandler |
| | | * @param intermediateResponseHandler |
| | | * @throws UnsupportedOperationException |
| | | */ |
| | | public void handleCompare(final Integer context, final CompareRequest request, |
| | | final IntermediateResponseHandler intermediateResponseHandler, |
| | | final ResultHandler<? super CompareResult> resultHandler) |
| | | final ResultHandler<CompareResult> resultHandler) |
| | | throws UnsupportedOperationException { |
| | | CompareResult result = null; |
| | | final AbandonableRequest abReq = new AbandonableRequest(request); |
| | |
| | | requestsInProgress.remove(context); |
| | | } |
| | | |
| | | /** |
| | | * @param context |
| | | * @param request |
| | | * @param handler |
| | | * @param intermediateResponseHandler |
| | | * @throws UnsupportedOperationException |
| | | */ |
| | | public void handleDelete(final Integer context, final DeleteRequest request, |
| | | final IntermediateResponseHandler intermediateResponseHandler, |
| | | final ResultHandler<? super Result> handler) throws UnsupportedOperationException { |
| | | final ResultHandler<Result> handler) throws UnsupportedOperationException { |
| | | Result result = null; |
| | | final AbandonableRequest abReq = new AbandonableRequest(request); |
| | | requestsInProgress.put(context, abReq); |
| | |
| | | requestsInProgress.remove(context); |
| | | } |
| | | |
| | | /** |
| | | * @param context |
| | | * @param request |
| | | * @param resultHandler |
| | | * @param intermediateResponseHandler |
| | | * @throws UnsupportedOperationException |
| | | */ |
| | | public <R extends ExtendedResult> void handleExtendedRequest(final Integer context, |
| | | final ExtendedRequest<R> request, |
| | | final IntermediateResponseHandler intermediateResponseHandler, |
| | | final ResultHandler<? super R> resultHandler) throws UnsupportedOperationException { |
| | | final ResultHandler<R> resultHandler) throws UnsupportedOperationException { |
| | | if (request.getOID().equals(StartTLSExtendedRequest.OID)) { |
| | | final R result = |
| | | request.getResultDecoder().newExtendedErrorResult(ResultCode.SUCCESS, "", |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @param context |
| | | * @param request |
| | | * @param resultHandler |
| | | * @param intermediateResponseHandler |
| | | * @throws UnsupportedOperationException |
| | | */ |
| | | public void handleModify(final Integer context, final ModifyRequest request, |
| | | final IntermediateResponseHandler intermediateResponseHandler, |
| | | final ResultHandler<? super Result> resultHandler) |
| | | throws UnsupportedOperationException { |
| | | final ResultHandler<Result> resultHandler) throws UnsupportedOperationException { |
| | | // TODO: |
| | | } |
| | | |
| | | /** |
| | | * @param context |
| | | * @param request |
| | | * @param resultHandler |
| | | * @param intermediateResponseHandler |
| | | * @throws UnsupportedOperationException |
| | | */ |
| | | public void handleModifyDN(final Integer context, final ModifyDNRequest request, |
| | | final IntermediateResponseHandler intermediateResponseHandler, |
| | | final ResultHandler<? super Result> resultHandler) |
| | | throws UnsupportedOperationException { |
| | | final ResultHandler<Result> resultHandler) throws UnsupportedOperationException { |
| | | // TODO |
| | | } |
| | | |
| | | /** |
| | | * @param request |
| | | * @param intermediateResponseHandler |
| | | * @param resultHandler |
| | | * @param context |
| | | * @throws UnsupportedOperationException |
| | | */ |
| | | public void handleSearch(final Integer context, final SearchRequest request, |
| | | final IntermediateResponseHandler intermediateResponseHandler, |
| | | final SearchResultHandler resultHandler) throws UnsupportedOperationException { |
| | |
| | | private volatile boolean isRunning; |
| | | |
| | | // The mapping between the message id and the requests the server is |
| | | // currently |
| | | // handling. |
| | | // currently handling. |
| | | private final ConcurrentHashMap<Integer, AbandonableRequest> requestsInProgress = |
| | | new ConcurrentHashMap<Integer, AbandonableRequest>(); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @param context |
| | | * @return |
| | | */ |
| | | public ServerConnection<Integer> handleAccept(final LDAPClientContext context) { |
| | | return new LDAPServerConnection(context); |
| | | } |