
org.elasticsearch.action.support.HandledTransportAction Maven / Gradle / Ivy
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
package org.elasticsearch.action.support;
import org.elasticsearch.action.ActionRequest;
import org.elasticsearch.action.ActionResponse;
import org.elasticsearch.common.io.stream.Writeable;
import org.elasticsearch.tasks.Task;
import org.elasticsearch.threadpool.ThreadPool;
import org.elasticsearch.transport.TransportChannel;
import org.elasticsearch.transport.TransportRequestHandler;
import org.elasticsearch.transport.TransportService;
/**
* A TransportAction that self registers a handler into the transport service
*/
public abstract class HandledTransportAction extends TransportAction<
Request,
Response> {
protected HandledTransportAction(
String actionName,
TransportService transportService,
ActionFilters actionFilters,
Writeable.Reader requestReader
) {
this(actionName, true, transportService, actionFilters, requestReader);
}
protected HandledTransportAction(
String actionName,
TransportService transportService,
ActionFilters actionFilters,
Writeable.Reader requestReader,
String executor
) {
this(actionName, true, transportService, actionFilters, requestReader, executor);
}
protected HandledTransportAction(
String actionName,
boolean canTripCircuitBreaker,
TransportService transportService,
ActionFilters actionFilters,
Writeable.Reader requestReader
) {
this(actionName, canTripCircuitBreaker, transportService, actionFilters, requestReader, ThreadPool.Names.SAME);
}
protected HandledTransportAction(
String actionName,
boolean canTripCircuitBreaker,
TransportService transportService,
ActionFilters actionFilters,
Writeable.Reader requestReader,
String executor
) {
super(actionName, actionFilters, transportService.getLocalNodeConnection(), transportService.getTaskManager());
transportService.registerRequestHandler(actionName, executor, false, canTripCircuitBreaker, requestReader, new TransportHandler());
}
class TransportHandler implements TransportRequestHandler {
@Override
public final void messageReceived(final Request request, final TransportChannel channel, Task task) {
// We already got the task created on the network layer - no need to create it again on the transport layer
execute(task, request, new ChannelActionListener<>(channel, actionName, request));
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy