Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you
* may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License. See accompanying
* LICENSE file.
*/
package com.gemstone.gemfire.internal.memcached.commands;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.util.concurrent.TimeUnit;
import com.gemstone.gemfire.cache.Cache;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.internal.memcached.KeyWrapper;
import com.gemstone.gemfire.internal.memcached.Reply;
import com.gemstone.gemfire.internal.memcached.RequestReader;
import com.gemstone.gemfire.internal.memcached.ResponseStatus;
import com.gemstone.gemfire.internal.memcached.ValueWrapper;
import com.gemstone.gemfire.memcached.GemFireMemcachedServer.Protocol;
/**
*
* incr <key> <value> [noreply]\r\n
*
* value is the amount by which the client wants to increase/decrease
* the item. It is a decimal representation of a 64-bit unsigned integer.
*
* The data for the item is
* treated as decimal representation of a 64-bit unsigned integer.
* Also, the item must already exist for incr/decr to work; these commands won't pretend
* that a non-existent key exists with value 0; instead, they will fail.
*
* @author Swapnil Bawaskar
*
*/
public class IncrementCommand extends AbstractCommand {
@Override
public ByteBuffer processCommand(RequestReader request, Protocol protocol, Cache cache) {
if (protocol == Protocol.ASCII) {
return processAsciiCommand(request.getRequest(), cache);
}
return processBinaryProtocol(request, cache);
}
private ByteBuffer processAsciiCommand(ByteBuffer buffer, Cache cache) {
CharBuffer flb = getFirstLineBuffer();
getAsciiDecoder().reset();
getAsciiDecoder().decode(buffer, flb, false);
flb.flip();
String firstLine = getFirstLine();
String[] firstLineElements = firstLine.split(" ");
assert "incr".equals(firstLineElements[0]);
String key = firstLineElements[1];
String incrByStr = stripNewline(firstLineElements[2]);
Long incrBy = Long.parseLong(incrByStr);
boolean noReply = firstLineElements.length > 3;
Region