命名优化
This commit is contained in:
@@ -42,7 +42,7 @@ public class Context {
|
|||||||
protected final int bufferCapacity;
|
protected final int bufferCapacity;
|
||||||
|
|
||||||
//服务的根Servlet
|
//服务的根Servlet
|
||||||
protected final DispatcherServlet prepare;
|
protected final DispatcherServlet dispatcher;
|
||||||
|
|
||||||
//日志Logger
|
//日志Logger
|
||||||
protected final Logger logger;
|
protected final Logger logger;
|
||||||
@@ -80,12 +80,12 @@ public class Context {
|
|||||||
public Context(ContextConfig config) {
|
public Context(ContextConfig config) {
|
||||||
this(config.serverStartTime, config.logger, config.workExecutor, config.sslBuilder, config.sslContext,
|
this(config.serverStartTime, config.logger, config.workExecutor, config.sslBuilder, config.sslContext,
|
||||||
config.bufferCapacity, config.maxConns, config.maxBody, config.charset, config.serverAddress, config.resourceFactory,
|
config.bufferCapacity, config.maxConns, config.maxBody, config.charset, config.serverAddress, config.resourceFactory,
|
||||||
config.prepare, config.aliveTimeoutSeconds, config.readTimeoutSeconds, config.writeTimeoutSeconds);
|
config.dispatcher, config.aliveTimeoutSeconds, config.readTimeoutSeconds, config.writeTimeoutSeconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Context(long serverStartTime, Logger logger, ExecutorService workExecutor, SSLBuilder sslBuilder, SSLContext sslContext,
|
public Context(long serverStartTime, Logger logger, ExecutorService workExecutor, SSLBuilder sslBuilder, SSLContext sslContext,
|
||||||
int bufferCapacity, final int maxConns, final int maxBody, Charset charset, InetSocketAddress address,
|
int bufferCapacity, final int maxConns, final int maxBody, Charset charset, InetSocketAddress address,
|
||||||
ResourceFactory resourceFactory, DispatcherServlet prepare, int aliveTimeoutSeconds, int readTimeoutSeconds, int writeTimeoutSeconds) {
|
ResourceFactory resourceFactory, DispatcherServlet dispatcher, int aliveTimeoutSeconds, int readTimeoutSeconds, int writeTimeoutSeconds) {
|
||||||
this.serverStartTime = serverStartTime;
|
this.serverStartTime = serverStartTime;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.workExecutor = workExecutor;
|
this.workExecutor = workExecutor;
|
||||||
@@ -96,7 +96,7 @@ public class Context {
|
|||||||
this.maxBody = maxBody;
|
this.maxBody = maxBody;
|
||||||
this.charset = StandardCharsets.UTF_8.equals(charset) ? null : charset;
|
this.charset = StandardCharsets.UTF_8.equals(charset) ? null : charset;
|
||||||
this.serverAddress = address;
|
this.serverAddress = address;
|
||||||
this.prepare = prepare;
|
this.dispatcher = dispatcher;
|
||||||
this.resourceFactory = resourceFactory;
|
this.resourceFactory = resourceFactory;
|
||||||
this.aliveTimeoutSeconds = aliveTimeoutSeconds;
|
this.aliveTimeoutSeconds = aliveTimeoutSeconds;
|
||||||
this.readTimeoutSeconds = readTimeoutSeconds;
|
this.readTimeoutSeconds = readTimeoutSeconds;
|
||||||
@@ -112,11 +112,11 @@ public class Context {
|
|||||||
|
|
||||||
protected void executeDispatch(Request request, Response response) {
|
protected void executeDispatch(Request request, Response response) {
|
||||||
if (workHashExecutor != null) {
|
if (workHashExecutor != null) {
|
||||||
workHashExecutor.execute(request.getHashid(), () -> prepare.prepare(request, response));
|
workHashExecutor.execute(request.getHashid(), () -> dispatcher.dispatch(request, response));
|
||||||
} else if (workExecutor != null) {
|
} else if (workExecutor != null) {
|
||||||
workExecutor.execute(() -> prepare.prepare(request, response));
|
workExecutor.execute(() -> dispatcher.dispatch(request, response));
|
||||||
} else {
|
} else {
|
||||||
prepare.prepare(request, response);
|
dispatcher.dispatch(request, response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -245,7 +245,7 @@ public class Context {
|
|||||||
public int bufferCapacity;
|
public int bufferCapacity;
|
||||||
|
|
||||||
//服务的根Servlet
|
//服务的根Servlet
|
||||||
public DispatcherServlet prepare;
|
public DispatcherServlet dispatcher;
|
||||||
|
|
||||||
//服务的监听地址
|
//服务的监听地址
|
||||||
public InetSocketAddress serverAddress;
|
public InetSocketAddress serverAddress;
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import java.util.concurrent.atomic.LongAdder;
|
|||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
import org.redkale.annotation.Async;
|
||||||
import org.redkale.boot.Application;
|
import org.redkale.boot.Application;
|
||||||
import org.redkale.util.*;
|
import org.redkale.util.*;
|
||||||
|
|
||||||
@@ -43,6 +44,8 @@ public abstract class DispatcherServlet<K extends Serializable, C extends Contex
|
|||||||
|
|
||||||
private Map<K, S> mappings = new HashMap<>();
|
private Map<K, S> mappings = new HashMap<>();
|
||||||
|
|
||||||
|
private volatile boolean allFilterAsync = true;
|
||||||
|
|
||||||
private final List<Filter<C, R, P>> filters = new ArrayList<>();
|
private final List<Filter<C, R, P>> filters = new ArrayList<>();
|
||||||
|
|
||||||
protected Application application;
|
protected Application application;
|
||||||
@@ -176,10 +179,16 @@ public abstract class DispatcherServlet<K extends Serializable, C extends Contex
|
|||||||
filter._conf = conf;
|
filter._conf = conf;
|
||||||
synchronized (filters) {
|
synchronized (filters) {
|
||||||
this.filters.add(filter);
|
this.filters.add(filter);
|
||||||
|
this.allFilterAsync = this.allFilterAsync && isAsync(filter);
|
||||||
Collections.sort(this.filters);
|
Collections.sort(this.filters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isAsync(Filter filter) {
|
||||||
|
Async a = filter.getClass().getAnnotation(Async.class);
|
||||||
|
return a != null && a.value();
|
||||||
|
}
|
||||||
|
|
||||||
public <T extends Filter<C, R, P>> T removeFilter(Class<T> filterClass) {
|
public <T extends Filter<C, R, P>> T removeFilter(Class<T> filterClass) {
|
||||||
return removeFilter(f -> filterClass.equals(f.getClass()));
|
return removeFilter(f -> filterClass.equals(f.getClass()));
|
||||||
}
|
}
|
||||||
@@ -232,6 +241,14 @@ public abstract class DispatcherServlet<K extends Serializable, C extends Contex
|
|||||||
}
|
}
|
||||||
filter._next = null;
|
filter._next = null;
|
||||||
this.filters.remove(filter);
|
this.filters.remove(filter);
|
||||||
|
boolean async = true;
|
||||||
|
for (Filter f : filters) {
|
||||||
|
async = async && isAsync(filter);
|
||||||
|
if (!async) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.allFilterAsync = async;
|
||||||
}
|
}
|
||||||
return (T) filter;
|
return (T) filter;
|
||||||
}
|
}
|
||||||
@@ -245,7 +262,7 @@ public abstract class DispatcherServlet<K extends Serializable, C extends Contex
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public abstract void addServlet(S servlet, Object attachment, AnyValue conf, K... mappings);
|
public abstract void addServlet(S servlet, Object attachment, AnyValue conf, K... mappings);
|
||||||
|
|
||||||
public final void prepare(final R request, final P response) {
|
public final void dispatch(final R request, final P response) {
|
||||||
try {
|
try {
|
||||||
Traces.computeCurrTraceid(request.getTraceid());
|
Traces.computeCurrTraceid(request.getTraceid());
|
||||||
request.prepare();
|
request.prepare();
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ class ProtocolCodec implements CompletionHandler<Integer, ByteBuffer> {
|
|||||||
final Request request = response.request;
|
final Request request = response.request;
|
||||||
final int rs = request.readHeader(buffer, lastReq);
|
final int rs = request.readHeader(buffer, lastReq);
|
||||||
if (rs < 0) { //表示数据格式不正确
|
if (rs < 0) { //表示数据格式不正确
|
||||||
final DispatcherServlet preparer = context.prepare;
|
final DispatcherServlet preparer = context.dispatcher;
|
||||||
preparer.incrExecuteCounter();
|
preparer.incrExecuteCounter();
|
||||||
channel.offerReadBuffer(buffer);
|
channel.offerReadBuffer(buffer);
|
||||||
if (rs != Integer.MIN_VALUE) {
|
if (rs != Integer.MIN_VALUE) {
|
||||||
@@ -155,7 +155,7 @@ class ProtocolCodec implements CompletionHandler<Integer, ByteBuffer> {
|
|||||||
context.logger.log(Level.FINEST, "request.readHeader erroneous (" + rs + "), force to close channel ");
|
context.logger.log(Level.FINEST, "request.readHeader erroneous (" + rs + "), force to close channel ");
|
||||||
}
|
}
|
||||||
} else if (rs == 0) {
|
} else if (rs == 0) {
|
||||||
context.prepare.incrExecuteCounter();
|
context.dispatcher.incrExecuteCounter();
|
||||||
int pindex = pipelineIndex;
|
int pindex = pipelineIndex;
|
||||||
boolean pipeline = false;
|
boolean pipeline = false;
|
||||||
Request hreq = lastReq;
|
Request hreq = lastReq;
|
||||||
@@ -223,7 +223,7 @@ class ProtocolCodec implements CompletionHandler<Integer, ByteBuffer> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void failed(Throwable exc, ByteBuffer attachment) {
|
public void failed(Throwable exc, ByteBuffer attachment) {
|
||||||
context.prepare.incrIllegalRequestCounter();
|
context.dispatcher.incrIllegalRequestCounter();
|
||||||
channel.offerReadBuffer(attachment);
|
channel.offerReadBuffer(attachment);
|
||||||
response.error(exc);
|
response.error(exc);
|
||||||
if (exc != null) {
|
if (exc != null) {
|
||||||
|
|||||||
@@ -417,7 +417,7 @@ public abstract class Server<K extends Serializable, C extends Context, R extend
|
|||||||
contextConfig.maxBody = this.maxBody;
|
contextConfig.maxBody = this.maxBody;
|
||||||
contextConfig.charset = this.charset;
|
contextConfig.charset = this.charset;
|
||||||
contextConfig.serverAddress = this.address;
|
contextConfig.serverAddress = this.address;
|
||||||
contextConfig.prepare = this.dispatcher;
|
contextConfig.dispatcher = this.dispatcher;
|
||||||
contextConfig.resourceFactory = this.resourceFactory;
|
contextConfig.resourceFactory = this.resourceFactory;
|
||||||
contextConfig.aliveTimeoutSeconds = this.aliveTimeoutSeconds;
|
contextConfig.aliveTimeoutSeconds = this.aliveTimeoutSeconds;
|
||||||
contextConfig.readTimeoutSeconds = this.readTimeoutSeconds;
|
contextConfig.readTimeoutSeconds = this.readTimeoutSeconds;
|
||||||
|
|||||||
@@ -3542,7 +3542,7 @@ public final class Rest {
|
|||||||
if (ch >= '0' && ch <= '9') {
|
if (ch >= '0' && ch <= '9') {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (ch >= 'a' && ch <= 'a') {
|
if (ch >= 'a' && ch <= 'z') {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (ch >= 'A' && ch <= 'Z') {
|
if (ch >= 'A' && ch <= 'Z') {
|
||||||
@@ -3586,7 +3586,7 @@ public final class Rest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.existsPound = pound;
|
this.existsPound = pound;
|
||||||
this.newMethodName = formatMappingName(this.name.replace('/', '$').replace('.', '_'));
|
this.newMethodName = formatMappingName(this.name.replace('/', '$').replace('.', '_').replace('-', '_'));
|
||||||
this.newActionClassName = "_Dyn_" + this.newMethodName + "_ActionHttpServlet";
|
this.newActionClassName = "_Dyn_" + this.newMethodName + "_ActionHttpServlet";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user