sncp
This commit is contained in:
@@ -1452,6 +1452,8 @@ public abstract class ConvertFactory<R extends Reader, W extends Writer> {
|
||||
encoder = createStreamEncoder(type);
|
||||
} else if (Map.class.isAssignableFrom(clazz)) {
|
||||
encoder = createMapEncoder(type);
|
||||
} else if (CompletionHandler.class.isAssignableFrom(clazz)) {
|
||||
encoder = CompletionHandlerSimpledCoder.instance;
|
||||
} else if (Optional.class == clazz) {
|
||||
encoder = new OptionalCoder(this, type);
|
||||
} else if (clazz == Object.class) {
|
||||
|
||||
@@ -251,20 +251,14 @@ public class SncpRemoteInfo<S extends Service> {
|
||||
protected SncpClientRequest createSncpClientRequest(
|
||||
SncpRemoteAction action, InetSocketAddress clientSncpAddress, String traceid, Object[] params) {
|
||||
final Type[] myParamTypes = action.paramTypes;
|
||||
final Class[] myParamClass = action.paramClasses;
|
||||
if (action.paramAddressSourceIndex >= 0) {
|
||||
params[action.paramAddressSourceIndex] = clientSncpAddress;
|
||||
}
|
||||
byte[] body = null;
|
||||
if (myParamTypes.length > 0) {
|
||||
if (myParamTypes.length > 0) { // 存在参数
|
||||
ProtobufWriter writer = convert.pollWriter();
|
||||
for (int i = 0; i < params.length; i++) { // service方法的参数
|
||||
convert.convertTo(
|
||||
writer,
|
||||
CompletionHandler.class.isAssignableFrom(myParamClass[i])
|
||||
? CompletionHandler.class
|
||||
: myParamTypes[i],
|
||||
params[i]);
|
||||
convert.convertTo(writer, myParamTypes[i], params[i]);
|
||||
}
|
||||
body = writer.toByteArray().content();
|
||||
convert.offerWriter(writer);
|
||||
@@ -404,7 +398,7 @@ public class SncpRemoteInfo<S extends Service> {
|
||||
this.paramClasses = method.getParameterTypes();
|
||||
this.method = method;
|
||||
Annotation[][] anns = method.getParameterAnnotations();
|
||||
int tpoicAddrIndex = -1;
|
||||
int topicAddrIndex = -1;
|
||||
int targetAddrIndex = -1;
|
||||
int sourceAddrIndex = -1;
|
||||
int handlerAttachIndex = -1;
|
||||
@@ -479,7 +473,7 @@ public class SncpRemoteInfo<S extends Service> {
|
||||
throw new SncpException(
|
||||
method + " have more than one @RpcTargetTopic parameter");
|
||||
} else {
|
||||
tpoicAddrIndex = i;
|
||||
topicAddrIndex = i;
|
||||
}
|
||||
} else {
|
||||
throw new SncpException(
|
||||
@@ -490,7 +484,7 @@ public class SncpRemoteInfo<S extends Service> {
|
||||
}
|
||||
}
|
||||
}
|
||||
this.paramTopicTargetIndex = tpoicAddrIndex;
|
||||
this.paramTopicTargetIndex = topicAddrIndex;
|
||||
this.paramAddressTargetIndex = targetAddrIndex;
|
||||
this.paramAddressSourceIndex = sourceAddrIndex;
|
||||
this.paramHandlerIndex = handlerFuncIndex;
|
||||
|
||||
@@ -215,6 +215,8 @@ public class SncpServlet extends Servlet<SncpContext, SncpRequest, SncpResponse>
|
||||
|
||||
protected final java.lang.reflect.Type returnFutureResultType; // 返回结果的CompletableFuture的结果泛型类型
|
||||
|
||||
protected final java.lang.reflect.Type paramComposeType;
|
||||
|
||||
protected SncpActionServlet(
|
||||
String resourceName,
|
||||
Class resourceType,
|
||||
@@ -226,6 +228,7 @@ public class SncpServlet extends Servlet<SncpContext, SncpRequest, SncpResponse>
|
||||
Objects.requireNonNull(method);
|
||||
this.actionid = actionid;
|
||||
this.method = method;
|
||||
this.paramComposeType = null; // 待实现
|
||||
|
||||
int handlerFuncIndex = -1;
|
||||
Class handlerFuncClass = null;
|
||||
@@ -292,8 +295,7 @@ public class SncpServlet extends Servlet<SncpContext, SncpRequest, SncpResponse>
|
||||
}
|
||||
// Future代替CompletionStage 不容易判断异步
|
||||
this.nonBlocking = non == null
|
||||
? (CompletionStage.class.isAssignableFrom(method.getReturnType()) || this.paramHandlerIndex >= 0)
|
||||
: false;
|
||||
&& (CompletionStage.class.isAssignableFrom(method.getReturnType()) || this.paramHandlerIndex >= 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -335,7 +337,7 @@ public class SncpServlet extends Servlet<SncpContext, SncpRequest, SncpResponse>
|
||||
* <blockquote>
|
||||
*
|
||||
* <pre>
|
||||
* public interface TestService extends Service {
|
||||
* public interface TestService extends Service {
|
||||
*
|
||||
* public boolean change(TestBean bean, String name, int id);
|
||||
*
|
||||
@@ -348,7 +350,7 @@ public class SncpServlet extends Servlet<SncpContext, SncpRequest, SncpResponse>
|
||||
* }
|
||||
*
|
||||
* @ResourceType(TestService.class)
|
||||
* class TestServiceImpl implements TestService {
|
||||
* public class TestServiceImpl implements TestService {
|
||||
*
|
||||
* @Override
|
||||
* public boolean change(TestBean bean, String name, int id) {
|
||||
@@ -369,7 +371,7 @@ public class SncpServlet extends Servlet<SncpContext, SncpRequest, SncpResponse>
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* class BooleanHandler implements CompletionHandler<Boolean, TestBean> {
|
||||
* public class BooleanHandler implements CompletionHandler<Boolean, TestBean> {
|
||||
*
|
||||
* @Override
|
||||
* public void completed(Boolean result, TestBean attachment) {
|
||||
@@ -381,7 +383,7 @@ public class SncpServlet extends Servlet<SncpContext, SncpRequest, SncpResponse>
|
||||
*
|
||||
* }
|
||||
*
|
||||
* class DynActionTestService_change extends SncpActionServlet {
|
||||
* public class DynActionTestService_change extends SncpActionServlet {
|
||||
*
|
||||
* public DynActionTestService_change(String resourceName, Class resourceType, Service service, Uint128 serviceid, Uint128 actionid, final Method method) {
|
||||
* super(resourceName, resourceType, service, serviceid, actionid, method);
|
||||
@@ -400,7 +402,7 @@ public class SncpServlet extends Servlet<SncpContext, SncpRequest, SncpResponse>
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* class DynActionTestService_insert extends SncpActionServlet {
|
||||
* public class DynActionTestService_insert extends SncpActionServlet {
|
||||
*
|
||||
* public DynActionTestService_insert(String resourceName, Class resourceType, Service service, Uint128 serviceid, Uint128 actionid, final Method method) {
|
||||
* super(resourceName, resourceType, service, serviceid, actionid, method);
|
||||
@@ -421,7 +423,7 @@ public class SncpServlet extends Servlet<SncpContext, SncpRequest, SncpResponse>
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* class DynActionTestService_update extends SncpActionServlet {
|
||||
* public class DynActionTestService_update extends SncpActionServlet {
|
||||
*
|
||||
* public DynActionTestService_update(String resourceName, Class resourceType, Service service, Uint128 serviceid, Uint128 actionid, final Method method) {
|
||||
* super(resourceName, resourceType, service, serviceid, actionid, method);
|
||||
@@ -444,7 +446,7 @@ public class SncpServlet extends Servlet<SncpContext, SncpRequest, SncpResponse>
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* class DynActionTestService_changeName extends SncpActionServlet {
|
||||
* public class DynActionTestService_changeName extends SncpActionServlet {
|
||||
*
|
||||
* public DynActionTestService_changeName(String resourceName, Class resourceType, Service service, Uint128 serviceid, Uint128 actionid, final Method method) {
|
||||
* super(resourceName, resourceType, service, serviceid, actionid, method);
|
||||
|
||||
@@ -135,7 +135,7 @@ public final class Uint128 extends Number implements Comparable<Uint128> {
|
||||
| (((long) value[12] & 0xff) << 24)
|
||||
| (((long) value[13] & 0xff) << 16)
|
||||
| (((long) value[14] & 0xff) << 8)
|
||||
| (((long) value[15] & 0xff)));
|
||||
| ((long) value[15] & 0xff));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user