public static async Task<Data> loadAsync(Configuration.Data configuration, Boolean doReset, Callback callback) { Int32 Count = 0; List<Configuration.Manager.DatabaseInfo> databasesInfo = new List<Configuration.Manager.DatabaseInfo>(); Data ieeeRecordData = new Data(); databasesInfo.Add(Configuration.Manager.getDatabaseInfo(ref configuration, Configuration.Manager.ConfigurationElements.IEEE_MAL)); databasesInfo.Add(Configuration.Manager.getDatabaseInfo(ref configuration, Configuration.Manager.ConfigurationElements.IEEE_MAM)); databasesInfo.Add(Configuration.Manager.getDatabaseInfo(ref configuration, Configuration.Manager.ConfigurationElements.IEEE_MAS)); databasesInfo.Add(Configuration.Manager.getDatabaseInfo(ref configuration, Configuration.Manager.ConfigurationElements.IEEE_IAB)); databasesInfo.Add(Configuration.Manager.getDatabaseInfo(ref configuration, Configuration.Manager.ConfigurationElements.IEEE_CID)); databasesInfo.Add(Configuration.Manager.getDatabaseInfo(ref configuration, Configuration.Manager.ConfigurationElements.IEEE_Ethertype)); databasesInfo.Add(Configuration.Manager.getDatabaseInfo(ref configuration, Configuration.Manager.ConfigurationElements.IEEE_Manufacturer)); databasesInfo.Add(Configuration.Manager.getDatabaseInfo(ref configuration, Configuration.Manager.ConfigurationElements.IEEE_Operator)); if (callback != null) callback(States.start, Count, databasesInfo.Count, ieeeRecordData.Count()); foreach (Configuration.Manager.DatabaseInfo databaseInfo in databasesInfo) { if (callback != null) callback(States.update, Count++ +1, databasesInfo.Count, ieeeRecordData.Count()); PCLStorage.IFile file = null; try { if (doReset) throw new PCLStorage.Exceptions.FileNotFoundException("Resetting database"); file = await PCLStorage.FileSystem.Current.RoamingStorage.GetFileAsync(databaseInfo.fileName); using (Stream stream = await file.OpenAsync(PCLStorage.FileAccess.Read)) { Byte[] b = new Byte[stream.Length]; if (stream.Read(b, 0, b.Length) > 0) ieeeRecordData.Add(b.GetString()); } } catch { using (HttpClient client = new HttpClient()) { String payLoad = await client.GetStringAsync(databaseInfo.Uri); ieeeRecordData.Add(payLoad); file = await PCLStorage.FileSystem.Current.RoamingStorage.CreateFileAsync(databaseInfo.fileName, PCLStorage.CreationCollisionOption.ReplaceExisting); using (Stream stream = await file.OpenAsync(PCLStorage.FileAccess.ReadAndWrite)) { Byte[] b = payLoad.GetBytes(); stream.Write(b, 0, b.Length); } Configuration.Manager.setTimeStamp(ref configuration); } } } if (callback != null) callback(States.done, Count, databasesInfo.Count, ieeeRecordData.Count()); return (ieeeRecordData); }