Examples of WaveletOperation


Examples of org.waveprotocol.wave.model.operation.wave.WaveletOperation

    Preconditions.checkState(delta.getAppliedAtVersion() == wavelet.getVersion(),
        "Delta's version %s doesn't apply to wavelet at %s", delta.getAppliedAtVersion(),
        wavelet.getVersion());

    List<WaveletOperation> reverseOps = new ArrayList<WaveletOperation>();
    WaveletOperation lastOp = null;
    int opsApplied = 0;
    try {
      for (WaveletOperation op : delta) {
        lastOp = op;
        List<? extends WaveletOperation> reverseOp = op.applyAndReturnReverse(wavelet);
View Full Code Here

Examples of org.waveprotocol.wave.model.operation.wave.WaveletOperation

      List<WaveletOperation> outServer = CollectionUtils.newArrayList();
      // Produce version update ops for the server ops, as version on the server
      // has increased even though nullified on the client.
      Iterator<WaveletOperation> serverOpItr = server.iterator();
      while (serverOpItr.hasNext()) {
        WaveletOperation serverOp = serverOpItr.next();
        outServer.add(serverOp.createVersionUpdateOp(serverOp.getContext().getVersionIncrement(),
            serverOp.getContext().getHashedVersion()));

      }
      return new DeltaPair(Arrays.<WaveletOperation> asList(), outServer);
    }

    List<WaveletOperation> outServer = CollectionUtils.newArrayList();
    List<WaveletOperation> outClient = CollectionUtils.newArrayList(client);

    for (WaveletOperation serverOp : server) {
      WaveletOperation newServerOp = serverOp;
      List<WaveletOperation> tempClientDelta = CollectionUtils.newArrayList();

      for (WaveletOperation clientOp : outClient) {
        OperationPair<WaveletOperation> operationPair =
            Transform.transform(clientOp, newServerOp);
View Full Code Here

Examples of org.waveprotocol.wave.model.operation.wave.WaveletOperation

      for (int j = 0; j < coreWaveletOperations.size(); ++j) {
        boolean isLast = isLastOfOuter && (j == coreWaveletOperations.size() - 1);
        WaveletOperationContext opContext =
            contextForCreator(pair.creator, versionIncrement, hashedVersion, isLast);
        WaveletOperation waveletOps =
            coreWaveletOpsToWaveletOps(coreWaveletOperations.get(j), opContext);
        ret.add(waveletOps);
      }
    }
    return ret;
View Full Code Here

Examples of org.waveprotocol.wave.model.operation.wave.WaveletOperation

    // are transformed against any server ops received prior to the ack. We now
    // create a version update op for each unacknowledged op. The last one also
    // includes the acked signature.
    Iterator<WaveletOperation> opItr = unacknowledged.iterator();
    while (opItr.hasNext()) {
      WaveletOperation op = opItr.next();
      HashedVersion signedVersion = opItr.hasNext() ? null : ackedSignature;
      versionOps.add(op.createVersionUpdateOp(1, signedVersion));
    }

    // Transform against any queued ops. Note server ops even when they are nullified will
    // leave behind a version updating op. i.e. the total number of server ops will never change.
    clientOperationQueue.transform(versionOps);
View Full Code Here

Examples of org.waveprotocol.wave.model.operation.wave.WaveletOperation

   */
  public WaveletOperation receive() {
    if (serverOperations.isEmpty()) {
      return null;
    } else {
      WaveletOperation op = serverOperations.remove(0);
      logger.trace().log("Processing server op ", op);
      return op;
    }
  }
View Full Code Here

Examples of org.waveprotocol.wave.model.operation.wave.WaveletOperation

  private void receiveLoop() {
    if (isShutdown) {
      return;
    }

    WaveletOperation next = opChannel.peek();
    while (next != null && !isShutdown) {
      // We flush the listener before every operation and specify what the next operation
      // will be, so the listener can choose to only flush the (editor of the) affected blip.
      // (Alternatively, we could tell the listener to flush everything before entering the
      // receive loop and then receive and pass on all available operations without further
      // flushes. That would be faster if, generally, there are more ops per batch than
      // blips in the wave. We have no evidence that that's the case.)
      receptionIsPaused = !listener.flush(next, resumeCallback);
      if (receptionIsPaused) {
        // The listener will call resume callback later, which clears receptionIsPaused
        // and runs the receive loop. We stop the receive loop until then.
        return;
      }

      // We take the next operation and pass it to the listener, if the
      // operation is still the same, that is, it has not been modified
      // by operation transformation against any client operations sent
      // to us from within the call to serverOperationListener.flush().
      // Otherwise we cycle around and call flush again, just to be sure.
      WaveletOperation newNext = opChannel.peek();
      if (next == newNext) {
        listener.consume(opChannel.receive());
        if (!isShutdown) {
          next = opChannel.peek();
        }
View Full Code Here

Examples of org.waveprotocol.wave.model.operation.wave.WaveletOperation

    for (int i = deltas.size() - 1; i >= 0; i--) {
      TransformedWaveletDelta delta = deltas.get(i);
      // Metadata such as the last modified ts will change due to the rollback
      // of operations.
      for (int j = delta.size() - 1; j >= 0; j--) {
        WaveletOperation op = delta.get(j);
        WaveletOperation inverseOp = WaveletOperationInverter.invert(op);
        inverseOps.add(inverseOp);
      }
    }

    long startVersion = wavelet.getVersion();
    int opCount = 0;
    for (WaveletOperation inverseOp : inverseOps) {
      inverseOp.apply(wavelet);
      opCount++;
    }
    if (wavelet.getVersion() != startVersion - opCount) {
      throw new OperationException("Expected end version " + (startVersion - opCount)
          + " doesn't match the version of the wavelet " + wavelet.getVersion());
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.