Esempio n. 1
0
 /// <summary>Thread delegate for replication.</summary>
 public void ThreadMain()
 {
     while (!Abort && Thread.CurrentThread.ThreadState == System.Threading.ThreadState.Running && !AppDomain.CurrentDomain.IsFinalizingForUnload())
     {
         IQueued Item = null;
         while (Q.Count > 0 && (Item == null || Q.Count > 1))
         {
             try {
                 Item = (IQueued)System.Collections.Queue.Synchronized(Q).Dequeue();
                 Item.Run();
                 if (Item.Status == QueuedResult.Retry)
                 {
                     Item.Reset();
                     Enqueue(Item);
                 }
             }
             //PC Security Defect Fix -CH1 START- Modified the below code to add logging inside the catch block
             catch (Exception ex) { Logger.Log(ex.ToString()); }
         }
         //PC Security Defect Fix -CH1 END- Modified the below code to add logging inside the catch block
         Thread.Sleep(SleepTime);
         if (Web.LogModule.Instances <= 0)
         {
             Abort = true;
         }
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Process Message
        /// </summary>
        /// <param name="message">Message</param>
        /// <returns>Task</returns>
        protected virtual async Task Process(IQueued <T> message)
        {
            try
            {
                var data = await message.Data();

                if (null != data)
                {
                    var successful = await this.processor.Process(data);

                    if (successful)
                    {
                        await message.Complete();
                    }
                    else
                    {
                        await message.Abandon();
                    }
                }
                else
                {
                    await message.Abandon();
                }
            }
            catch
            {
                message.Abandon().Wait();

                throw;
            }
        }
Esempio n. 3
0
        private static async Task ReportStatus(
            IResultFactory results,
            IPipeline <string> filePipeline,
            IPipeline <FileResult> metadataPipeline,
            IQueued transferPipe,
            CancellationToken token)
        {
            await Task.Run(() =>
            {
                var start             = DateTime.Now;
                Console.CursorVisible = false;

                while (!token.IsCancellationRequested)
                {
                    var builder = new StringBuilder();

                    builder.AppendLine(string.Format("{0,-40}", $"Files Completed: {results.TotalFiles}"));
                    builder.AppendLine(string.Format("{0,-40}", $"Errors: {results.TotalErrors}"));
                    builder.AppendLine(string.Format("{0,-40}", $"Awaiting Analysis: {filePipeline.Buffer.Count}"));
                    builder.AppendLine(string.Format("{0,-40}", $"Awaiting Transfer: {transferPipe.GetWaitingTasks()}"));
                    builder.AppendLine(string.Format("{0,-40}", $"Time elapsed: {(DateTime.Now - start)}"));
                    builder.AppendLine(string.Format("{0,-40}", $"Size of transfer: {results.TotalSize / 1024 / 1024}MBs"));

                    Console.Write(builder.ToString());
                    Console.SetCursorPosition(0, Console.CursorTop - 6);
                    Thread.Sleep(25);
                }

                Console.WriteLine("Complete.");
            });
        }
Esempio n. 4
0
 public LogCollector(IQueued<LogItem> qThread, ILogWriter writer)
 {
     this.writer = writer;
     filterQue = new ConcurrentQueue<Action<HashSet<int>>>();
     filter = new HashSet<int>();
     this.qThread = qThread;
     qThread.SetTimeout(writer.GetTimeout());
     qThread.OnReceive += Receive;
     qThread.OnTimeout += TimeOut;
 }
Esempio n. 5
0
 public LogCollector(IQueued <LogItem> qThread, ILogWriter writer)
 {
     this.writer  = writer;
     filterQue    = new ConcurrentQueue <Action <HashSet <int> > >();
     filter       = new HashSet <int>();
     this.qThread = qThread;
     qThread.SetTimeout(writer.GetTimeout());
     qThread.OnReceive += Receive;
     qThread.OnTimeout += TimeOut;
 }
Esempio n. 6
0
        void ActivationTestHelper(Tester <T> tester, IQueued <T> tested)
        {
            int retry = 30;

            while (!tested.Active && retry > 0)
            {
                retry--;
                Thread.Sleep(SleepDelay);
            }
            Assert.AreEqual(true, tested.Active);
        }
Esempio n. 7
0
 /// <summary>Places item onto the queue</summary>
 public static void Enqueue(IQueued Item)
 {
     if (Web.LogModule.Instances > 0)
     {
         if (Queues.Count == 0)
         {
             new Queue();
         }
         ((Queue)Queues[0]).Enq(Item);
     }
 }
Esempio n. 8
0
 public Tester(IQueued <T1> tested)
 {
     tested.OnReceive += Received;
     tested.OnTimeout += TimeOut;
 }
Esempio n. 9
0
 /// <summary>Places item onto the queue</summary>
 private void Enq(IQueued Item)
 {
     System.Collections.Queue.Synchronized(Q).Enqueue(Item);
 }