一、Connector类
Connector中的SocketChannel是Sender和Receiver的实现类,因此Selector具有接收和发送的功能。
发送时,将SocketChannel封装成一个StringSendPacket,接收时将StringReceivePacket解析为Striing
二、发送接收的流程
发送者和接收者是一个整体,都是由SocketChannelAdapter中SocketChannel实现的。
首先,对数据IoArgs进行读(写)。
通过IoProvider进行事件调度,包括读的事件调度ReadSelector、写的事件调度WriteSelector。sender或者receiver会通过IoProvider进行注册。
读或者写操作时会触发相应的读、写事件机制,并通过线程回调回去。在回调中完成事件真正的发送、读取操作。
三、解决数据传出过程中出现的问题时使用的类
发送时,将数据Packet放到队列末尾中,然后再从队列头中获取一个Packet,将Packet中的数据写入到IoArgs里面去。
接着将IoArgs注册到Sender,调用Sender的异步发送的方法,将IoArgs、listener作为参数,当sender经过Selector事件机制回调后,发送IoArgs中的数据。发送完成后,执行发送完成的回调。该listener是由发送者持有的。如果数据没有发送完成,重复执行该过程。