mirror of
https://gitee.com/farsunset/cim.git
synced 2025-08-02 20:45:46 +08:00
修改客户端SDK偶尔出现IllegalBlockingModeException的问题
This commit is contained in:
parent
02bb5eb7f7
commit
edd5670b45
@ -78,7 +78,8 @@ class CIMConnectorManager{
|
|||||||
|
|
||||||
private Semaphore semaphore = new Semaphore(1, true);
|
private Semaphore semaphore = new Semaphore(1, true);
|
||||||
|
|
||||||
private SocketChannel socketChannel ;
|
private volatile SocketChannel socketChannel ;
|
||||||
|
|
||||||
private Context context;
|
private Context context;
|
||||||
|
|
||||||
|
|
||||||
@ -106,22 +107,8 @@ class CIMConnectorManager{
|
|||||||
}
|
}
|
||||||
private CIMConnectorManager(Context context) {
|
private CIMConnectorManager(Context context) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
makeNioConnector();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void makeNioConnector() {
|
|
||||||
try {
|
|
||||||
if(socketChannel == null || !socketChannel.isOpen()) {
|
|
||||||
socketChannel = SocketChannel.open();
|
|
||||||
socketChannel.socket().setTcpNoDelay(true);
|
|
||||||
socketChannel.socket().setKeepAlive(true);
|
|
||||||
socketChannel.socket().setReceiveBufferSize(READ_BUFFER_SIZE);
|
|
||||||
socketChannel.socket().setSendBufferSize(WRITE_BUFFER_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
}catch(Exception ignore) {}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized static CIMConnectorManager getManager(Context context) {
|
public synchronized static CIMConnectorManager getManager(Context context) {
|
||||||
|
|
||||||
@ -149,10 +136,6 @@ class CIMConnectorManager{
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!socketChannel.isOpen()) {
|
|
||||||
makeNioConnector();
|
|
||||||
}
|
|
||||||
|
|
||||||
bossExecutor.execute(new Runnable() {
|
bossExecutor.execute(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@ -169,6 +152,13 @@ class CIMConnectorManager{
|
|||||||
|
|
||||||
semaphore.acquire();
|
semaphore.acquire();
|
||||||
|
|
||||||
|
socketChannel = SocketChannel.open();
|
||||||
|
socketChannel.configureBlocking(true);
|
||||||
|
socketChannel.socket().setTcpNoDelay(true);
|
||||||
|
socketChannel.socket().setKeepAlive(true);
|
||||||
|
socketChannel.socket().setReceiveBufferSize(READ_BUFFER_SIZE);
|
||||||
|
socketChannel.socket().setSendBufferSize(WRITE_BUFFER_SIZE);
|
||||||
|
|
||||||
socketChannel.socket().connect(new InetSocketAddress(host, port),CONNECT_TIME_OUT);
|
socketChannel.socket().connect(new InetSocketAddress(host, port),CONNECT_TIME_OUT);
|
||||||
|
|
||||||
semaphore.release();
|
semaphore.release();
|
||||||
|
@ -90,23 +90,7 @@ class CIMConnectorManager {
|
|||||||
private ClientMessageEncoder messageEncoder = new ClientMessageEncoder();
|
private ClientMessageEncoder messageEncoder = new ClientMessageEncoder();
|
||||||
private ClientMessageDecoder messageDecoder = new ClientMessageDecoder();
|
private ClientMessageDecoder messageDecoder = new ClientMessageDecoder();
|
||||||
|
|
||||||
private CIMConnectorManager() {
|
|
||||||
makeNioConnector();
|
|
||||||
}
|
|
||||||
private void makeNioConnector() {
|
|
||||||
try {
|
|
||||||
|
|
||||||
if(socketChannel == null || !socketChannel.isOpen()) {
|
|
||||||
socketChannel = SocketChannel.open();
|
|
||||||
socketChannel.socket().setTcpNoDelay(true);
|
|
||||||
socketChannel.socket().setKeepAlive(true);
|
|
||||||
socketChannel.socket().setReceiveBufferSize(READ_BUFFER_SIZE);
|
|
||||||
socketChannel.socket().setSendBufferSize(WRITE_BUFFER_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
}catch(Exception ignore) {}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized static CIMConnectorManager getManager() {
|
public synchronized static CIMConnectorManager getManager() {
|
||||||
|
|
||||||
@ -125,10 +109,6 @@ class CIMConnectorManager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!socketChannel.isOpen()) {
|
|
||||||
makeNioConnector();
|
|
||||||
}
|
|
||||||
|
|
||||||
bossExecutor.execute(new Runnable() {
|
bossExecutor.execute(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@ -145,6 +125,13 @@ class CIMConnectorManager {
|
|||||||
|
|
||||||
semaphore.acquire();
|
semaphore.acquire();
|
||||||
|
|
||||||
|
socketChannel = SocketChannel.open();
|
||||||
|
socketChannel.configureBlocking(true);
|
||||||
|
socketChannel.socket().setTcpNoDelay(true);
|
||||||
|
socketChannel.socket().setKeepAlive(true);
|
||||||
|
socketChannel.socket().setReceiveBufferSize(READ_BUFFER_SIZE);
|
||||||
|
socketChannel.socket().setSendBufferSize(WRITE_BUFFER_SIZE);
|
||||||
|
|
||||||
socketChannel.socket().connect(new InetSocketAddress(host, port),CONNECT_TIME_OUT);
|
socketChannel.socket().connect(new InetSocketAddress(host, port),CONNECT_TIME_OUT);
|
||||||
|
|
||||||
semaphore.release();
|
semaphore.release();
|
||||||
|
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user