in GaiaXAndroidClientToStudio/src/main/java/com/alibaba/gaiax/studio/third/socket/websocket/dispatcher/MainThreadResponseDelivery.java [288:356]
public void run() {
try {
if (type == NON ||
mSocketListenerList == null ||
mSocketListenerList.isEmpty()) {
return;
}
//check null
if (type == CONNECT_FAILED && connectErrorCause == null) return;
if (type == SEND_ERROR && errorResponse == null) return;
if (type == STRING_MSG && TextUtils.isEmpty(textResponse)) return;
if (type == BYTE_BUFFER_MSG && byteResponse == null) return;
if (type == PING && framedataResponse == null) return;
if (type == PONG && framedataResponse == null) return;
synchronized (LISTENER_BLOCK) {
switch (type) {
case CONNECTED:
for (SocketListener listener : mSocketListenerList) {
listener.onConnected();
}
break;
case CONNECT_FAILED:
for (SocketListener listener : mSocketListenerList) {
listener.onConnectFailed(connectErrorCause);
}
break;
case DISCONNECT:
for (SocketListener listener : mSocketListenerList) {
listener.onDisconnect();
}
break;
case SEND_ERROR:
for (SocketListener listener : mSocketListenerList) {
listener.onSendDataError(errorResponse);
}
break;
case STRING_MSG:
for (SocketListener listener : mSocketListenerList) {
listener.onMessage(textResponse, formattedData);
}
break;
case BYTE_BUFFER_MSG:
for (SocketListener listener : mSocketListenerList) {
listener.onMessage(byteResponse, formattedData);
}
break;
case PING:
for (SocketListener listener : mSocketListenerList) {
listener.onPing(framedataResponse);
}
break;
case PONG:
for (SocketListener listener : mSocketListenerList) {
listener.onPong(framedataResponse);
}
break;
}
mSocketListenerList = null;
errorResponse = null;
connectErrorCause = null;
textResponse = null;
byteResponse = null;
framedataResponse = null;
formattedData = null;
}
} finally {
RUNNABLE_POOL.offer(this);
}
}