Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        private void SaveCommand(object parameter)
        {
            Debug.WriteLine("Save button command.");

            Workers.SaveWorkers(Workers);

            ApplyWtmSettingsAndSave();
        }
Exemplo n.º 3
0
        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);
        }