狗日的垃圾狗屎Mina,让我Close你!


狗日的Mina,狗日的Timetask,而让我最不能忍受的就是低智商的但是却自以为是的有点点小聪明就以为可以代表全人类的目中无人的典型废物PM。竟然开始屁股都没有擦干净就选择了mina。身为一个连java都没有写过的废物不知道从哪里道听途说就拍拍屁股选择mina然后出现问题就把责任推卸到其他人,这种废物为什么还可以如此的以为自己很牛逼?

废话少说,就说说mina如何关闭一个socket吧。对,就这么简单的垃圾操作,竟然mina不支持!!!我草你祖宗十八代的白痴mina架构师和程序员,别以为是个狗屎老外就可以写出些垃圾代码出来。

首先,要关闭socket,就要找到socket,来自java.nio。这个狗日的垃圾来自: NioSocketSession,通过NioSocketConnector的newSession生成。

这个垃圾的session还竟然不是已开始就返回,而是在connect的时候,

 AbstractIoConnector。connect

AbstractPollingIoConnector。connect0 --》T session = newSession(processor, handle);

NioSocketConnector 。newSession 总算找打了这个狗日的new操作。

那么返回的垃圾future是什么狗屎? 在connect0里面:

ConnectFuture future = new DefaultConnectFuture();

initSession(session, future, sessionInitializer); 

原来只是session里面的一个attribute,我靠你大爷的奶奶。而且最恶心的是在future里面也有session,这种相互持有的结构,基本上就是一个白痴的架构。

反正核心问题就是NioSocketSession,现在要看什么地方关闭了socket。

NioSocketSession.getChannel -》 

NioProcessor.destory() =>

AbstractPollingIoProcessor.destory()

AbstractPollingIoProcessor.removeNow() ->removeSessions ->Processor.run 

基本上想找channel的close方法失败了。 

代码里面想找socket.close也基本上傻逼了。找不到。 

找SocketChannel.close ->

NioSocketConnector.close() ->  

最后找到了abstractpoolingioconenctor.cancel() 

我靠,找了半天竟然还是找不到怎么关socket。救命!!!!!!!!!!!!!

原文地址:https://www.cnblogs.com/zc22/p/1942782.html