public async Task <StreamUploadResponse> UpdateWorkers(StreamUploadRequest request) { var memoryStream = new MemoryStream(); try { await request.Stream.CopyToAsync(memoryStream); var workers = NetHelper.DeserializeFromStream <Workers>(memoryStream); ViewModel.Instance.WorkersPropertyEventsRemove(); ViewModel.Instance.Workers = workers.Clone(); ViewModel.Instance.WorkersPropertyEventsAdd(); Workers.SaveWorkers(workers); var date = Workers.GetWorkersLastUpdateTime(); return(new StreamUploadResponse { ResponseFlag = true, Date = date }); } catch (Exception ex) { throw new FaultException(ex.Message); } finally { memoryStream.Dispose(); } }
private void SaveCommand(object parameter) { Debug.WriteLine("Save button command."); Workers.SaveWorkers(Workers); ApplyWtmSettingsAndSave(); }
private async Task UpdateWorkersFromServer(StreamWriter logFile) { bool addressOk = ValidateServerAddress(logFile); if (!addressOk) { return; } var serverAddress = BuildServerAddress(WtmSettings.ServerName, Constants.AccessPoint); var channel = Service.NewChannel(serverAddress); DateTime remoteWorkersDate = default(DateTime); string errorMessage = "Failed to update Workers from local server."; try { remoteWorkersDate = await channel.GetWorkersDateAsync(); } catch (Exception ex) { logFile?.WriteLine(errorMessage + " " + ex.Message); NetHelper.CloseChannel(channel); return; } if (remoteWorkersDate == default(DateTime)) { NetHelper.CloseChannel(channel); logFile?.WriteLine(errorMessage); return; } var localWorkersDate = Workers.GetWorkersLastUpdateTime(); if (localWorkersDate >= remoteWorkersDate) { logFile?.WriteLine($"{Constants.WorkersFile} is up to date."); NetHelper.CloseChannel(channel); return; } NetHelper.CloseChannel(channel); // Open stream channel for workers download serverAddress = BuildServerAddress(WtmSettings.ServerName, Constants.StreamServer); var streamChannel = Service.NewStreamChannel(serverAddress); Workers workers = null; try { var response = await streamChannel.GetWorkersAsync().ConfigureAwait(false); if (response != null) { var memoryStream = new MemoryStream(); await response.Stream.CopyToAsync(memoryStream); workers = NetHelper.DeserializeFromStream <Workers>(memoryStream); } if (workers == null) { throw new NullReferenceException("The received data are null."); } } catch (Exception ex) { logFile?.WriteLine(errorMessage + " " + ex.Message); NetHelper.CloseChannel(streamChannel); return; } bool wResult = Workers.SaveWorkers(workers); if (!wResult) { logFile?.WriteLine("Workers have been received from local server but could not be saved."); NetHelper.CloseChannel(streamChannel); return; } IsInitializingWtm = true; Workers.PropertyChanging -= Workers_PropertyChanging; Workers.PropertyChanged -= Workers_PropertyChanged; Workers = new Workers(workers.WorkerList, workers.PowerCost, workers.CoinType, workers.DisplayCoinAs, workers.NetworkScanMethod); Workers.PropertyChanging += Workers_PropertyChanging; Workers.PropertyChanged += Workers_PropertyChanged; IsInitializingWtm = false; logFile?.WriteLine("Workers have been received from local server and successfully updated."); NetHelper.CloseChannel(streamChannel); }