Esempio n. 1
0
        public static bool OnGetBlockByLimitNext(JToken id, string method, JArray parameters, out JToken result)
        {
            result = new JObject();

            if (parameters == null || parameters.Count != 1)
            {
                result = RpcMessage.CreateErrorResult(id, RpcMessage.INVALID_PARAMS, "Invalid parameters");
                return(false);
            }

            try
            {
                BlockLimit         limit  = BlockLimit.Parser.ParseFrom(parameters[0].ToObject <byte[]>());
                BlockListExtention blocks = new BlockListExtention();
                Manager.Instance.DBManager.Block.GetLimitNumber(limit.StartNum, limit.EndNum - limit.StartNum).ForEach(block =>
                {
                    blocks.Block.Add(RpcApiService.CreateBlockExtention(block));
                });

                result = JToken.FromObject(blocks.ToByteArray());
            }
            catch (System.Exception e)
            {
                result = RpcMessage.CreateErrorResult(id, RpcMessage.UNKNOWN_ERROR, e.Message);
                return(false);
            }

            return(true);
        }
Esempio n. 2
0
        public static RpcApiResult GetBlockByLimitNext(long start, long end, out BlockListExtention blocks)
        {
            blocks = null;

            BlockLimit limit = new BlockLimit();

            limit.StartNum = start;
            limit.EndNum   = end;

            JObject receive = SendCommand(RpcCommand.Block.GetBlockByLimitNext, new JArray()
            {
                limit.ToByteArray()
            });

            if (receive.TryGetValue("error", out JToken value))
            {
                return(new RpcApiResult(false, value["code"].ToObject <int>(), value["message"].ToObject <string>()));
            }

            blocks = BlockListExtention.Parser.ParseFrom(receive["result"].ToObject <byte[]>());

            return(RpcApiResult.Success);
        }