Package net.spy.memcached.protocol.ascii

Source Code of net.spy.memcached.protocol.ascii.MutatorOperationImpl

// Copyright (c) 2006  Dustin Sallings <dustin@spy.net>

package net.spy.memcached.protocol.ascii;

import java.nio.ByteBuffer;

import net.spy.memcached.ops.MutatatorOperation;
import net.spy.memcached.ops.Mutator;
import net.spy.memcached.ops.OperationCallback;
import net.spy.memcached.ops.OperationState;
import net.spy.memcached.ops.OperationStatus;

/**
* Operation for mutating integers inside of memcached.
*/
final class MutatorOperationImpl extends OperationImpl
  implements MutatatorOperation {

  public static final int OVERHEAD=32;

  private static final OperationStatus NOT_FOUND=
    new OperationStatus(false, "NOT_FOUND");

  private final Mutator mutator;
  private final String key;
  private final int amount;

  public MutatorOperationImpl(Mutator m, String k, int amt,
      OperationCallback c) {
    super(c);
    mutator=m;
    key=k;
    amount=amt;
  }

  @Override
  public void handleLine(String line) {
    getLogger().debug("Result:  %s", line);
    OperationStatus found=null;
    if(line.equals("NOT_FOUND")) {
      found=NOT_FOUND;
    } else {
      found=new OperationStatus(true, line);
    }
    getCallback().receivedStatus(found);
    transitionState(OperationState.COMPLETE);
  }

  @Override
  public void initialize() {
    int size=key.length() + OVERHEAD;
    ByteBuffer b=ByteBuffer.allocate(size);
    setArguments(b, mutator.name(), key, amount);
    b.flip();
    setBuffer(b);
  }

  @Override
  protected void wasCancelled() {
    // XXX:  Replace this comment with why the hell I did this.
    getCallback().receivedStatus(CANCELLED);
  }

}
TOP

Related Classes of net.spy.memcached.protocol.ascii.MutatorOperationImpl

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.