原生编译:netty spi 接口注册

This commit is contained in:
songyinyin
2023-10-23 22:10:41 +08:00
parent f07912a189
commit 833bfe94a9
6 changed files with 53 additions and 15 deletions
@@ -0,0 +1,34 @@
package org.dromara.neutrinoproxy.core.aot;
import cn.hutool.core.util.ClassUtil;
import io.netty.channel.SimpleChannelInboundHandler;
import org.dromara.neutrinoproxy.core.ProxyMessage;
import org.noear.solon.aot.RuntimeNativeMetadata;
import org.noear.solon.aot.RuntimeNativeRegistrar;
import org.noear.solon.aot.hint.MemberCategory;
import org.noear.solon.core.AppContext;
import java.nio.channels.spi.SelectorProvider;
import java.util.Set;
/**
* @author songyinyin
* @since 2023/10/23 21:33
*/
public class NeutrinoCoreRuntimeNativeRegistrar implements RuntimeNativeRegistrar {
@Override
public void register(AppContext context, RuntimeNativeMetadata metadata) {
Set<Class<?>> channelInboundClasses = ClassUtil.scanPackageBySuper("org.dromara.neutrinoproxy", SimpleChannelInboundHandler.class);
for (Class<?> clazz : channelInboundClasses) {
metadata.registerReflection(clazz, MemberCategory.INVOKE_DECLARED_METHODS);
}
Set<Class<?>> selectorProviderClasses = ClassUtil.scanPackageBySuper("org.dromara.neutrinoproxy", SelectorProvider.class);
for (Class<?> selectorProviderClass : selectorProviderClasses) {
metadata.registerReflection(selectorProviderClass, MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS);
}
metadata.registerReflection(ProxyMessage.class, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS);
metadata.registerReflection(ProxyMessage.UdpBaseInfo.class, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS);
}
}