private static void RegisterAtCoordinator(Uri uri, bool register) { var t = new Thread(() => { if (!string.IsNullOrEmpty(Settings.Default.CoordinatorUri)) { using (var coordinator = new CSClient.CoordinatorServiceClient(new BasicHttpBinding(), new EndpointAddress(Settings.Default.CoordinatorUri))) { try { Console.WriteLine("{1} at coordinator {0}... ", Settings.Default.CoordinatorUri, register ? "Registering" : "Unregistering"); if (register) { coordinator.AddWorkerAsync(uri).Wait(); } else { coordinator.RemoveWorkerAsync(uri).Wait(); } } catch { Console.WriteLine("{1} at coordinator {0} failed ", Settings.Default.CoordinatorUri, register ? "Registering" : "Unregistering"); } } } }); t.Start(); }
private static void PushReduceResultsToCoordinatorInSeparateThread(int workerId, Uri callbackUri) { if (callbackUri == null) { return; } var t = new Thread(() => { var binding = new BasicHttpBinding(); try { using (var csclient = new CSClient.CoordinatorServiceClient(binding, new EndpointAddress(callbackUri))) { var storage = RemoteWorkerService.GetWorker(workerId).Storage; var regex = new Regex( string.Format( "^" + Core.Properties.Settings.Default.ReduceOutputFileName + "$", @"(?<Key>.+)", "[0-9]+", RegexExtensions.GuidRegexString)); var uris = storage.ListFiles(); foreach (var uri in uris) { var fileName = storage.GetFileName(uri); if (regex.IsMatch(fileName)) { var value = storage.Read(fileName); csclient.AddToStorage(fileName, value); } } } } catch(EndpointNotFoundException) { Console.WriteLine("Coordinator not found!"); } }); t.Start(); }