private void OnThreadStart()
 {
     do
     {
         Thread.Sleep(TimeBetweenChecks);
         if (_queue.Count == 0 || (_queue.Count < MaxQueueCache && (DateTime.Now - _lastWrite) < TimeSinceLastWrite))
         {
             Thread.Sleep(50);
             continue;
         }
         if (OnLogWritten == null)
         {
             continue;
         }
         var logItems = new List <LogItem>();
         for (var i = 0; i < _queue.Count; i++)
         {
             LogItem item = _queue.Dequeue();
             logItems.Add(item);
         }
         OnLogWritten(logItems);
         _lastWrite = DateTime.Now;
     } while (!_disposing);
     _loggerThread.Abort();
     _loggerThread = null;
     FinalizeDispose();
 }
Beispiel #2
0
 public void Update()
 {
     while (0 < eventQueue.GetCount())
     {
         NetworkEvent evt = eventQueue.Dequeue();
         evt.Event();
     }
 }
Beispiel #3
0
        private void OutgoingStreamDispatcher()
        {
            while (!Broken)
            {
                var block = outgoing_stream.Dequeue(1000);
                if (block == null)
                {
                    //TRACE("DISPATCH CONFORT LOOP");
                    continue;
                }
                switch (block.ContentType)
                {
                case StreamBlock.ContentTypes.StreamData:
                case StreamBlock.ContentTypes.OOBData:
                    TRACE("DISPATCH {0} BLOCK OF {1} BYTES", block.ContentType != StreamBlock.ContentTypes.OOBData ? "OOB DATA" : "DATA", block.TotalBytes);
                    try
                    {
                        TotalTXBytes += os_socket.Send(block.Data, 0, block.TotalBytes,
                                                       block.ContentType != StreamBlock.ContentTypes.OOBData
                                                               ? SocketFlags.None
                                                               : SocketFlags.OutOfBand);
                    }
                    catch (ObjectDisposedException e)
                    {
                        STrace.Exception(GetType().FullName, e, "SEND, OBJECT DISPOSED");
                    }
                    catch (Exception e)
                    {
                        STrace.Exception(GetType().FullName, e, "SEND, ONCE ON INTERNAL ERROR");
                        OnceOnInternalError();
                    }
                    break;

                case StreamBlock.ContentTypes.Disconnect:
                    try
                    {
                        TRACE("DISPATCH SHUTDOWN/CLOSE BLOCK");
                        os_socket.Shutdown(SocketShutdown.Send);
                        os_socket.Close();
                        Broken = true;
                        return;
                    } catch (ObjectDisposedException)
                    {
                    }
                    break;
                }
            }
        }
Beispiel #4
0
 private void SendAsyncResult(IAsyncResult ar)
 {
     try {
         var sent = os_socket.EndSend(ar);
         outgoing_stream.Dequeue();
         TotalTXBytes += sent;
         TRACE("SEND ASYNC RESULT {0}/{1}", sent, TotalTXBytes);
         DispatchBlock(null);
     } catch (ObjectDisposedException e)
     {
         T.EXCEPTION(e, "SEND ASYNC RESULT, OBJECT DISPOSED");
     }
     catch (Exception e)
     {
         T.EXCEPTION(e, "SEND ASYNC RESULT, ONCE ON INTERNAL ERROR");
         OnceOnInternalError();
     }
 }
Beispiel #5
0
        public void Consume()
        {
            var time = 0;

            while (true)
            {
                if (_crackedPasswords.Count() != 0)
                {
                    time = 0;

                    var pass       = _crackedPasswords.Dequeue();
                    var hashedPass = pass.HashedPass;

                    Console.WriteLine("Cracked: " + pass);

                    _mutex.WaitOne();
                    _passwordsToCrack[hashedPass] = true;

                    if (_passwordsToCrack.All(p => p.Value == true))
                    {
                        _mutex.ReleaseMutex();
                        ConsumptionFinished("All passwords cracked");
                        return;
                    }
                    _mutex.ReleaseMutex();
                }
                else if (_passwordsToCrack.All(p => p.Value == true))
                {
                    ConsumptionFinished("All passwords cracked");
                    return;
                }
                else
                {
                    Thread.Sleep(20);
                    if (++time != 500)
                    {
                        continue;
                    }

                    ConsumptionFinished("No more passwords found for long time");
                    return;
                }
            }
        }
Beispiel #6
0
        public static void SaveXml(LineContainer slc, string sline)
        {
            savingQueue.Enqueue(new LineMessage(slc, sline));
            if (savingThread == null)
            {
                savingThread = new Thread(() =>
                {
                    while (true)
                    {
                        if (savingQueue.Count == 0)
                        {
                            Thread.Sleep(10);
                            continue;
                        }


                        var linemsg    = savingQueue.Dequeue();
                        var time       = DateTime.Now;
                        var folderPath = ConfigurationManager.AppSettings["betradar_xml_files"] + linemsg.Line + "\\" +
                                         time.Year +
                                         "_" +
                                         time.Month + "_" + time.Day + "_" + time.Hour + "_00" + "\\";
                        if (!Directory.Exists(folderPath))
                        {
                            Directory.CreateDirectory(folderPath);
                        }

                        var timestamp = time.ToFileTime().ToString();

                        var filename     = folderPath + linemsg.LineContainer.Attributes["type"] + timestamp;
                        int index        = 1;
                        var tempfilename = filename;
                        while (!SaveFile(linemsg.LineContainer, tempfilename))
                        {
                            tempfilename = filename + " " + index++;
                        }
                    }
                });
                savingThread.Start();
            }
        }
Beispiel #7
0
        private bool GetLowPriorityData(out T data)
        {
            bool ret = false;

            data = default(T);

            if (_pauseLowQueue)
            {
                return(ret);
            }

            if (_lowFailQueue.Count > 0)
            {
                data = _lowFailQueue.Dequeue();
                ret  = true;
            }
            else if (_lowQueue.Count > 0)
            {
                data = _lowQueue.Dequeue();
                ret  = true;
            }

            return(ret);
        }
Beispiel #8
0
        private bool GetNextSceneData(out T data)
        {
            bool ret = false;

            data = default(T);

            if (_pauseNextSceneQueue)
            {
                return(ret);
            }

            if (_nextSceneFailQueue.Count > 0)
            {
                data = _nextSceneFailQueue.Dequeue();
                ret  = true;
            }
            else if (_nextSceneQueue.Count > 0)
            {
                data = _nextSceneQueue.Dequeue();
                ret  = true;
            }

            return(ret);
        }
Beispiel #9
0
        private static void WorkerThread(ThreadContext tc)
        {
            while (m_bRunning) //(!m_bImportError)
            {
                try
                {
                    int counter         = 0;
                    int iLiveQueueCount = m_sqMessages.Count;

                    if (!m_liveClient.IsAlive)
                    {
                        m_sqMessages.Clear();
                    }
                    else if (iLiveQueueCount > 0)
                    {
                        while (m_sqMessages.Count > 0)
                        {
                            counter++;

                            LineContainer lc = m_sqMessages.Dequeue();

                            eFileSyncResult fsr = eFileSyncResult.Failed;
                            Debug.Assert(lc != null);

                            try
                            {
                                string     sSrcTime  = lc.Attributes["srctime"];
                                DateTimeSr dtSrcTime = DateTimeSr.FromString(sSrcTime);
                                string     sSrcDelay = (DateTime.UtcNow - dtSrcTime.UtcDateTime).ToString();

                                string     sTime = lc.Attributes["time"];
                                DateTimeSr dt    = DateTimeSr.FromString(sTime);
                                TimeSpan   ts    = DateTime.UtcNow - dt.UtcDateTime;

                                string sType = lc.Attributes.ContainsKey("line") ? lc.Attributes["line"] : "none";

                                m_logger.InfoFormat("Queue={0} Delay={1} Size={2}", iLiveQueueCount, ts, lc.OriginalXml.Length);

                                if (ConfigurationManager.AppSettings["betradar_xml_files"] != null)
                                {
                                    SaveXml(lc, "Live");
                                }


                                fsr = LineSr.SyncRoutines(eUpdateType.LiveBet, string.Format("Host='{0}' Connected={1}; SrcDelay={2}; Delay={3}; Line={4}", m_sHost, DateTime.Now - m_dtConnected, sSrcDelay, ts, sType), DalStationSettings.Instance.UseDatabaseForLiveMatches, null, delegate(object objParam)
                                                          { return(ProviderHelperNew.MergeFromLineContainer(lc)); });
                            }
                            catch (Exception excp)
                            {
                                fsr = eFileSyncResult.Failed;
                                m_logger.Excp(excp, "WorkerThread() ERROR for {0}", lc);
                            }


                            if (fsr == eFileSyncResult.Failed)
                            {
                                m_liveClient.Disconnect();
                                RemoveLiveMatches(eServerSourceType.BtrPre);
                                RemoveLiveMatches(eServerSourceType.BtrLive);
                            }
                        }
                        LineSr.ProcessDataSqlUpdateSucceeded(eUpdateType.LiveBet, string.Format("liveUpdate {0} messages", counter));
                    }
                }
                catch (Exception excp)
                {
                    m_logger.Excp(excp, "WorkerThread() general ERROR");
                }

                Thread.Sleep(10);
            }
        }
Beispiel #10
0
        protected void LoggerThread(ThreadContext tc)
        {
            FileInfo fi = new FileInfo(m_sLogleFilePath);

            StringBuilder sb = new StringBuilder();

            try
            {
                while (!tc.IsToStop)
                {
                    if (fi.Exists && fi.Length > m_lMaxSize)
                    {
                        string sExtension   = Path.GetExtension(m_sLogleFilePath);
                        string sNewFileName = string.Format("{0}.backup__{1:dd-MMM-yyyy__HH-mm-ss}{2}.", m_sLogleFilePath, DateTime.Now, sExtension);

                        File.Move(m_sLogleFilePath, sNewFileName);
                    }

                    using (StreamWriter sw = new StreamWriter(m_sLogleFilePath, true))
                    {
                        while (!tc.IsToStop)
                        {
                            if (m_sqMessages.Count > 0)
                            {
                                LoggerRecord record = m_sqMessages.Dequeue();

                                sb.AppendFormat("{0} {1:dd-MMM-yyyy HH:mm:ss.ffffff} ", record.LoggerLevel, record.Time);

                                if (record.Args != null && record.Args.Length > 0)
                                {
                                    sb.AppendFormat(record.Message, record.Args);
                                }
                                else
                                {
                                    sb.Append(record.Message);
                                }

                                sb.Append("\r\n");

                                sw.Write(sb.ToString());
                                sw.Flush();
                            }

                            sb.Clear();
                            fi.Refresh();

                            if (fi.Length > m_lMaxSize)
                            {
                                break;
                            }

                            Thread.Sleep(1);
                        }
                    }
                }
            }
            catch (Exception excp)
            {
                Console.ForegroundColor = ConsoleColor.Red;

                Console.WriteLine(ExcpHelper.FormatException(excp, "LiveLog.WriteConsole('{0}') ERROR", m_sLogleFilePath));
            }
        }
Beispiel #11
0
    private Boolean ThreadRun_Helper(SyncQueue<Int32?> queue, Boolean useComplexCheck, ref Int32? index) {
      try {
        index = queue.Dequeue();
        if (index == null) {
          return false;
        } else {
          var result = User32.SendMessage(this.LVHandle, Interop.MSG.LVM_ISITEMVISIBLE, index.Value, 0) != IntPtr.Zero;
          //var itemBounds = new User32.RECT();
          //var lvi = this.ToLvItemIndex(index.Value);

          //User32.SendMessage(this.LVHandle, MSG.LVM_GETITEMINDEXRECT, ref lvi, ref itemBounds);

          //var r = new Rectangle(itemBounds.Left, itemBounds.Top, itemBounds.Right - itemBounds.Left, itemBounds.Bottom - itemBounds.Top);

          //if (useComplexCheck)
          //	return index < Items.Count && r.IntersectsWith(this.ClientRectangle);
          //else
          //	return r.IntersectsWith(this.ClientRectangle);
          return result;
        }
      } catch {
        return false;
      }
    }