client优化

This commit is contained in:
redkale
2023-12-02 09:00:19 +08:00
parent 0085493b3f
commit 31c6ffdd17
2 changed files with 14 additions and 11 deletions

View File

@@ -398,6 +398,9 @@ public abstract class Client<C extends ClientConnection<R, P>, R extends ClientR
} }
return array; return array;
}); });
if (workThread != null && workThread.threads() == entrys.length && workThread.index() > -1) {
return entrys[workThread.index()];
}
ThreadLocalRandom random = ThreadLocalRandom.current(); ThreadLocalRandom random = ThreadLocalRandom.current();
int index = workThread == null || workThread.index() < 0 ? random.nextInt(entrys.length) : workThread.index() % entrys.length; int index = workThread == null || workThread.index() < 0 ? random.nextInt(entrys.length) : workThread.index() % entrys.length;
return entrys[index]; return entrys[index];

View File

@@ -58,17 +58,17 @@ public final class Rest {
public static final String REST_HEADER_RESP_CONVERT = "Rest-Resp-Convert"; public static final String REST_HEADER_RESP_CONVERT = "Rest-Resp-Convert";
//--------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------
static final String REST_TOSTRINGOBJ_FIELD_NAME = "_redkale_tostringsupplier"; static final String REST_TOSTRINGOBJ_FIELD_NAME = "_redkale_toStringSupplier";
static final String REST_CONVERT_FIELD_PREFIX = "_redkale_restconvert_"; static final String REST_CONVERT_FIELD_PREFIX = "_redkale_restConvert_";
static final String REST_SERVICE_FIELD_NAME = "_redkale_service"; static final String REST_SERVICE_FIELD_NAME = "_redkale_service";
static final String REST_SERVICEMAP_FIELD_NAME = "_redkale_servicemap"; //如果只有name=""的Service资源则实例中_servicemap必须为null static final String REST_SERVICEMAP_FIELD_NAME = "_redkale_serviceMap"; //如果只有name=""的Service资源则实例中_servicemap必须为null
private static final String REST_PARAMTYPES_FIELD_NAME = "_redkale_paramtypes"; //存在泛型的参数数组 Type[][] 第1维度是方法的下标 第二维度是参数的下标 private static final String REST_PARAMTYPES_FIELD_NAME = "_redkale_paramTypes"; //存在泛型的参数数组 Type[][] 第1维度是方法的下标 第二维度是参数的下标
private static final String REST_RETURNTYPES_FIELD_NAME = "_redkale_returntypes"; //存在泛型的结果数组 private static final String REST_RETURNTYPES_FIELD_NAME = "_redkale_returnTypes"; //存在泛型的结果数组
private static final java.lang.reflect.Type TYPE_RETRESULT_STRING = new TypeToken<RetResult<String>>() { private static final java.lang.reflect.Type TYPE_RETRESULT_STRING = new TypeToken<RetResult<String>>() {
}.getType(); }.getType();
@@ -114,11 +114,11 @@ public final class Rest {
static class MethodParamClassVisitor extends ClassVisitor { static class MethodParamClassVisitor extends ClassVisitor {
private final Map<String, List<String>> fieldmap; private final Map<String, List<String>> fieldMap;
public MethodParamClassVisitor(int api, final Map<String, List<String>> fieldmap) { public MethodParamClassVisitor(int api, final Map<String, List<String>> fieldmap) {
super(api); super(api);
this.fieldmap = fieldmap; this.fieldMap = fieldmap;
} }
@Override @Override
@@ -128,10 +128,10 @@ public final class Rest {
} }
List<String> fieldnames = new ArrayList<>(); List<String> fieldnames = new ArrayList<>();
String key = name + ":" + desc; String key = name + ":" + desc;
if (fieldmap.containsKey(key)) { if (fieldMap.containsKey(key)) {
return null; return null;
} }
fieldmap.put(key, fieldnames); fieldMap.put(key, fieldnames);
return new MethodVisitor(Opcodes.ASM6) { return new MethodVisitor(Opcodes.ASM6) {
@Override @Override
public void visitLocalVariable(String name, String description, String signature, Label start, Label end, int index) { public void visitLocalVariable(String name, String description, String signature, Label start, Label end, int index) {
@@ -1859,11 +1859,11 @@ public final class Rest {
av0.visitEnd(); av0.visitEnd();
fv.visitEnd(); fv.visitEnd();
} }
{ //_servicemap字段 Map<String, XXXService> { //_serviceMap字段 Map<String, XXXService>
fv = cw.visitField(ACC_PRIVATE, REST_SERVICEMAP_FIELD_NAME, "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;" + serviceDesc + ">;", null); fv = cw.visitField(ACC_PRIVATE, REST_SERVICEMAP_FIELD_NAME, "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;" + serviceDesc + ">;", null);
fv.visitEnd(); fv.visitEnd();
} }
{ //_redkale_tostringsupplier字段 Supplier<String> { //_redkale_toStringSupplier字段 Supplier<String>
fv = cw.visitField(ACC_PRIVATE, REST_TOSTRINGOBJ_FIELD_NAME, "Ljava/util/function/Supplier;", "Ljava/util/function/Supplier<Ljava/lang/String;>;", null); fv = cw.visitField(ACC_PRIVATE, REST_TOSTRINGOBJ_FIELD_NAME, "Ljava/util/function/Supplier;", "Ljava/util/function/Supplier<Ljava/lang/String;>;", null);
fv.visitEnd(); fv.visitEnd();
} }