sncp
This commit is contained in:
@@ -1452,6 +1452,8 @@ public abstract class ConvertFactory<R extends Reader, W extends Writer> {
|
|||||||
encoder = createStreamEncoder(type);
|
encoder = createStreamEncoder(type);
|
||||||
} else if (Map.class.isAssignableFrom(clazz)) {
|
} else if (Map.class.isAssignableFrom(clazz)) {
|
||||||
encoder = createMapEncoder(type);
|
encoder = createMapEncoder(type);
|
||||||
|
} else if (CompletionHandler.class.isAssignableFrom(clazz)) {
|
||||||
|
encoder = CompletionHandlerSimpledCoder.instance;
|
||||||
} else if (Optional.class == clazz) {
|
} else if (Optional.class == clazz) {
|
||||||
encoder = new OptionalCoder(this, type);
|
encoder = new OptionalCoder(this, type);
|
||||||
} else if (clazz == Object.class) {
|
} else if (clazz == Object.class) {
|
||||||
|
|||||||
@@ -251,20 +251,14 @@ public class SncpRemoteInfo<S extends Service> {
|
|||||||
protected SncpClientRequest createSncpClientRequest(
|
protected SncpClientRequest createSncpClientRequest(
|
||||||
SncpRemoteAction action, InetSocketAddress clientSncpAddress, String traceid, Object[] params) {
|
SncpRemoteAction action, InetSocketAddress clientSncpAddress, String traceid, Object[] params) {
|
||||||
final Type[] myParamTypes = action.paramTypes;
|
final Type[] myParamTypes = action.paramTypes;
|
||||||
final Class[] myParamClass = action.paramClasses;
|
|
||||||
if (action.paramAddressSourceIndex >= 0) {
|
if (action.paramAddressSourceIndex >= 0) {
|
||||||
params[action.paramAddressSourceIndex] = clientSncpAddress;
|
params[action.paramAddressSourceIndex] = clientSncpAddress;
|
||||||
}
|
}
|
||||||
byte[] body = null;
|
byte[] body = null;
|
||||||
if (myParamTypes.length > 0) {
|
if (myParamTypes.length > 0) { // 存在参数
|
||||||
ProtobufWriter writer = convert.pollWriter();
|
ProtobufWriter writer = convert.pollWriter();
|
||||||
for (int i = 0; i < params.length; i++) { // service方法的参数
|
for (int i = 0; i < params.length; i++) { // service方法的参数
|
||||||
convert.convertTo(
|
convert.convertTo(writer, myParamTypes[i], params[i]);
|
||||||
writer,
|
|
||||||
CompletionHandler.class.isAssignableFrom(myParamClass[i])
|
|
||||||
? CompletionHandler.class
|
|
||||||
: myParamTypes[i],
|
|
||||||
params[i]);
|
|
||||||
}
|
}
|
||||||
body = writer.toByteArray().content();
|
body = writer.toByteArray().content();
|
||||||
convert.offerWriter(writer);
|
convert.offerWriter(writer);
|
||||||
@@ -404,7 +398,7 @@ public class SncpRemoteInfo<S extends Service> {
|
|||||||
this.paramClasses = method.getParameterTypes();
|
this.paramClasses = method.getParameterTypes();
|
||||||
this.method = method;
|
this.method = method;
|
||||||
Annotation[][] anns = method.getParameterAnnotations();
|
Annotation[][] anns = method.getParameterAnnotations();
|
||||||
int tpoicAddrIndex = -1;
|
int topicAddrIndex = -1;
|
||||||
int targetAddrIndex = -1;
|
int targetAddrIndex = -1;
|
||||||
int sourceAddrIndex = -1;
|
int sourceAddrIndex = -1;
|
||||||
int handlerAttachIndex = -1;
|
int handlerAttachIndex = -1;
|
||||||
@@ -479,7 +473,7 @@ public class SncpRemoteInfo<S extends Service> {
|
|||||||
throw new SncpException(
|
throw new SncpException(
|
||||||
method + " have more than one @RpcTargetTopic parameter");
|
method + " have more than one @RpcTargetTopic parameter");
|
||||||
} else {
|
} else {
|
||||||
tpoicAddrIndex = i;
|
topicAddrIndex = i;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new SncpException(
|
throw new SncpException(
|
||||||
@@ -490,7 +484,7 @@ public class SncpRemoteInfo<S extends Service> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.paramTopicTargetIndex = tpoicAddrIndex;
|
this.paramTopicTargetIndex = topicAddrIndex;
|
||||||
this.paramAddressTargetIndex = targetAddrIndex;
|
this.paramAddressTargetIndex = targetAddrIndex;
|
||||||
this.paramAddressSourceIndex = sourceAddrIndex;
|
this.paramAddressSourceIndex = sourceAddrIndex;
|
||||||
this.paramHandlerIndex = handlerFuncIndex;
|
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 returnFutureResultType; // 返回结果的CompletableFuture的结果泛型类型
|
||||||
|
|
||||||
|
protected final java.lang.reflect.Type paramComposeType;
|
||||||
|
|
||||||
protected SncpActionServlet(
|
protected SncpActionServlet(
|
||||||
String resourceName,
|
String resourceName,
|
||||||
Class resourceType,
|
Class resourceType,
|
||||||
@@ -226,6 +228,7 @@ public class SncpServlet extends Servlet<SncpContext, SncpRequest, SncpResponse>
|
|||||||
Objects.requireNonNull(method);
|
Objects.requireNonNull(method);
|
||||||
this.actionid = actionid;
|
this.actionid = actionid;
|
||||||
this.method = method;
|
this.method = method;
|
||||||
|
this.paramComposeType = null; // 待实现
|
||||||
|
|
||||||
int handlerFuncIndex = -1;
|
int handlerFuncIndex = -1;
|
||||||
Class handlerFuncClass = null;
|
Class handlerFuncClass = null;
|
||||||
@@ -292,8 +295,7 @@ public class SncpServlet extends Servlet<SncpContext, SncpRequest, SncpResponse>
|
|||||||
}
|
}
|
||||||
// Future代替CompletionStage 不容易判断异步
|
// Future代替CompletionStage 不容易判断异步
|
||||||
this.nonBlocking = non == null
|
this.nonBlocking = non == null
|
||||||
? (CompletionStage.class.isAssignableFrom(method.getReturnType()) || this.paramHandlerIndex >= 0)
|
&& (CompletionStage.class.isAssignableFrom(method.getReturnType()) || this.paramHandlerIndex >= 0);
|
||||||
: false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -348,7 +350,7 @@ public class SncpServlet extends Servlet<SncpContext, SncpRequest, SncpResponse>
|
|||||||
* }
|
* }
|
||||||
*
|
*
|
||||||
* @ResourceType(TestService.class)
|
* @ResourceType(TestService.class)
|
||||||
* class TestServiceImpl implements TestService {
|
* public class TestServiceImpl implements TestService {
|
||||||
*
|
*
|
||||||
* @Override
|
* @Override
|
||||||
* public boolean change(TestBean bean, String name, int id) {
|
* 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
|
* @Override
|
||||||
* public void completed(Boolean result, TestBean attachment) {
|
* 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) {
|
* public DynActionTestService_change(String resourceName, Class resourceType, Service service, Uint128 serviceid, Uint128 actionid, final Method method) {
|
||||||
* super(resourceName, resourceType, service, serviceid, actionid, 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) {
|
* public DynActionTestService_insert(String resourceName, Class resourceType, Service service, Uint128 serviceid, Uint128 actionid, final Method method) {
|
||||||
* super(resourceName, resourceType, service, serviceid, actionid, 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) {
|
* public DynActionTestService_update(String resourceName, Class resourceType, Service service, Uint128 serviceid, Uint128 actionid, final Method method) {
|
||||||
* super(resourceName, resourceType, service, serviceid, actionid, 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) {
|
* public DynActionTestService_changeName(String resourceName, Class resourceType, Service service, Uint128 serviceid, Uint128 actionid, final Method method) {
|
||||||
* super(resourceName, resourceType, service, serviceid, actionid, 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[12] & 0xff) << 24)
|
||||||
| (((long) value[13] & 0xff) << 16)
|
| (((long) value[13] & 0xff) << 16)
|
||||||
| (((long) value[14] & 0xff) << 8)
|
| (((long) value[14] & 0xff) << 8)
|
||||||
| (((long) value[15] & 0xff)));
|
| ((long) value[15] & 0xff));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -3,6 +3,9 @@
|
|||||||
*/
|
*/
|
||||||
package org.redkale.test.sncp;
|
package org.redkale.test.sncp;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import org.redkale.service.AbstractService;
|
import org.redkale.service.AbstractService;
|
||||||
import org.redkale.util.Times;
|
import org.redkale.util.Times;
|
||||||
@@ -46,4 +49,8 @@ public class SncpSleepService extends AbstractService {
|
|||||||
},
|
},
|
||||||
getExecutor());
|
getExecutor());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String test(Serializable id, String[] names, Collection<File> files) {
|
||||||
|
return "ok";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package org.redkale.test.sncp;
|
package org.redkale.test.sncp;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
|
import java.util.List;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import org.junit.jupiter.api.*;
|
import org.junit.jupiter.api.*;
|
||||||
@@ -62,6 +64,7 @@ public class SncpSleepTest {
|
|||||||
CompletableFuture.allOf(futures).join();
|
CompletableFuture.allOf(futures).join();
|
||||||
long e = System.currentTimeMillis() - s;
|
long e = System.currentTimeMillis() - s;
|
||||||
System.out.println("耗时: " + e + " ms");
|
System.out.println("耗时: " + e + " ms");
|
||||||
|
remoteCService.test(333L, new String[] {"aaa", "bbb"}, List.of(new File("D:/a.txt"), new File("D:/b.txt")));
|
||||||
server.shutdown();
|
server.shutdown();
|
||||||
workExecutor.shutdown();
|
workExecutor.shutdown();
|
||||||
Assertions.assertTrue(e < 600);
|
Assertions.assertTrue(e < 600);
|
||||||
|
|||||||
21
src/test/java/org/redkale/test/sncp/dyn/BooleanHandler.java
Normal file
21
src/test/java/org/redkale/test/sncp/dyn/BooleanHandler.java
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2116 Redkale
|
||||||
|
* All rights reserved.
|
||||||
|
*/
|
||||||
|
package org.redkale.test.sncp.dyn;
|
||||||
|
|
||||||
|
import java.nio.channels.CompletionHandler;
|
||||||
|
import org.redkale.test.util.TestBean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author zhangjx
|
||||||
|
*/
|
||||||
|
public class BooleanHandler implements CompletionHandler<Boolean, TestBean> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void completed(Boolean result, TestBean attachment) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void failed(Throwable exc, TestBean attachment) {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2116 Redkale
|
||||||
|
* All rights reserved.
|
||||||
|
*/
|
||||||
|
package org.redkale.test.sncp.dyn;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import org.redkale.convert.Convert;
|
||||||
|
import org.redkale.convert.ConvertColumn;
|
||||||
|
import org.redkale.convert.Reader;
|
||||||
|
import org.redkale.convert.Writer;
|
||||||
|
import org.redkale.net.sncp.SncpRequest;
|
||||||
|
import org.redkale.net.sncp.SncpResponse;
|
||||||
|
import org.redkale.net.sncp.SncpServlet.SncpActionServlet;
|
||||||
|
import org.redkale.service.Service;
|
||||||
|
import org.redkale.test.util.TestBean;
|
||||||
|
import org.redkale.util.Uint128;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author zhangjx
|
||||||
|
*/
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void action(SncpRequest request, SncpResponse response) throws Throwable {
|
||||||
|
Convert<Reader, Writer> convert = request.getConvert();
|
||||||
|
Reader in = request.getReader();
|
||||||
|
DynActionTestService_change_paramBean bean = convert.convertFrom(paramComposeType, in);
|
||||||
|
TestService serviceObj = (TestService) service();
|
||||||
|
Object rs = serviceObj.change(bean.arg1, bean.arg2, bean.arg3);
|
||||||
|
response.finish(boolean.class, rs);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class DynActionTestService_change_paramBean {
|
||||||
|
|
||||||
|
public DynActionTestService_change_paramBean() {}
|
||||||
|
|
||||||
|
public DynActionTestService_change_paramBean(Object[] params) {
|
||||||
|
this.arg1 = (TestBean) params[0];
|
||||||
|
this.arg2 = (String) params[1];
|
||||||
|
this.arg3 = (int) params[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConvertColumn(index = 1)
|
||||||
|
public TestBean arg1;
|
||||||
|
|
||||||
|
@ConvertColumn(index = 2)
|
||||||
|
public String arg2;
|
||||||
|
|
||||||
|
@ConvertColumn(index = 3)
|
||||||
|
public int arg3;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2116 Redkale
|
||||||
|
* All rights reserved.
|
||||||
|
*/
|
||||||
|
package org.redkale.test.sncp.dyn;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import org.redkale.convert.Convert;
|
||||||
|
import org.redkale.convert.ConvertColumn;
|
||||||
|
import org.redkale.convert.Reader;
|
||||||
|
import org.redkale.convert.Writer;
|
||||||
|
import org.redkale.net.sncp.SncpRequest;
|
||||||
|
import org.redkale.net.sncp.SncpResponse;
|
||||||
|
import org.redkale.net.sncp.SncpServlet.SncpActionServlet;
|
||||||
|
import org.redkale.service.Service;
|
||||||
|
import org.redkale.test.util.TestBean;
|
||||||
|
import org.redkale.util.Uint128;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author zhangjx
|
||||||
|
*/
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void action(SncpRequest request, SncpResponse response) throws Throwable {
|
||||||
|
Convert<Reader, Writer> convert = request.getConvert();
|
||||||
|
Reader in = request.getReader();
|
||||||
|
DynActionTestService_changeName_paramBean bean = convert.convertFrom(paramComposeType, in);
|
||||||
|
TestService serviceObj = (TestService) service();
|
||||||
|
CompletableFuture future = serviceObj.changeName(bean.arg1, bean.arg2, bean.arg3);
|
||||||
|
response.finishFuture(paramHandlerResultType, future);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class DynActionTestService_changeName_paramBean {
|
||||||
|
|
||||||
|
public DynActionTestService_changeName_paramBean() {}
|
||||||
|
|
||||||
|
public DynActionTestService_changeName_paramBean(Object[] params) {
|
||||||
|
this.arg1 = (TestBean) params[0];
|
||||||
|
this.arg2 = (String) params[1];
|
||||||
|
this.arg3 = (int) params[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConvertColumn(index = 1)
|
||||||
|
public TestBean arg1;
|
||||||
|
|
||||||
|
@ConvertColumn(index = 2)
|
||||||
|
public String arg2;
|
||||||
|
|
||||||
|
@ConvertColumn(index = 3)
|
||||||
|
public int arg3;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2116 Redkale
|
||||||
|
* All rights reserved.
|
||||||
|
*/
|
||||||
|
package org.redkale.test.sncp.dyn;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import org.redkale.convert.Convert;
|
||||||
|
import org.redkale.convert.Reader;
|
||||||
|
import org.redkale.convert.Writer;
|
||||||
|
import org.redkale.net.sncp.SncpRequest;
|
||||||
|
import org.redkale.net.sncp.SncpResponse;
|
||||||
|
import org.redkale.net.sncp.SncpServlet;
|
||||||
|
import org.redkale.service.Service;
|
||||||
|
import org.redkale.test.util.TestBean;
|
||||||
|
import org.redkale.util.Uint128;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author zhangjx
|
||||||
|
*/
|
||||||
|
public class DynActionTestService_hello extends SncpServlet.SncpActionServlet {
|
||||||
|
|
||||||
|
public DynActionTestService_hello(
|
||||||
|
String resourceName,
|
||||||
|
Class resourceType,
|
||||||
|
Service service,
|
||||||
|
Uint128 serviceid,
|
||||||
|
Uint128 actionid,
|
||||||
|
final Method method) {
|
||||||
|
super(resourceName, resourceType, service, serviceid, actionid, method);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void action(SncpRequest request, SncpResponse response) throws Throwable {
|
||||||
|
Convert<Reader, Writer> convert = request.getConvert();
|
||||||
|
Reader in = request.getReader();
|
||||||
|
TestBean bean = convert.convertFrom(paramComposeType, in);
|
||||||
|
TestService serviceObj = (TestService) service();
|
||||||
|
serviceObj.hello(bean);
|
||||||
|
response.finishVoid();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2116 Redkale
|
||||||
|
* All rights reserved.
|
||||||
|
*/
|
||||||
|
package org.redkale.test.sncp.dyn;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import org.redkale.convert.Convert;
|
||||||
|
import org.redkale.convert.ConvertColumn;
|
||||||
|
import org.redkale.convert.Reader;
|
||||||
|
import org.redkale.convert.Writer;
|
||||||
|
import org.redkale.net.sncp.SncpRequest;
|
||||||
|
import org.redkale.net.sncp.SncpResponse;
|
||||||
|
import org.redkale.net.sncp.SncpServlet.SncpActionServlet;
|
||||||
|
import org.redkale.service.Service;
|
||||||
|
import org.redkale.test.util.TestBean;
|
||||||
|
import org.redkale.util.Uint128;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author zhangjx
|
||||||
|
*/
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void action(SncpRequest request, SncpResponse response) throws Throwable {
|
||||||
|
Convert<Reader, Writer> convert = request.getConvert();
|
||||||
|
Reader in = request.getReader();
|
||||||
|
DynActionTestService_insert_paramBean bean = convert.convertFrom(paramComposeType, in);
|
||||||
|
bean.arg0 = response.getParamAsyncHandler();
|
||||||
|
TestService serviceObj = (TestService) service();
|
||||||
|
serviceObj.insert(bean.arg0, bean.arg1, bean.arg2, bean.arg3);
|
||||||
|
response.finishVoid();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class DynActionTestService_insert_paramBean {
|
||||||
|
|
||||||
|
public DynActionTestService_insert_paramBean() {}
|
||||||
|
|
||||||
|
public DynActionTestService_insert_paramBean(Object[] params) {
|
||||||
|
this.arg0 = (BooleanHandler) params[0];
|
||||||
|
this.arg1 = (TestBean) params[1];
|
||||||
|
this.arg2 = (String) params[2];
|
||||||
|
this.arg3 = (int) params[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConvertColumn(index = 1)
|
||||||
|
public BooleanHandler arg0;
|
||||||
|
|
||||||
|
@ConvertColumn(index = 2)
|
||||||
|
public TestBean arg1;
|
||||||
|
|
||||||
|
@ConvertColumn(index = 3)
|
||||||
|
public String arg2;
|
||||||
|
|
||||||
|
@ConvertColumn(index = 4)
|
||||||
|
public int arg3;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2116 Redkale
|
||||||
|
* All rights reserved.
|
||||||
|
*/
|
||||||
|
package org.redkale.test.sncp.dyn;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.nio.channels.CompletionHandler;
|
||||||
|
import org.redkale.convert.Convert;
|
||||||
|
import org.redkale.convert.ConvertColumn;
|
||||||
|
import org.redkale.convert.Reader;
|
||||||
|
import org.redkale.convert.Writer;
|
||||||
|
import org.redkale.net.sncp.SncpRequest;
|
||||||
|
import org.redkale.net.sncp.SncpResponse;
|
||||||
|
import org.redkale.net.sncp.SncpServlet.SncpActionServlet;
|
||||||
|
import org.redkale.service.Service;
|
||||||
|
import org.redkale.test.util.TestBean;
|
||||||
|
import org.redkale.util.Uint128;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author zhangjx
|
||||||
|
*/
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void action(SncpRequest request, SncpResponse response) throws Throwable {
|
||||||
|
Convert<Reader, Writer> convert = request.getConvert();
|
||||||
|
Reader in = request.getReader();
|
||||||
|
DynActionTestService_update_paramBean bean = convert.convertFrom(paramComposeType, in);
|
||||||
|
bean.arg3 = response.getParamAsyncHandler();
|
||||||
|
TestService serviceObj = (TestService) service();
|
||||||
|
serviceObj.update(bean.arg1, bean.arg2, bean.arg3, bean.arg4, bean.arg5, bean.arg6);
|
||||||
|
response.finishVoid();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class DynActionTestService_update_paramBean {
|
||||||
|
|
||||||
|
public DynActionTestService_update_paramBean() {}
|
||||||
|
|
||||||
|
public DynActionTestService_update_paramBean(Object[] params) {
|
||||||
|
this.arg1 = (long) params[0];
|
||||||
|
this.arg2 = (short) params[1];
|
||||||
|
this.arg3 = (CompletionHandler) params[2];
|
||||||
|
this.arg4 = (TestBean) params[3];
|
||||||
|
this.arg5 = (String) params[4];
|
||||||
|
this.arg6 = (int) params[5];
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConvertColumn(index = 1)
|
||||||
|
public long arg1;
|
||||||
|
|
||||||
|
@ConvertColumn(index = 2)
|
||||||
|
public short arg2;
|
||||||
|
|
||||||
|
@ConvertColumn(index = 3)
|
||||||
|
public CompletionHandler<Boolean, TestBean> arg3;
|
||||||
|
|
||||||
|
@ConvertColumn(index = 4)
|
||||||
|
public TestBean arg4;
|
||||||
|
|
||||||
|
@ConvertColumn(index = 5)
|
||||||
|
public String arg5;
|
||||||
|
|
||||||
|
@ConvertColumn(index = 6)
|
||||||
|
public int arg6;
|
||||||
|
}
|
||||||
|
}
|
||||||
28
src/test/java/org/redkale/test/sncp/dyn/TestService.java
Normal file
28
src/test/java/org/redkale/test/sncp/dyn/TestService.java
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2116 Redkale
|
||||||
|
* All rights reserved.
|
||||||
|
*/
|
||||||
|
package org.redkale.test.sncp.dyn;
|
||||||
|
|
||||||
|
import java.nio.channels.CompletionHandler;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import org.redkale.service.Service;
|
||||||
|
import org.redkale.test.util.TestBean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author zhangjx
|
||||||
|
*/
|
||||||
|
public interface TestService extends Service {
|
||||||
|
|
||||||
|
public boolean change(TestBean bean, String name, int id);
|
||||||
|
|
||||||
|
public void insert(BooleanHandler handler, TestBean bean, String name, int id);
|
||||||
|
|
||||||
|
public void update(
|
||||||
|
long show, short v2, CompletionHandler<Boolean, TestBean> handler, TestBean bean, String name, int id);
|
||||||
|
|
||||||
|
public CompletableFuture<String> changeName(TestBean bean, String name, int id);
|
||||||
|
|
||||||
|
public void hello(TestBean bean);
|
||||||
|
}
|
||||||
40
src/test/java/org/redkale/test/sncp/dyn/TestServiceImpl.java
Normal file
40
src/test/java/org/redkale/test/sncp/dyn/TestServiceImpl.java
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2116 Redkale
|
||||||
|
* All rights reserved.
|
||||||
|
*/
|
||||||
|
package org.redkale.test.sncp.dyn;
|
||||||
|
|
||||||
|
import java.nio.channels.CompletionHandler;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import org.redkale.annotation.ResourceType;
|
||||||
|
import org.redkale.test.util.TestBean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author zhangjx
|
||||||
|
*/
|
||||||
|
@ResourceType(TestService.class)
|
||||||
|
public class TestServiceImpl implements TestService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean change(TestBean bean, String name, int id) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void insert(BooleanHandler handler, TestBean bean, String name, int id) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(
|
||||||
|
long show, short v2, CompletionHandler<Boolean, TestBean> handler, TestBean bean, String name, int id) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompletableFuture<String> changeName(TestBean bean, String name, int id) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void hello(TestBean bean) {
|
||||||
|
System.out.println("hello: " + bean);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user