Scalien.ConfigStateHelpers.ParallelFetchTableKeyValuesHTTP C# (CSharp) Method

ParallelFetchTableKeyValuesHTTP() public static method

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

            var i = 0;
            foreach (var shardServer in shardServers)
            {
                var url = Utils.HTTP.BuildUri(GetShardServerURL(shardServer),
                            "listkeyvalues?tableID=" + tableID,
                            "&startKey=", startKey,
                            "&endKey=", endKey,
                            "&count=" + listGranularity,
                            "&direction=" + direction);

                threads[i] = new BinaryListerThreadState();
                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.keyValues;

                i += 1;
            }

            return serverKeys;
        }