Esempio n. 1
0
        public async Task RefreshOnlyIfNecessary(LnrpcListChannelsResponse listChannelsResponse, LnrpcPendingChannelsResponse pendingChannelsResponse)
        {
            var allPublicKeys = new List <string>();

            if (listChannelsResponse?.Channels != null)
            {
                allPublicKeys.AddRange(listChannelsResponse.Channels.Select(c => c.Remote_pubkey));
            }

            if (pendingChannelsResponse?.Pending_open_channels != null)
            {
                allPublicKeys.AddRange(pendingChannelsResponse.Pending_open_channels.Select(c => c.Channel.Remote_node_pub));
            }

            foreach (var publicKey in allPublicKeys)
            {
                if (this.nodeAliasCache.ContainsKey(publicKey))
                {
                    continue;
                }
                else
                {
                    var nodeInfo = await this.client.SwaggerClient.GetNodeInfoAsync(publicKey).ConfigureAwait(false);

                    this.nodeAliasCache.Add(nodeInfo.Node.Pub_key, nodeInfo.Node.Alias);
                }
            }
        }
 public void WriteMetrics(LnrpcListChannelsResponse listChannelsResponse)
 {
     if (listChannelsResponse?.Channels != null)
     {
         foreach (var channel in listChannelsResponse.Channels)
         {
             var nodeAlias = this.nodeAliasCache.GetNodeAlias(channel.Remote_pubkey);
             this.metrics.Write($"{this.configuration.MetricPrefix}_list_channels", GetFields(channel), GetTags(nodeAlias));
         }
     }
 }