Ejemplo n.º 1
0
 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());
     }
 }
Ejemplo n.º 2
0
 public void JobStarted(string deviceId, DataTransferJob job)
 {
     /*
      * lock (_jobs)
      * {
      *  foreach (TransferJobEntry entry in _jobs)
      *  {
      *      if (ReferenceEquals(entry.Job, job))
      *      {
      *
      *      }
      *  }
      * }
      */
     NotifyChanged(job);
 }
Ejemplo n.º 3
0
        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!");
            }
        }
Ejemplo n.º 4
0
 private void NotifyChanged(DataTransferJob job)
 {
     _context.Clients.All.SendAsync("transfers", ListTransfers());
 }