private Address GetRandomAddress()
        {
            var member = _client.GetLoadBalancer().Next();

            if (member != null)
            {
                return(member.GetAddress());
            }
            throw new IOException("Could not find any available address");
        }
        public TransactionContextProxy(HazelcastClient client, TransactionOptions options)
        {
            _client = client;
            var clusterService = (ClientClusterService)client.GetClientClusterService();

            TxnOwnerNode = client.GetClientConfig().GetNetworkConfig().IsSmartRouting() ?
                           client.GetLoadBalancer().Next():
                           clusterService.GetMember(clusterService.GetOwnerConnectionAddress());

            if (TxnOwnerNode == null)
            {
                throw new HazelcastException("Could not find matching member");
            }
            _transaction = new TransactionProxy(client, options, TxnOwnerNode);
        }
        private Address FindNextAddressToCreateARequest()
        {
            var     clusterSize = _client.GetClientClusterService().GetSize();
            IMember liteMember  = null;

            var loadBalancer = _client.GetLoadBalancer();

            for (var i = 0; i < clusterSize; i++)
            {
                var member = loadBalancer.Next();
                if (member != null && !member.IsLiteMember)
                {
                    return(member.GetAddress());
                }
                if (liteMember == null)
                {
                    liteMember = member;
                }
            }
            return(liteMember != null?liteMember.GetAddress() : null);
        }