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