示例#1
0
#pragma warning disable CA1063, CA1816 // Implement IDisposable Correctly
        /// <inheritdoc />
        public void Dispose()
#pragma warning restore CA1063, CA1816 // Implement IDisposable Correctly
        {
            Debug.Assert(!Cache.Contains(this), "!Cache.Contains(this)");
            this.Clear();
            Cache.Enqueue(this);
        }
示例#2
0
        public async Task <bool> CheckMonthStatsAsync(IStockModel stock, CancellationToken token = default(CancellationToken))
        {
            if (stock.MonthStatsExpired)
            {
                lock (stock)
                {
                    if (!_monthStatsQueue.Contains(stock))
                    {
                        _monthStatsQueue.Enqueue(stock);
                    }
                }

                while (stock.MonthStatsExpired && !token.IsCancellationRequested)
                {
                    await Task.Delay(100, token);
                }

                if (token.IsCancellationRequested)
                {
                    return(false);
                }
            }

            return(true);
        }
示例#3
0
 /// <summary>
 /// 设置值
 /// </summary>
 /// <param name="key">key值</param>
 /// <param name="value">需要写入的value</param>
 /// <returns>成功状态</returns>
 public bool SetValue(T key, U value)
 {
     if (keyValues.TryGetValue(key, out var oldValue))
     {
         keyValues.TryUpdate(key, value, oldValue);
         if (!keyUpdateQueue.Contains(key))
         {
             keyUpdateQueue.Enqueue(key);
         }
         return(true);
     }
     else
     {
         var result = dBHelper.CommandSQL($"SELECT TOP 1 [{valueName}] FROM {tableName} WHERE {condition} {keyName}='{key}'");
         if (result.EffectNum > 0)
         {
             var val = (U)result.Collection[0][valueName];
             keyValues.AddOrUpdate(key, value, (k, v) => value);
             if (!keyUpdateQueue.Contains(key) && !val.Equals(value))
             {
                 keyUpdateQueue.Enqueue(key);
             }
             return(true);
         }
     }
     return(false);
 }
示例#4
0
 private void SetState(ConcurrentQueue <Patron> queueToBar)
 {
     if (currentState == State.DrinkingBeer)
     {
         currentState = State.LeavingPub;
         return;
     }
     if (currentState == State.FindChair)
     {
         currentState = State.DrinkingBeer;
         return;
     }
     if (HasBeer() && chairUsed == null)
     {
         currentState = State.FindChair;
         return;
     }
     if (!HasBeer() && !queueToBar.Contains(this))
     {
         currentState = State.GoingToBar;
         return;
     }
     if (!HasBeer() && queueToBar.Contains(this))
     {
         currentState = State.AwaitingBeer;
         return;
     }
 }
示例#5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="filenameList"></param>
        public static void PlayAsync(IEnumerable <string> filenameList)
        {
            var path = Application.StartupPath + "\\Config\\Wave\\";

            UnmanagedCode.Assert();
            try
            {
                foreach (var fileName in filenameList)
                {
                    var filefullname = path + fileName;
                    if (!_fileNames.Contains(filefullname))
                    {
                        if (!File.Exists(filefullname))
                        {
                            continue;
                        }
                        _fileNames.Enqueue(filefullname);
                    }
                    sndPlaySound(filefullname,
                                 (int)(SoundFlags.SND_FILENAME | SoundFlags.SND_NODEFAULT | SoundFlags.SND_ASYNC));
                    // PlaySound(path + fileName, IntPtr.Zero, (int)(SoundFlags.SND_FILENAME | SoundFlags.SND_NODEFAULT | SoundFlags.SND_ASYNC));
                }
            }
            finally
            {
                CodeAccessPermission.RevertAssert();
            }
        }
示例#6
0
        public static void ConcurrentQueue()
        {
            ConcurrentQueue <string> myQueue = new ConcurrentQueue <string>();

            //Add items to the concurrent queue
            myQueue.Enqueue("Abhy");
            myQueue.Enqueue("Sangs");
            myQueue.Enqueue("Unni");

            //Check if the queue contains an item
            var isContaining = myQueue.Contains <string>("Abhy");

            isContaining = myQueue.Contains <string>("Sangs");
            isContaining = myQueue.Contains <string>("Unni");

            string item = string.Empty;

            //Peek for next item on concurrent queue
            var isPeekSuccess = myQueue.TryPeek(out item);

            //Remove items from the concurrent queue
            var isDequeueSuccess = myQueue.TryDequeue(out item);

            isDequeueSuccess = myQueue.TryDequeue(out item);
            isDequeueSuccess = myQueue.TryDequeue(out item);
            isDequeueSuccess = myQueue.TryDequeue(out item);

            var isNextItemAvailable = myQueue.TryPeek(out item);
        }
示例#7
0
 protected virtual void Dispose(bool disposing)
 {
     if (disposing)
     {
         Debug.Assert(!Cache.Contains(this), "!Cache.Contains(this)");
         this.Clear();
         Cache.Enqueue(this);
     }
 }
示例#8
0
        public static void AddProvider(IDiacriticProvider provider)
        {
            if (Providers.Contains(provider))
            {
                throw new Exception("Provider already added");
            }

            Providers.Enqueue(provider);
            BuildIndex();
        }
 /// <summary>
 /// Add one item into this set.
 /// </summary>
 /// <param name="item">The item to add</param>
 public void Add(T item)
 {
     lock (_syncLock)
     {
         if (!_queue.Contains(item))
         {
             _queue.Enqueue(item);
         }
     }
 }
示例#10
0
 private void DeactivateNode(IRiakNode node)
 {
     lock (node)
     {
         if (!_offlineNodes.Contains(node))
         {
             _loadBalancer.RemoveNode(node);
             _offlineNodes.Enqueue(node);
         }
     }
 }
示例#11
0
 /// <summary>
 /// Update pool with new ID
 /// </summary>
 /// <param name="id">ID</param>
 internal static void UpdateSharedIdPool(long id)
 {
     if (SharedIdPool.Contains(id))
     {
         return;
     }
     SharedIdPool.Enqueue(id);
     if (SharedIdPool.Count > 30)
     {
         SharedIdPool.TryDequeue(out _);
     }
 }
        public static void ReturnTextureRGB24(Texture2D tex)
        {
            if (tex == null)
            {
                return;
            }

            if (_circlePool.Contains(tex))
            {
                UnityEngine.Debug.LogError($"ReturnTextureRGB24 was already returned!!!");
                return;
            }

            _gridPool.Enqueue(tex);
        }
示例#13
0
        /// <summary>
        /// Handle an event message from the websocket
        /// </summary>
        /// NOITE: CHANGE TO USE STRING INSTEAD OF JToken
        private void HandleEvent(JToken doc)
        {
            if (doc.IsNullOrEmpty())
            {
                return;
            }

            var data = doc["data"];

            if (data.IsNullOrEmpty())
            {
                return;
            }
            if (data.Type != JTokenType.Object)
            {
                return;
            }

            // Ignore messages I have send
            if (!data["id"].IsNullOrEmpty() && Guid.TryParse((string)data["id"], out var guid))
            {
                if (_myLatestMessages.Contains(guid))
                {
                    return;
                }
            }

            _parser.Process(doc["event"]?.Value <string>(), data);
        }
示例#14
0
 internal void QueueAccount(Account a)
 {
     if (a != null && !accountQueue.Contains(a))
     {
         accountQueue.Enqueue(a);
     }
 }
示例#15
0
 internal void QueueTransaction(Transaction t)
 {
     if (t != null && !transactionQueue.Contains(t))
     {
         transactionQueue.Enqueue(t);
     }
 }
示例#16
0
 private void InitExchanges( )
 {
     foreach (var exchange in Exchanges.Values)
     {
         exchange.ClearObservers( );
         Observers[exchange.Id] = new CryptoExchangeObserver(exchange);
         exchange.Changed      += (e, coin) =>
         {
             if (!pendingUpdates.Contains(e.Id))
             {
                 pendingUpdates.Enqueue(e.Id);
             }
         };
         var observer = Observers[exchange.Id];
         observer.Next += (e, coin) => Logger.Debug($"{e.Name,-10} {e[coin.Symbol]}");
         exchange.Subscribe(observer);
         CompareTable.AddExchange(exchange);
         try
         {
             Task.Run(() => exchange.StartMonitor(cts.Token), cts.Token);
         }
         catch (Exception e)
         {
             Logger.Error(e);
             throw;
         }
     }
 }
示例#17
0
        public Task CheckRulesForProperty(string propertyName)
        {
            if (OverrideResult == null)
            {
                if (TransferredResults)
                {
                    var oldResults = Results.Where(x => x.Key < 0 && x.Value.TriggerProperties.Contains(propertyName)).ToList();
                    oldResults.ForEach(r => Results.Remove(r.Key));

                    if (!Results.Where(x => x.Key < 0).Any())
                    {
                        TransferredResults = false;
                    }
                }

                foreach (var index in Rules.Values.Where(r => r.TriggerProperties.Contains(propertyName)).Select(r => r.UniqueIndex))
                {
                    if (!ruleQueue.Contains(index))
                    {
                        // System.Diagnostics.Debug.WriteLine($"Enqueue {propertyName}");
                        ruleQueue.Enqueue(index);
                    }
                }

                CheckRulesQueue();

                return(WaitForRules);
            }
            else
            {
                return(Task.CompletedTask);
            }
        }
示例#18
0
 public bool Contains(TElement element)
 {
     lock (_lock)
     {
         return(_internalQueue.Contains(element));
     }
 }
示例#19
0
        /// ************************************************************************************************
        /// <summary>
        /// Gets ID for the station name in German
        /// If there is no ID in local cache, put the station name in the request ID queue to avoid program freezing.
        /// </summary>
        /// <param name="stationName">Name of the desired station in German</param>
        /// <returns>Station ID, if station name exists, "" otherwise</returns>
        public static string GetIdForStation(string stationName)
        {
            if (string.IsNullOrEmpty(stationName))
            {
                return("");
            }

            if (localIdСache.ContainsKey(stationName))
            {
                return(localIdСache[stationName]);
            }
            else
            {
                if (!stationIdRequestQueue.Contains(stationName))
                {
                    stationIdRequestQueue.Enqueue(stationName);

                    if (!stationIdRequestBackgroundWorker.IsBusy)
                    {
                        stationIdRequestBackgroundWorker.RunWorkerAsync();
                    }
                }
                return("");
            }
        }
示例#20
0
        private void SetLightLevel(World world, ConcurrentQueue <BlockCoordinates> lightBfsQueue, BlockCoordinates coordinates, int currentLightLevel, Block block, int lightLevel)
        {
            if (currentLightLevel > 0)
            {
                if (currentLightLevel >= lightLevel)
                {
                    return;
                }

                world.SetBlockLight(coordinates, (byte)Math.Max(currentLightLevel, lightLevel - 1));

                //UpdateNeighbors(world, coordinates);

                return;
            }

            if ((!block.Solid || block.Transparent) && currentLightLevel + 2 <= lightLevel)
            {
                world.SetBlockLight(coordinates, (byte)(lightLevel - 1));

                //UpdateNeighbors(world, coordinates);

                if (!lightBfsQueue.Contains(coordinates))
                {
                    lightBfsQueue.Enqueue(coordinates);
                }
            }
        }
 public bool Contains(T value)
 {
     lock (_lockObject)
     {
         return(_innerQueue.Contains(value));
     }
 }
示例#22
0
        /// <summary>
        /// Analyze payload of IoTHub message, adding timestamp and related sequence numbers into temporary
        /// </summary>
        /// <param name="arg"></param>
        /// <returns></returns>
        private static async Task Client_ProcessEventAsync(ProcessEventArgs arg)
        {
            var     body              = arg.Data.Body.ToArray();
            var     content           = Encoding.UTF8.GetString(body);
            dynamic json              = JsonConvert.DeserializeObject(content);
            int     valueChangesCount = 0;

            foreach (dynamic entry in json)
            {
                var sequence  = (int)entry.SequenceNumber;
                var timestamp = ((DateTime)entry.Value.SourceTimestamp).ToString(_dateTimeFormat);

                _missingSequences.AddOrUpdate(
                    timestamp,
                    (ts) =>
                {
                    return(new List <int>(500)
                    {
                        sequence
                    });
                },
                    (ts, list) =>
                {
                    list.Add(sequence);
                    return(list);
                });

                valueChangesCount++;

                if (!_observedTimestamps.Contains(timestamp))
                {
                    _observedTimestamps.Enqueue(timestamp);
                }
            }
        }
示例#23
0
        public static bool Notify_WalkabilityChanged(RegionDirtyer __instance, IntVec3 c)
        {
            List <Region> regionsToDirty = new List <Region>();

            //regionsToDirty.Clear();
            for (int i = 0; i < 9; i++)
            {
                IntVec3 c2 = c + GenAdj.AdjacentCellsAndInside[i];
                if (c2.InBounds(map(__instance)))
                {
                    Region regionAt_NoRebuild_InvalidAllowed = map(__instance).regionGrid.GetRegionAt_NoRebuild_InvalidAllowed(c2);
                    if (regionAt_NoRebuild_InvalidAllowed != null && regionAt_NoRebuild_InvalidAllowed.valid)
                    {
                        map(__instance).temperatureCache.TryCacheRegionTempInfo(c, regionAt_NoRebuild_InvalidAllowed);
                        regionsToDirty.Add(regionAt_NoRebuild_InvalidAllowed);
                    }
                }
            }

            for (int j = 0; j < regionsToDirty.Count; j++)
            {
                SetRegionDirty(__instance, regionsToDirty[j]);
            }

            //regionsToDirty.Clear();
            ConcurrentQueue <IntVec3> dirtyCells = get_DirtyCells(__instance);

            if (c.Walkable(map(__instance)) && !dirtyCells.Contains(c))
            {
                dirtyCells.Enqueue(c);
            }
            return(false);
        }
        public void Write(IEnumerable <IrcWriteContext> context)
        {
            foreach (var ctx in context)
            {
                switch (ctx.MessageOrigin)
                {
                case MessageOrigin.Channel:
                    _botRuntime.SendMessage(ctx.Message);
                    break;

                case MessageOrigin.Query:
                    _botRuntime.SendQueryMessage(ctx.Message, ctx.User);
                    break;

                case MessageOrigin.Notice:
                    if (!_queue.Contains(ctx.Message))
                    {
                        _botRuntime.SendMessage(ctx.Message);
                    }
                    _queue.Enqueue(ctx.Message);
                    while (_queue.Count > QueueDepth)
                    {
                        string temp;
                        _queue.TryDequeue(out temp);
                    }
                    break;

                case MessageOrigin.Quartz:
                    _botRuntime.SendMessage(ctx.Message);
                    break;
                }
            }
        }
示例#25
0
        private void ClientUpdateWorker()
        {
            while (IsAvailable)
            {
                var currentTimeMillis = TimeManager.CurrentTimeMillis;
                foreach (var networkManager in _networkManagers)
                {
                    if (!(networkManager?.IsAvailable ?? false))
                    {
                        if (!_destroyNetworks.Contains(networkManager))
                        {
                            _destroyNetworks.Enqueue(networkManager);
                        }
                        continue;
                    }

                    if (!networkManager.Connected ||
                        currentTimeMillis - networkManager.LastPacketMillis > Timeout)
                    {
                        networkManager.Disconnect();
                        _destroyNetworks.Enqueue(networkManager);
                        continue;
                    }

                    networkManager.Update();
                }
            }
        }
示例#26
0
 private void StartCountDown(GameGroup gg)
 {
     while (!CountDownQueue.Contains(gg))
     {
         CountDownQueue.Enqueue(gg);
     }
 }
示例#27
0
 protected virtual void QueueOnPropertyChangedEvent(String propertyName)
 {
     if (!eventQueue.Contains(propertyName))
     {
         eventQueue.Enqueue(propertyName);
     }
 }
示例#28
0
        private void Parse(string html, string url)
        {
            string          strRef  = @"(href|HREF)[]*=[]*[""'][^""'#>]+[""']";
            MatchCollection matches = new Regex(strRef).Matches(html);

            foreach (Match match in matches)
            {
                strRef = match.Value.Substring(match.Value.IndexOf('=') + 1)
                         .Trim('"', '\"', '#', '>');
                string fixedStr = Fix(strRef, url);
                if (!Regex.IsMatch(strRef, @"(.html/?)$"))
                {
                    continue;
                }
                string site = Regex.Match(url, @"^https?://(?<site>[^/:]+(:\d*)?/?)").Groups["site"].Value;
                if (!fixedStr.Contains(site) || fixedStr == url || fixedStr == site)
                {
                    continue;
                }
                if (!urlqueue.Contains(fixedStr))
                {
                    urlqueue.Enqueue(fixedStr);
                }
            }
        }
示例#29
0
 public void AddReceiver(IPEndPoint receiverEndPoint)
 {
     if (!_endPoints.Contains(receiverEndPoint))
     {
         _endPoints.Enqueue(receiverEndPoint);
     }
 }
示例#30
0
        public void enqueue(CallbackQueueInterface.ICallbackInfo info)
        {
            if (info.Callback == null)
            {
                return;
            }

            if (!_queue.Contains(info))
            {
                _queue.Enqueue(info);
            }
            else
            {
                Console.WriteLine("ADDING A DUPLICATE CALLBACKINFO TO THE QUEUE");
            }
        }