internal static EventQueueThreads GetEventThreads(AnimeCollector collector, AnimeEvent animeEvent) { lock (animeCollectors) { var cd = GetCollectorData(collector); return(cd.GetEventQueueThreads(animeEvent)); } }
private static ControllData FindCollectorData(AnimeCollector collector) { if (animeCollectors.ContainsKey(collector)) { return(animeCollectors[collector]); } return(null); }
internal static EventQueueThreads FindEventThreads(AnimeCollector collector, AnimeEvent animeEvent) { lock (animeCollectors) { var cData = FindCollectorData(collector); if (cData != null) { return(cData.FindEventQueueThreads(animeEvent)); } return(null); } }
internal static ControllData GetCollectorData(AnimeCollector collector) { lock (animeCollectors) { var res = FindCollectorData(collector); if (res == null) { res = new ControllData(); animeCollectors.Add(collector, res); } return(res); } }
internal static void ApplyToControl(object control, AnimeCollector collector) { if (control == null || collector == null) { return; } ControllData dataClone = null; lock (animeCollectors) { var cd = FindCollectorData(collector); if (cd != null) { dataClone = (ControllData)cd.Clone(); } } if (dataClone == null) { return; } foreach (var pair in dataClone.EventThreads) { foreach (var queue in pair.Value.EventsQueue) { var eventQueue = GetEventThreads(control, pair.Key).NewQueue(); if (eventQueue.IsNew) { SetHandler(control, pair.Key); } for (int i = 0; i < queue.PacketQueue.Count; i++) { eventQueue.Add(queue.PacketQueue[i]); } } } }