Scalien.ConfigStateHelpers.ParallelFetchTableKeysHTTP C# (CSharp) Method

ParallelFetchTableKeysHTTP() public static method

public static ParallelFetchTableKeysHTTP ( List shardServers, System.Int64 tableID, string startKey, string endKey, bool forward ) : string[][]
shardServers List
tableID System.Int64
startKey string
endKey string
forward bool
return string[][]
        public static string[][] ParallelFetchTableKeysHTTP(List<ConfigState.ShardServer> shardServers, Int64 tableID, string startKey, string endKey, bool forward)
        {
            var threads = new ListerThreadState[shardServers.Count];
            var serverKeys = new string[shardServers.Count][];
            var listGranularity = 100 * 1000;
            var direction = forward ? "forward" : "backward";

            var i = 0;
            foreach (var shardServer in shardServers)
            {
                var url = GetShardServerURL(shardServer) +
                    "listkeys?tableID=" + tableID +
                    "&startKey=" + Uri.EscapeDataString(startKey) +
                    "&endKey=" + Uri.EscapeDataString(endKey) +
                    "&count=" + listGranularity +
                    "&direction=" + direction;

                threads[i] = new ListerThreadState();
                threads[i].thread = new Thread(new ThreadStart(threads[i].ListerThreadFunc));
                threads[i].shardServer = shardServer;
                threads[i].url = url;
                threads[i].thread.Start();

                i += 1;
            }

            i = 0;
            foreach (var thread in threads)
            {
                thread.thread.Join();
                serverKeys[i] = thread.keys;

                i += 1;
            }

            return serverKeys;
        }