package com.easysocket.connection.iowork;
|
|
import com.easysocket.config.EasySocketOptions;
|
import com.easysocket.interfaces.config.IOptions;
|
import com.easysocket.interfaces.conn.IConnectionManager;
|
import com.easysocket.interfaces.conn.ISocketActionDispatch;
|
import com.easysocket.interfaces.io.IIOManager;
|
import com.easysocket.interfaces.io.IReader;
|
import com.easysocket.interfaces.io.IWriter;
|
|
/**
|
* Author:Alex
|
* Date:2019/5/28
|
* Note:
|
*/
|
public class IOManager implements IIOManager, IOptions {
|
/**
|
* socket行为回调
|
*/
|
private ISocketActionDispatch actionDispatch;
|
/**
|
* 连接管理
|
*/
|
private IConnectionManager connectionManager;
|
/**
|
* 写
|
*/
|
private IWriter writer;
|
/**
|
* 读
|
*/
|
private IReader reader;
|
|
public IOManager(IConnectionManager connectionManager,
|
ISocketActionDispatch connActionDispatch) {
|
this.connectionManager = connectionManager;
|
this.actionDispatch = connActionDispatch;
|
initIO();
|
}
|
|
// 初始化io
|
private void initIO() {
|
//makesureHeaderProtocolNotEmpty();
|
reader = new EasyReader(connectionManager, actionDispatch); // 读
|
writer = new EasyWriter(connectionManager, actionDispatch); // 写
|
}
|
|
@Override
|
public void sendBytes(byte[] bytes) {
|
if (writer != null)
|
writer.offer(bytes);
|
}
|
|
@Override
|
public void startIO() {
|
if (writer != null)
|
writer.openWriter();
|
if (reader != null)
|
reader.openReader();
|
}
|
|
@Override
|
public void closeIO() {
|
if (writer != null)
|
writer.closeWriter();
|
if (reader != null)
|
reader.closeReader();
|
}
|
|
@Override
|
public Object setOptions(EasySocketOptions socketOptions) {
|
//makesureHeaderProtocolNotEmpty();
|
if (writer != null)
|
writer.setOption(socketOptions);
|
if (reader != null)
|
reader.setOption(socketOptions);
|
return this;
|
}
|
|
@Override
|
public EasySocketOptions getOptions() {
|
return connectionManager.getOptions();
|
}
|
|
/**
|
* 确保包结构协议不为空
|
*/
|
// private void makesureHeaderProtocolNotEmpty() {
|
// IMessageProtocol protocol = connectionManager.getOptions().getMessageProtocol();
|
// if (protocol == null) {
|
// throw new NoNullException("The reader protocol can not be Null.");
|
// }
|
//
|
// if (protocol.getHeaderLength() == 0) {
|
// throw new NoNullException("The header length can not be zero.");
|
// }
|
// }
|
}
|