public async Task<BrokerConnection> GetOpenConnectionFor(BrokerMetadata broker)
        {

            var connection = _Connections.GetOrAdd(broker.NodeId, x => CreateConnectionFor(broker));
            await connection.AssertOpen();
            return connection;
        }
 public BrokerConnection(BrokerMetadata brokerConfig)
 {
     _BrokerConfig = brokerConfig;
     _Client = new TcpClient();
 }
 private BrokerConnection CreateConnectionFor(BrokerMetadata broker)
 {
     return new BrokerConnection(broker);
 }
 private Task<MetadataResponse> GetMetadataTask(BrokerMetadata config)
 {
     return _BrokersConnectionPool
         .GetOpenConnectionFor(config)
         .ContinueWith(y => y.Result.SendAndReturn(MetadataRequest.ForAll).Result as MetadataResponse);
 }