private void StoreLocally(ProcessCompletedEventArgs e, MeasurementPersistResult result) { if (string.IsNullOrEmpty(this.LocalStoreFolder)) { log.Append(string.Format("Local storage is disabled. Data from {0} is lost.", e.Source), EventLogEntryType.Warning, true); return; } if (!System.IO.Directory.Exists(this.LocalStoreFolder)) { System.IO.Directory.CreateDirectory(this.LocalStoreFolder); } string filename = string.Format("{0}-{1}.xml", DateTime.Now.ToString("yyyyMMddHHmmssfff"), e.Source.GetSafeFileName()); if (null != result && null != result.SaveResult) { // remove successfully saved measurements from package before local storage List <MeasurementModel> failedMeasurements = new List <MeasurementModel>(); foreach (var f in result.SaveResult.Failures) { // list failed measurements failedMeasurements.Add(e.MeasurementPackage.Measurements[f.Index]); } // remowe all measurements and add failed measurements e.MeasurementPackage.Measurements.Clear(); e.MeasurementPackage.Measurements = failedMeasurements; } this.SerializeToFile(e.MeasurementPackage, System.IO.Path.Combine(this.LocalStoreFolder, filename)); }
public MeasurementPersistResult Persist(MeasurementPackage package) { // persist directly to measurements database MeasurementPersistResult persisted; using (Savonia.Measurements.Database.Repository r = new Database.Repository()) { var result = r.SaveMeasurementsAsync(package.Key, package.Measurements.ToArray()); persisted = new MeasurementPersistResult(result.Result); } return(persisted); }
private bool Persist(ProcessCompletedEventArgs e, bool storeLocallyIfFailed = true) { bool saved = false; MeasurementPersistResult result = null; try { result = this.repository.Persist(e.MeasurementPackage); if (null == result || !result.Persisted) { if (storeLocallyIfFailed) { this.StoreLocally(e, result); if (null != result.Exception) { log.Append(string.Format("Persist to {1} failed for {2} with exception.{0}{0}Measurements stored locally.{0}{0}Exception details: {3}", Environment.NewLine, this.repository.Name, e.Source, result.Exception.ToString()), EventLogEntryType.Warning, true); } else { log.Append(string.Format("Persist to {1} failed for {2}.{0}{0}Measurements stored locally.", Environment.NewLine, this.repository.Name, e.Source), EventLogEntryType.Warning, true); } } lock (locker) { this.lastSaveState = false; } } else { saved = true; // save was successfull lock (locker) { this.lastSaveState = true; } } } catch (Exception ex) { lock (locker) { this.lastSaveState = false; } log.Append(string.Format("Persist to {1} failed for {2}.{0}{0}Exception details: {3}", Environment.NewLine, this.repository.Name, e.Source, ex.ToString()), EventLogEntryType.Error, true); if (storeLocallyIfFailed) { this.StoreLocally(e, result); } } return(saved); }
public MeasurementPersistResult Persist(MeasurementPackage package) { MeasurementPersistResult persisted = new MeasurementPersistResult(); MeasurementsServiceV1.MeasurementsServiceClient client = new MeasurementsServiceV1.MeasurementsServiceClient(); try { var result = client.SaveMeasurementPackage(package); persisted.SaveResult = result; client.Close(); } catch (Exception ex) { persisted.Exception = ex; if (client.State != System.ServiceModel.CommunicationState.Closed) { client.Abort(); } } client = null; return(persisted); }