@Override public void onOpenFinished() { openListener.onOpenFinished(); } }
@Override public MuxListener create(OpenListener openListener) { return new MuxListener(waveletFactory, disconnectedHandler, waveletListener, openListener, accessibilityTracker); } };
@Override public boolean isTerminal(Wavelet wavelet) { return terminalWavelets.isTerminal(wavelet); }
@Override public void onOperationChannelCreated(OperationChannel channel, ObservableWaveletData snapshot, Accessibility accessibility) { // New wavelet has come into existence. Build a model on top. CcBasedWavelet wavelet = waveletFactory.create(channel, snapshot); // Keep this wavelet around for future changes. wavelets.put(wavelet.getId(), wavelet); // Mark inaccessible if necessary. if (accessibility == Accessibility.INACCESSIBLE) { terminalWavelets.markTerminal(wavelet); } listener.onWaveletAdded(wavelet); }
public void testNoSuckingAfterShutdown() { sucker.shutdown(); sucker.onOperationReceived(); // Expect no interactions with the channel. }
@Override protected void setUp() throws Exception { super.setUp(); channel = new MockOperationChannel(); sink = new MockFlushingOperationSink(); sucker = new OperationSucker(channel, sink); }
@Override public void run() { sucker.shutdown(); } });
private WaveletOperation[] makeOps(int howMany) { WaveletOperation[] ops = new WaveletOperation[howMany]; for (int i = 0; i < howMany; ++i) { ops[i] = makeOp(); } return ops; }
@Override public void onWaveletRemoved(ObservableWavelet wavelet) { reset(); }
@Override public void onOperationChannelRemoved(OperationChannel channel, WaveletId waveletId) { CcBasedWavelet wavelet = wavelets.remove(waveletId); terminalWavelets.clearTerminal(wavelet); listener.onWaveletRemoved(wavelet); }
@Override public boolean flush(WaveletOperation operation, Runnable resume) { Preconditions.checkState(!failed, "CcBasedWavelet operation applier flushed after failure"); if (operation instanceof WaveletBlipOperation) { WaveletBlipOperation waveBlipOp = (WaveletBlipOperation) operation; CcDocument doc = docFactory.get(waveletId, waveBlipOp.getBlipId()); if (doc != null) { return doc.flush(resume); } } return true; }
@Override public void onOperationReceived() { if (!receptionIsPaused) { receiveLoop(); } }
private void fireOnOpEnd() { for (CcBasedWaveletListener l : ccBasedWaveListeners) { l.onOpEnd(); } }
@Override public void onFailed(CorruptionDetail detail) { if (disconnectedHandler != null) { disconnectedHandler.onWaveDisconnected(detail); } }
/** * Places a concurrency-control driver and target on top of the new * operation channel. All wavelet model objects are created through this * method. * * @param target target to be controller by operations * @param channel channel for operation communication * @return new wavelet */ CcBasedWavelet create(OperationChannel channel, ObservableWaveletData target) { return new CcBasedWavelet(waveId, contextFactory, participationHelper, channel, target, docFactory, failureHandler, opTaps); } }
public void testNoSuckingAfterShutdown() { sucker.shutdown(); sucker.onOperationReceived(); // Expect no interactions with the channel. }
@Override protected void setUp() throws Exception { super.setUp(); channel = new MockOperationChannel(); sink = new MockFlushingOperationSink(); sucker = new OperationSucker(channel, sink); }
@Override public void run() { sucker.shutdown(); } });
private WaveletOperation[] makeOps(int howMany) { WaveletOperation[] ops = new WaveletOperation[howMany]; for (int i = 0; i < howMany; ++i) { ops[i] = makeOp(); } return ops; }
@Override public void onWaveletRemoved(ObservableWavelet wavelet) { reset(); }