private void CreateCounterCommand(string arguments, Opcode cmdType) { string[] argumentsArray = arguments.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (argumentsArray.Length > 3 || argumentsArray.Length < 2) { CreateInvalidCommand(); return; } CounterCommand command = new CounterCommand(cmdType); try { command.Key = argumentsArray[0]; command.Delta = ulong.Parse(argumentsArray[1]); if (argumentsArray.Length > 2 && argumentsArray[2] == "noreply") { command.NoReply = true; } } catch (Exception) { command.ErrorMessage = "CLIENT_ERROR bad command line format"; } _command = command; this.State = ParserState.ReadyToDispatch; }
private void CreateCounterCommand(Opcode cmdType, bool noreply) { CounterCommand cmd = new CounterCommand(cmdType); cmd.Delta = MemcachedEncoding.BinaryConverter.ToUInt64(_rawData, 0); cmd.InitialValue = MemcachedEncoding.BinaryConverter.ToUInt64(_rawData, 8); cmd.ExpirationTimeInSeconds = (long)MemcachedEncoding.BinaryConverter.ToUInt32(_rawData, 16); cmd.Key = MemcachedEncoding.BinaryConverter.GetString(_rawData, 20, _requestHeader.KeyLength); cmd.CAS = _requestHeader.CAS; cmd.NoReply = noreply; _command = cmd; }
public AsyncCommandViewModel() { CounterCommand = new AsyncCommand(async() => { await Task.Delay(2000); Counter++; OnCounterCommand.RaiseCanExecuteChanged(); CounterCommand.RaiseCanExecuteChanged(); }, () => Math.Abs(m_counter - m_onClickCounter) < 5); OnCounterCommand = new AsyncCommand <int>(async num => { await Task.Delay(150); OnClickCounter = num; CounterCommand.RaiseCanExecuteChanged(); OnCounterCommand.RaiseCanExecuteChanged(); }, num => Math.Abs(num - OnClickCounter) > 2); }
public static byte[] BuildCounterResponse(CounterCommand command) { byte[] value = null; BinaryResponseStatus status = BinaryResponseStatus.no_error; ulong cas = 0; if (command.ExceptionOccured) { status = BinaryResponseStatus.item_not_stored; } else { switch (command.OperationResult.ReturnResult) { case Result.ITEM_TYPE_MISMATCHED: status = BinaryResponseStatus.incr_decr_on_nonnumeric_value; value = MemcachedEncoding.BinaryConverter.GetBytes("Increment or decrement on non-numeric value"); break; case Result.ITEM_NOT_FOUND: status = BinaryResponseStatus.key_not_found; value = MemcachedEncoding.BinaryConverter.GetBytes("NOT_FOUND"); break; case Result.SUCCESS: if (command.NoReply == true) { return(null); } cas = (ulong)command.OperationResult.Value; ulong response = (command.OperationResult as MutateOpResult).MutateResult; value = MemcachedEncoding.BinaryConverter.GetBytes(response); break; case Result.ITEM_MODIFIED: status = BinaryResponseStatus.key_exists; break; } } return(BuildResposne(command.Opcode, status, command.Opaque, cas, null, value, null)); }
public CounterController(CounterCommand incrementCommand, CounterRepository counterReposotory) { _incrementCommand = incrementCommand; _counterReposotory = counterReposotory; }