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;
}