in dubbo-remoting-extensions/dubbo-remoting-quic/src/main/java/org/apache/dubbo/remoting/transport/quic/QuicNettyChannel.java [87:119]
static QuicNettyChannel getOrAddChannel(Channel ch, URL url, ChannelHandler handler) {
if (ch == null) {
return null;
}
//FIXME
InetSocketAddress v = null;
if (ch instanceof QuicStreamChannel) {
QuicStreamChannel qsc = (QuicStreamChannel) ch;
QuicChannel qqc = qsc.parent();
try {
Field f = qqc.getClass().getDeclaredField("remote");
f.setAccessible(true);
v = (InetSocketAddress) f.get(qqc);
} catch (NoSuchFieldException | IllegalAccessException e) {
logger.error(e.getMessage());
}
}
QuicNettyChannel ret = CHANNEL_MAP.get(ch);
if (ret == null) {
QuicNettyChannel nettyChannel = new QuicNettyChannel(ch, url, handler);
nettyChannel.setRemoteAddress(v);
if (ch.isActive()) {
nettyChannel.markActive(true);
ret = CHANNEL_MAP.putIfAbsent(ch, nettyChannel);
}
if (ret == null) {
ret = nettyChannel;
}
}
return ret;
}