public ViewAdminBuilders() { InitializeComponent (); theBuilders.ItemsSource = Global.AllBuilders.Collection; IDataServer x = new IDataServer ("users", true, true); x.DataRefresh += delegate(bool status, string result) { System.Diagnostics.Debug.WriteLine("Status: " + x.FileName + "=" + status); if(!status) return; Global.AllUsers.LoadFromJson(Helper.Decrypt(result)); Device.BeginInvokeOnMainThread (() => { theUsers.ItemsSource = Global.AllUsers.Collection; }); }; DataServer.AddToDo (x); ShowButtons (); theUsers.ItemSelected += TheUsers_ItemSelected; theBuilders.ItemSelected += TheBuilders_ItemSelected; btIsBuilder.Clicked += BtIsBuilder_Clicked; btIsNotBuilder.Clicked += BtIsNotBuilder_Clicked; btCreateBuilder.Clicked += BtCreateBuilder_Clicked; }
private static void DoJob() { if (inProgress) return; if (toDo.Count == 0) return; inProgress = true; current = toDo [0]; System.Diagnostics.Debug.WriteLine ("Processing: " + current.FileName); current.JobDone += Current_JobDone; current.DoDownload (); }
public static async Task AddToDo(IDataServer element) { var z = await element.HasOldData(); if (z) { string x = await element.OldData(); element.TriggerData (true, x); if (!element.ForceFreshData) return; } toDo.Add (element); //DoJob (); if (element.IgnoreLocalData) DoJob (); }
static void Current_JobDone (bool status, string result) { System.Diagnostics.Debug.WriteLine ("Job done: " + current.FileName); current.JobDone -= Current_JobDone; current.TriggerData (status, result); current = null; if (!status) { // on error, try again count++; // but just 3 times if (count > 2) { // abandon toDo.RemoveAt (0); count = 0; } } else { // ok, we've done it toDo.RemoveAt (0); count = 0; } inProgress = false; DoJob (); }
private async Task DoProcessAllNews () { IDataServer x = new IDataServer ("news", true); var a = await x.HasOldData (); if (a) { SetLabelStage (l9, l91, l92, ProcessStep.Processing); var z = await x.OldData (); Global.AllNews.LoadFromJson (Helper.Decrypt (z)); PopulateNews (); Global.AllNews.Refresh (); SetLabelStage (l9, l91, l92, ProcessStep.Ready); if (step == 8) step++; DoStep (); return; } x.DataRefresh += delegate(bool status, string result) { SetLabelStage (l9, l91, l92, ProcessStep.Processing); Tools.Trace ("Status: " + x.FileName + "=" + status); if (!status) { SetLabelStage (l9, l91, l92, ProcessStep.Broken); if (step == 8) { step++; DoStep (); } return; } try { Global.AllNews.LoadFromJson (Helper.Decrypt (result)); PopulateNews (); Global.AllNews.Refresh (); if (step == 8) step++; DoStep (); SetLabelStage (l9, l91, l92, ProcessStep.Ready); return; } catch (Exception) { SetLabelStage (l9, l91, l92, ProcessStep.Broken); if (step == 8) step++; DoStep (); return; } }; DataServer.AddToDo (x); DataServer.Launch (); }
private async Task DoProcessAllDroids () { IDataServer x = new IDataServer ("droids", true); var a = await x.HasOldData (); if (a) { SetLabelStage (l6, l61, l62, ProcessStep.Processing); //Global.AllBuilders.LoadFromJson(Helper.Decrypt(x.OldData)); SetLabelStage (l6, l61, l62, ProcessStep.Ready); if (step == 5) step++; DoStep (); return; } x.DataRefresh += delegate(bool status, string result) { SetLabelStage (l6, l61, l62, ProcessStep.Processing); Tools.Trace ("Status: " + x.FileName + "=" + status); if (!status) { SetLabelStage (l6, l61, l62, ProcessStep.Broken); if (step == 5) { step++; DoStep (); } return; } try { //Global.AllBuilders.LoadFromJson (Helper.Decrypt (result)); if (step == 5) step++; DoStep (); SetLabelStage (l6, l61, l62, ProcessStep.Ready); return; } catch (Exception) { SetLabelStage (l6, l61, l62, ProcessStep.Broken); if (step == 5) step++; DoStep (); return; } }; DataServer.AddToDo (x); DataServer.Launch (); }