Пример #1
0
        /// <summary>
        /// Subscribe to new block messages.
        /// </summary>
        /// <returns>IObservable of type BlockInfoDTO</returns>
        public IObservable <BlockInfo> NewBlock()
        {
            SubscribeToChannel("block");

            return(_subject.Where(e => JObject.Parse(e).Properties().ToArray().Any(i => i.Value.ToString().Contains("block")))
                   .Select(e =>
            {
                var block = JsonConvert.DeserializeObject <BlockInfoDTO>(e);
                var network = (int)Convert.ToInt64(block.Block.Version.ToString("X").Substring(0, 2), 16);
                return new BlockInfo(
                    block.Meta.Hash,
                    block.Meta.GenerationHash,
                    block.Meta.TotalFee,
                    block.Meta.NumTransactions,
                    block.Block.Signature,
                    new PublicAccount(block.Block.Signer, NetworkType.GetRawValue(network)),
                    NetworkType.GetRawValue(network),
                    block.Block.Version,
                    block.Block.Type,
                    block.Block.Height,
                    block.Block.Timestamp,
                    block.Block.Difficulty,
                    block.Block.PreviousBlockHash,
                    block.Block.BlockTransactionsHash);
            }));
        }
Пример #2
0
 internal NodeInfo MapNode(JToken i)
 {
     return(new NodeInfo(
                int.Parse(i["metaData"]["features"].ToString()),
                i["metaData"]["application"]?.ToString(),
                NetworkType.GetRawValue((byte)Convert.ToInt32(i["metaData"]["networkId"].ToString())),
                i["metaData"]["version"].ToString(),
                i["metaData"]["platform"].ToString(),
                i["endpoint"]["protocol"].ToString(),
                i["endpoint"]["port"].ToString(),
                i["endpoint"]["host"].ToString(),
                i["identity"]["public-key"].ToString(),
                i["identity"]["name"].ToString()));
 }
Пример #3
0
        protected NetworkType.Types ExtractNetworkType(int version)
        {
            var netBytes = BitConverter.GetBytes(version).ToHexLower();

            return(NetworkType.GetRawValue(Convert.ToInt32(netBytes.Substring(4, 4), 16)));
        }
Пример #4
0
        internal NetworkType.Types ExtractNetworkType(int version)
        {
            var networkType = (int)Convert.ToInt64(version.ToString("X").Substring(0, 2), 16);

            return(NetworkType.GetRawValue(networkType));
        }
Пример #5
0
 /// <summary>
 /// Gets the network type.
 /// </summary>
 /// <returns>An IObservable of NetworkType.Types.</returns>
 /// <example>
 /// This sample shows how to use the <see>
 ///         <cref>GetNetworkType</cref>
 ///     </see>
 ///     method.
 /// <code>
 /// NetworkType.Types networkType = await new NodeHttp("<!--insert host like: http://0.0.0.0:7890-->").GetNetworkType();
 /// </code>
 /// </example>
 public IObservable <NetworkType.Types> GetNetworkType()
 {
     return(Observable.FromAsync(async ar => await NodeRoutesApi.ExtendedNodeInfoAsync()).Select(a => NetworkType.GetRawValue((byte)int.Parse(a["node"]["metaData"]["networkId"].ToString()))));
 }