private void doOnMessage(List<?> messages, CometClientTransportWrapper transport) { if (transport == primaryTransport) { listener.onMessage(messages); } else if (RefreshState.PRIMARY_DISCONNECTED.equals(refreshState)) { refreshEnqueue(messages); } }
@SuppressWarnings("unchecked") private void doneRefresh() { refreshState = null; CometClientTransportWrapper temp = primaryTransport; primaryTransport = refreshTransport; refreshTransport = temp; listener.onAfterRefresh(); if (refreshQueue != null) { if (refreshQueue.size() > 0) { GWT.log("CometClient: pushing queued messages"); } for (Object object : refreshQueue) { if (object == REFRESH) { doOnRefresh(primaryTransport); } else if (object == DISCONNECT) { doOnDisconnected(primaryTransport); } else { doOnMessage((List<?>) object, primaryTransport); } } refreshQueue.clear(); } }
private void doOnError( Throwable exception, boolean connected, CometClientTransportWrapper transport) { if (connected) { doDisconnect(); } listener.onError(exception, connected); if (running) { primaryTransport.reconnectionTimer.schedule(reconnectionTimeout); } }
private void doOnConnected( int heartbeat, int connectionID, CometClientTransportWrapper transport) { if (refreshState != null) { if (transport == refreshTransport) { if (refreshState == RefreshState.PRIMARY_DISCONNECTED) { doneRefresh(); } else if (refreshState == RefreshState.CONNECTING) { primaryTransport.disconnect(); doneRefresh(); } else { throw new IllegalStateException("Unexpected refresh state"); } } else { // refreshed connection after connection failed if (refreshState != RefreshState.CONNECTING) { throw new IllegalStateException("Unexpected refresh state"); } refreshState = null; listener.onAfterRefresh(); } } else { listener.onConnected(heartbeat, connectionID); } }
private void doOnRefresh(CometClientTransportWrapper transport) { if (refreshState == null && transport == primaryTransport) { refreshState = RefreshState.CONNECTING; if (refreshTransport == null) { refreshTransport = new CometClientTransportWrapper(); } refreshTransport.connect(); listener.onRefresh(); } else if (transport == refreshTransport) { refreshEnqueue(REFRESH); } else { throw new IllegalStateException("Unexpected refresh from primaryTransport"); } }
private void doOnDisconnected(CometClientTransportWrapper transport) { if (refreshState != null) { if (transport == primaryTransport) { if (refreshState != RefreshState.CONNECTING) { throw new IllegalStateException("Unexpected refreshState"); } refreshState = RefreshState.PRIMARY_DISCONNECTED; GWT.log("CometClient: primary disconnected before refresh transport was connected"); } else { // the refresh transport has disconnected failedRefresh(); } } else { listener.onDisconnected(); if (running) { doConnect(); } } }
private void doOnHeartbeat(CometClientTransportWrapper transport) { if (transport == primaryTransport) { listener.onHeartbeat(); } }
private void doOnBeforeDisconnected(CometClientTransportWrapper transport) { if (refreshState == null && transport == primaryTransport) { listener.onBeforeDisconnected(); } }