/** * Processes a subsequent (not first) incoming stream message. Either * parameter may be null. * * @param deltas message deltas * @param lastCommittedVersion committed version information */ private void processUpdateMessage(List<TransformedWaveletDelta> deltas, HashedVersion lastCommittedVersion) throws ChannelException { if (deltas != null) { // Update must contain deltas or lastCommittedVersion, no wave. if (deltas.size() == 0 && (lastCommittedVersion == null)) { throw new ChannelException("Delta channel: invalid non-first wave stream message: count " + (deltas.size()) + "deltas (lastServerVersion: " + lastServerVersion + ")", NOT_RECOVERABLE); } processDeltas(deltas); } processLastCommittedVersion(lastCommittedVersion); flushServerMessages(); }
private void processConnect(HashedVersion connectVersion, HashedVersion lastCommittedVersion, HashedVersion currentSignedVersion) throws ChannelException { // The first update must contain a committed version. if (lastCommittedVersion == null) { throw new ChannelException("Channel connect message lacks committed version", NOT_RECOVERABLE); } // Update must contain either wavelet (+ blips etc) // or deltas (beginning with an empty delta to communicate the initial // version and signature). state = State.CONNECTED; connectionTag++; HashedVersion currentVersion; if (currentSignedVersion != null) { currentVersion = currentSignedVersion; } else { currentVersion = connectVersion; } lastServerVersion = connectVersion.getVersion(); if (receiver != null) { receiver.onConnection(connectVersion, currentVersion); } processLastCommittedVersion(lastCommittedVersion); flushServerMessages(); }