package com.rubiconproject.oss.kv.distributed.impl;
import java.util.concurrent.Callable;
import com.rubiconproject.oss.kv.distributed.AbstractOperation;
import com.rubiconproject.oss.kv.distributed.Operation;
import com.rubiconproject.oss.kv.distributed.OperationResult;
import com.rubiconproject.oss.kv.distributed.OperationStatus;
import com.rubiconproject.oss.kv.transcoder.Transcoder;
public class SetOperation<V> extends AbstractOperation<V> implements
Operation<V>, Callable<OperationResult<V>> {
private static final long serialVersionUID = -6746808553560914494L;
private V value;
public SetOperation(Transcoder transcoder, String key, V value) {
super(transcoder, key);
this.value = value;
}
public String getName() {
return "set";
}
public SetOperation<V> copy() {
return new SetOperation<V>(this.transcoder, this.key, this.value);
}
public OperationResult<V> call() throws Exception {
try {
long start = System.currentTimeMillis();
if (transcoder == null)
store.set(key, value);
else
store.set(key, value, transcoder);
OperationResult<V> result = new DefaultOperationResult<V>(this,
null, OperationStatus.Success, System.currentTimeMillis()
- start, null);
return result;
} finally {
}
}
}