Пример #1
0
        private Peer ParsePeer()
        {
            Peer peer = new Peer();

            parser.Expect('[');
            peer.nodeName = parser.ParseString(',');
            parser.offset++;
            peer.tlsName = tlsName = parser.ParseString(',');
            parser.offset++;
            peer.hosts = ParseHosts();
            parser.Expect(']');
            return(peer);
        }
Пример #2
0
        public PeerParser(Cluster cluster, Connection conn, List <Peer> peers)
        {
            this.cluster = cluster;

            string command = (cluster.tlsPolicy != null) ?
                             cluster.useServicesAlternate ? "peers-tls-alt" : "peers-tls-std" :
                             cluster.useServicesAlternate ? "peers-clear-alt" : "peers-clear-std";

            parser = new Info(conn, command);

            if (parser.length == 0)
            {
                throw new AerospikeException.Parse(command + " response is empty");
            }

            parser.SkipToValue();
            generation = parser.ParseInt();
            parser.Expect(',');
            portDefault = parser.ParseInt();
            parser.Expect(',');
            parser.Expect('[');

            // Reset peers
            peers.Clear();

            if (parser.buffer[parser.offset] == ']')
            {
                return;
            }

            while (true)
            {
                Peer peer = ParsePeer();
                peers.Add(peer);

                if (parser.offset < parser.length && parser.buffer[parser.offset] == ',')
                {
                    parser.offset++;
                }
                else
                {
                    break;
                }
            }
        }