コード例 #1
0
ファイル: IncByCommand.cs プロジェクト: mlnkrish/redis-sharp
        public override string DoProcess(Request request)
        {
            var redisObject = store.Get(request.args[0]);
            var valToIncBy = long.Parse(request.args[1]);
            if (redisObject == null)
            {
                var redisString = new RedisString("0");
                long longValue;
                redisString.IncrementBy(valToIncBy, out longValue);
                store.Set(request.args[0], redisString);
                return Reply.IntgerReply(longValue);
            }
            if (!redisObject.IsRedisString())
            {
                return Reply.ErrWrongType();
            }

            var s = redisObject as RedisString;
            if(s.IsConvertibleToLong())
            {
                long longValue;
                var success = s.IncrementBy(valToIncBy, out longValue);
                return success ? Reply.IntgerReply(longValue) : Reply.OverFlow();
            }
            return Reply.ValueNotInt();
        }
コード例 #2
0
ファイル: RedisCommand.cs プロジェクト: mlnkrish/redis-sharp
 public string Process(Request request)
 {
     if(!Validate(request))
     {
         return Reply.ErrBadRequest();
     }
     return DoProcess(request);
 }
コード例 #3
0
ファイル: IncByCommand.cs プロジェクト: mlnkrish/redis-sharp
 public override bool Validate(Request request)
 {
     if (request.args.Count == 2)
     {
         long res;
         return long.TryParse(request.args[1], out res);
     }
     return false;
 }
コード例 #4
0
 public override bool Validate(Request request)
 {
     if(request.args.Count == 3)
     {
         int i;
         return int.TryParse(request.args[1], out i) && int.TryParse(request.args[2], out i);
     }
     return false;
 }
コード例 #5
0
ファイル: GetCommand.cs プロジェクト: mlnkrish/redis-sharp
        public override string DoProcess(Request request)
        {
            var redisObject = store.Get(request.args[0]);

            if (redisObject == null)
                return Reply.Nil();
            if (!redisObject.IsRedisString())
                return Reply.ErrWrongType();
            return Reply.BulkReply(redisObject.ToString());
        }
コード例 #6
0
ファイル: StrlenCommand.cs プロジェクト: mlnkrish/redis-sharp
        public override string DoProcess(Request request)
        {
            var redisObject = store.Get(request.args[0]);
            if(redisObject == null)
            {
                return Reply.IntgerReply(0);
            }

            if(!redisObject.IsRedisString())
            {
                return Reply.ErrWrongType();
            }

            return Reply.IntgerReply((redisObject as RedisString).Length());
        }
コード例 #7
0
        public override string DoProcess(Request request)
        {
            var redisObject = store.Get(request.args[0]);
            if(redisObject == null)
            {
                return Reply.BulkReply("");
            }

            if(!redisObject.IsRedisString())
            {
                return Reply.ErrWrongType();
            }

            return Reply.BulkReply((redisObject as RedisString).Substring(int.Parse(request.args[1]),int.Parse(request.args[2])));
        }
コード例 #8
0
ファイル: AppendCommand.cs プロジェクト: mlnkrish/redis-sharp
        public override string DoProcess(Request request)
        {
            var redisObject = store.Get(request.args[0]);

            if(redisObject == null)
            {
                var redisString = new RedisString(request.args[1]);
                store.Set(request.args[0],redisString);
                return Reply.IntgerReply(redisString.Length());
            }

            if (!redisObject.IsRedisString())
            {
                return Reply.ErrWrongType();
            }

            var s = redisObject as RedisString;
            s.Append(request.args[1]);
            return Reply.IntgerReply(s.Length());
        }
コード例 #9
0
ファイル: GetCommand.cs プロジェクト: mlnkrish/redis-sharp
 public override bool Validate(Request request)
 {
     return request.args.Count == 1;
 }
コード例 #10
0
ファイル: Commands.cs プロジェクト: mlnkrish/redis-sharp
 public static string ProcessRequest(Request request)
 {
     if(!CommandTable.ContainsKey(request.command))
         return Reply.ErrInvalidCommand(request.command);
     return CommandTable[request.command].Process(request);
 }
コード例 #11
0
ファイル: PingCommand.cs プロジェクト: mlnkrish/redis-sharp
 public override string DoProcess(Request request)
 {
     return Reply.Pong();
 }
コード例 #12
0
ファイル: PingCommand.cs プロジェクト: mlnkrish/redis-sharp
 public override bool Validate(Request request)
 {
     return true;
 }
コード例 #13
0
ファイル: SetCommand.cs プロジェクト: mlnkrish/redis-sharp
 public override string DoProcess(Request request)
 {
     store.Set(request.args[0],new RedisString(request.args[1]));
     return Reply.Ok();
 }
コード例 #14
0
ファイル: RequestQueue.cs プロジェクト: mlnkrish/redis-sharp
 public void Enqueue(Request request)
 {
     queue.Enqueue(request);
 }
コード例 #15
0
ファイル: RedisCommand.cs プロジェクト: mlnkrish/redis-sharp
 public abstract string DoProcess(Request request);
コード例 #16
0
ファイル: RedisCommand.cs プロジェクト: mlnkrish/redis-sharp
 public abstract bool Validate(Request request);