Example #1
0
        private void Run()
        {
            RSLClient rslClient = new RSLClient(serviceIdentity, "KV", ps.Verbose);

            Thread.Sleep(3000);

            Random rng = new Random();

            for (int requestNum = 1; true; ++requestNum)
            {
                KVRequest request      = GetRandomRequest(rng, ps);
                byte[]    requestBytes = request.Encode();
                var       startTime    = HiResTimer.Ticks;
                byte[]    replyBytes   = rslClient.SubmitRequest(requestBytes, ps.Verbose);
                var       endTime      = HiResTimer.Ticks;
                KVReply   reply        = KVReply.Decode(replyBytes, 0);

                if (ps.PrintRequestsAndReplies)
                {
                    Console.WriteLine("Received reply of type {0}", reply.ReplyType);
                    if (reply is KVGetFoundReply gfr)
                    {
                        Console.WriteLine("Value obtained for get was {0}", gfr.Val);
                    }
                }
                Console.WriteLine("#req {0} {1} {2}",
                                  id,
                                  requestNum,
                                  HiResTimer.TicksToMilliseconds(endTime - startTime));
            }
        }
        public async Task <ActionResponseResult> ResetUserPassword([FromBody] KVRequest request)
        {
            try
            {
                var user = await _userManager.FindByIdAsync(request.Key);

                var token = await _userManager.GeneratePasswordResetTokenAsync(user);

                var result = await _userManager.ResetPasswordAsync(user, token, request.Value);

                if (result.Succeeded)
                {
                    return(new ActionResponseResult()
                    {
                        Code = 200,
                    });
                }

                string msg = result.Errors?.FirstOrDefault()?.Description;

                return(new ActionResponseResult()
                {
                    Code = 400,
                    Message = msg,
                });
            }
            catch (Exception ex)
            {
                return(new ActionResponseResult()
                {
                    Code = 500,
                    Message = ex.Message,
                });
            }
        }
Example #3
0
        private KVReply HandleRequestInternal(KVRequest req)
        {
            if (req is KVGetRequest greq)
            {
                if (greq.Key.Length > MaxKeySize)
                {
                    Console.Error.WriteLine("Received get request with too-large key size {0}", greq.Key.Length);
                    return(new KVInvalidRequestReply());
                }
                string val;
                if (kvStore.TryGetValue(greq.Key, out val))
                {
                    return(new KVGetFoundReply(val));
                }
                else
                {
                    return(new KVGetUnfoundReply());
                }
            }

            if (req is KVSetRequest sreq)
            {
                if (sreq.Key.Length > MaxKeySize)
                {
                    Console.Error.WriteLine("Received set request with too-large key size {0}", sreq.Key.Length);
                    return(new KVInvalidRequestReply());
                }
                if (sreq.Val.Length > MaxValueSize)
                {
                    Console.Error.WriteLine("Received set request with too-large value size {0}", sreq.Val.Length);
                    return(new KVInvalidRequestReply());
                }
                if (kvStore.Count == MaxNumKeys && !kvStore.ContainsKey(sreq.Key))
                {
                    Console.Error.WriteLine("Received set request with new key when KV store size was at its maximum");
                    return(new KVSetFailureReply());
                }
                kvStore[sreq.Key] = sreq.Val;
                return(new KVSetSuccessReply());
            }

            if (req is KVDeleteRequest dreq)
            {
                if (dreq.Key.Length > MaxKeySize)
                {
                    Console.Error.WriteLine("Received delete request with too-large key size {0}", dreq.Key.Length);
                    return(new KVInvalidRequestReply());
                }
                if (kvStore.ContainsKey(dreq.Key))
                {
                    kvStore.Remove(dreq.Key);
                    return(new KVDeleteFoundReply());
                }
                return(new KVDeleteUnfoundReply());
            }

            return(new KVInvalidRequestReply());
        }
Example #4
0
        public byte[] HandleRequest(byte[] requestBytes)
        {
            KVRequest    request = KVRequest.Decode(requestBytes, 0);
            KVReply      reply   = HandleRequestInternal(request);
            MemoryStream stream  = new MemoryStream();

            reply.Write(stream);
            return(stream.ToArray());
        }