Example #1
0
        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);
        }
Example #2
0
        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;
        }