public GetRawMemPoolResponse GetRawMemPool(Boolean verbose) { GetRawMemPoolResponse getRawMemPoolResponse = new GetRawMemPoolResponse { IsVerbose = verbose }; object rpcResponse = _rpcConnector.MakeRequest<object>(RpcMethods.getrawmempool, verbose); if (!verbose) { JArray rpcResponseAsArray = (JArray) rpcResponse; foreach (String txId in rpcResponseAsArray) { getRawMemPoolResponse.TxIds.Add(txId); } return getRawMemPoolResponse; } IList<KeyValuePair<String, JToken>> rpcResponseAsKvp = (new EnumerableQuery<KeyValuePair<String, JToken>>(((JObject) (rpcResponse)))).ToList(); IList<JToken> children = JObject.Parse(rpcResponse.ToString()).Children().ToList(); for (Int32 i = 0; i < children.Count(); i++) { GetRawMemPoolVerboseResponse getRawMemPoolVerboseResponse = new GetRawMemPoolVerboseResponse { TxId = rpcResponseAsKvp[i].Key }; getRawMemPoolResponse.TxIds.Add(getRawMemPoolVerboseResponse.TxId); foreach (JProperty property in children[i].SelectMany(grandChild => grandChild.OfType<JProperty>())) { switch (property.Name) { case "currentpriority": Double currentPriority; if (Double.TryParse(property.Value.ToString(), out currentPriority)) { getRawMemPoolVerboseResponse.CurrentPriority = currentPriority; } break; case "depends": foreach (JToken jToken in property.Value) { getRawMemPoolVerboseResponse.Depends.Add(jToken.Value<String>()); } break; case "fee": Decimal fee; if (Decimal.TryParse(property.Value.ToString(), out fee)) { getRawMemPoolVerboseResponse.Fee = fee; } break; case "height": Int32 height; if (Int32.TryParse(property.Value.ToString(), out height)) { getRawMemPoolVerboseResponse.Height = height; } break; case "size": Int32 size; if (Int32.TryParse(property.Value.ToString(), out size)) { getRawMemPoolVerboseResponse.Size = size; } break; case "startingpriority": Double startingPriority; if (Double.TryParse(property.Value.ToString(), out startingPriority)) { getRawMemPoolVerboseResponse.StartingPriority = startingPriority; } break; case "time": Int32 time; if (Int32.TryParse(property.Value.ToString(), out time)) { getRawMemPoolVerboseResponse.Time = time; } break; default: throw new Exception("Unkown property: " + property.Name + " in GetRawMemPool()"); } } getRawMemPoolResponse.VerboseResponses.Add(getRawMemPoolVerboseResponse); } return getRawMemPoolResponse; }
public async Task<GetRawMemPoolResponse> GetRawMemPool(bool verbose) { var getRawMemPoolResponse = new GetRawMemPoolResponse { IsVerbose = verbose }; var rpcResponse = await _rpcConnector.MakeRequestAsync<object>(RpcMethods.getrawmempool, verbose); if (!verbose) { var rpcResponseAsArray = (JArray)rpcResponse; foreach (string txId in rpcResponseAsArray) { getRawMemPoolResponse.TxIds.Add(txId); } return getRawMemPoolResponse; } IList<KeyValuePair<string, JToken>> rpcResponseAsKvp = (new List<KeyValuePair<string, JToken>>(((JObject)(rpcResponse)))).ToList(); IList<JToken> children = JObject.Parse(rpcResponse.ToString()).Children().ToList(); for (var i = 0; i < children.Count(); i++) { var getRawMemPoolVerboseResponse = new GetRawMemPoolVerboseResponse { TxId = rpcResponseAsKvp[i].Key }; getRawMemPoolResponse.TxIds.Add(getRawMemPoolVerboseResponse.TxId); foreach (var property in children[i].SelectMany(grandChild => grandChild.OfType<JProperty>())) { switch (property.Name) { case "currentpriority": double currentPriority; if (double.TryParse(property.Value.ToString(), out currentPriority)) { getRawMemPoolVerboseResponse.CurrentPriority = currentPriority; } break; case "depends": foreach (var jToken in property.Value) { getRawMemPoolVerboseResponse.Depends.Add(jToken.Value<string>()); } break; case "fee": decimal fee; if (decimal.TryParse(property.Value.ToString(), out fee)) { getRawMemPoolVerboseResponse.Fee = fee; } break; case "height": int height; if (int.TryParse(property.Value.ToString(), out height)) { getRawMemPoolVerboseResponse.Height = height; } break; case "size": int size; if (int.TryParse(property.Value.ToString(), out size)) { getRawMemPoolVerboseResponse.Size = size; } break; case "startingpriority": double startingPriority; if (double.TryParse(property.Value.ToString(), out startingPriority)) { getRawMemPoolVerboseResponse.StartingPriority = startingPriority; } break; case "time": int time; if (int.TryParse(property.Value.ToString(), out time)) { getRawMemPoolVerboseResponse.Time = time; } break; default: throw new Exception("Unkown property: " + property.Name + " in GetRawMemPool()"); } } getRawMemPoolResponse.VerboseResponses.Add(getRawMemPoolVerboseResponse); } return getRawMemPoolResponse; }