public void JobQueued(string deviceId, DataTransferJob job) { if (job is DownloadMediaStillJob3 stillDownloadJob) { lock (_jobs) { _jobs.Add(new StillDownloadJobEntry(deviceId, stillDownloadJob, NotifyChanged)); } } else { Console.WriteLine("Unable to monitor job of unknown type {0}", job.GetType()); } }
public void JobStarted(string deviceId, DataTransferJob job) { /* * lock (_jobs) * { * foreach (TransferJobEntry entry in _jobs) * { * if (ReferenceEquals(entry.Job, job)) * { * * } * } * } */ NotifyChanged(job); }
private void TransferData(bool readOnly) { Interlocked.Exchange(ref _cancelFlag, 0); txtLog.Clear(); BuildFilter(); if (rbSrcServer.Checked && rbTgtServer.Checked) { // server-to-server transfer // resolve source address string[] sourceAddrParts = txtSrcServer.Text.Split(';'); if (sourceAddrParts.Length != 2) { throw new ApplicationException("Source address not in format 'env;host[:port]'"); } string sourceEnv = sourceAddrParts[0]; string sourceAddress = sourceAddrParts[1]; // resolve target address string[] targetAddrParts = txtTgtServer.Text.Split(';'); if (targetAddrParts.Length != 2) { throw new ApplicationException("Target address not in format 'env;host[:port]'"); } string targetEnv = targetAddrParts[0]; string targetAddress = targetAddrParts[1]; // start background data transfer var job = new DataTransferJob { ReadOnly = readOnly, Filter = _filter, DataTypeName = _dataTypeName, SourceClient = new CoreClientFactory(_loggerRef) .SetEnv(sourceEnv) .SetServers(sourceAddress) .SetApplication(Assembly.GetExecutingAssembly()) .Create() }; //job.SourceClient.MaxDataRows = Int32.Parse(txtMaxRows.Text); if (!readOnly) { job.TargetClient = new CoreClientFactory(_loggerRef) .SetEnv(targetEnv) .SetServers(targetAddress) .SetApplication(Assembly.GetExecutingAssembly()) .Create(); } ThreadPool.QueueUserWorkItem(BackgroundTransfer, job); _loggerRef.Target.LogDebug("Job running in background..."); } else if (rbSrcServer.Checked && rbTgtFilename.Checked) { // server-to-archive transfer // resolve source address string[] sourceAddrParts = txtSrcServer.Text.Split(';'); if (sourceAddrParts.Length != 2) { throw new ApplicationException("Source address not in format 'env;host[:port]'"); } string sourceEnv = sourceAddrParts[0]; string sourceAddress = sourceAddrParts[1]; // resolve target filename // start background data transfer var job = new DataTransferJob { ReadOnly = readOnly, Filter = _filter, DataTypeName = _dataTypeName, SourceClient = new CoreClientFactory(_loggerRef) .SetEnv(sourceEnv) .SetServers(sourceAddress) .SetApplication(Assembly.GetExecutingAssembly()) .Create() }; //job.SourceClient.MaxDataRows = Int32.Parse(txtMaxRows.Text); if (!readOnly) { job.TargetStream = new StreamWriter(txtTgtFilename.Text); } ThreadPool.QueueUserWorkItem(BackgroundTransfer, job); _loggerRef.Target.LogDebug("Job running in background..."); } else if (rbSrcFilename.Checked && rbTgtServer.Checked) { // archive-to-server transfer // resolve source filename // resolve target address string[] targetAddrParts = txtTgtServer.Text.Split(';'); if (targetAddrParts.Length != 2) { throw new ApplicationException("target address not in format 'env;host[:port]'"); } string targetEnv = targetAddrParts[0]; string targetAddress = targetAddrParts[1]; // start background data transfer var job = new DataTransferJob { ReadOnly = readOnly, Filter = _filter, DataTypeName = _dataTypeName, SourceStream = new StreamReader(txtSrcFilename.Text) }; if (!readOnly) { job.TargetClient = new CoreClientFactory(_loggerRef) .SetEnv(targetEnv) .SetServers(targetAddress) .SetApplication(Assembly.GetExecutingAssembly()) .Create(); } ThreadPool.QueueUserWorkItem(BackgroundTransfer, job); _loggerRef.Target.LogDebug("Job running in background..."); } else { _loggerRef.Target.LogDebug("Not implemented!"); } }
private void NotifyChanged(DataTransferJob job) { _context.Clients.All.SendAsync("transfers", ListTransfers()); }