From d88ee494fad30eb7493fa3f572f57e0d21e5d262 Mon Sep 17 00:00:00 2001 From: "Adam R. Grey" Date: Thu, 2 Dec 2021 07:30:04 -0500 Subject: [PATCH] =?UTF-8?q?sign=20out=20events=20by=20THEIR=20ids,=20not?= =?UTF-8?q?=20YOURS=20=F0=9F=A4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Program.cs | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/Program.cs b/Program.cs index d4966ec..cac1fd6 100644 --- a/Program.cs +++ b/Program.cs @@ -26,6 +26,7 @@ namespace director private static readonly AutoResetEvent _signal = new AutoResetEvent(false); private const int concurrentWorkers = 5; private static readonly ConcurrentBag workerIds = new ConcurrentBag(); + private static readonly ConcurrentDictionary occurenceHandlers = new ConcurrentDictionary(); static void Main(string[] args) { if (!File.Exists("appsettings.json")) @@ -92,29 +93,18 @@ namespace director if ((s.Showtime - TimeSpan.FromDays(1)) - DateTime.Now <= calendarNaptime) { var copy = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(s)); - workQueue.Enqueue(copy); - _signal.Set(); + if(!occurenceHandlers.ContainsKey(copy.Occurrence._event.Uid) || !workerIds.Contains(occurenceHandlers[copy.Occurrence._event.Uid])) + { + workQueue.Enqueue(copy); + _signal.Set(); + } + else + { + Console.WriteLine($"calendars checked, looks like event {copy.Occurrence._event.Uid} thing is handled"); + } } } Console.WriteLine("calendars checked"); - // #if (DEBUG) - // //if(true) - // { - // Console.WriteLine("debug test"); - - // var psuedo = new schedulable.Scheduled(); - // psuedo.Showtime = DateTime.Now + TimeSpan.FromMinutes(30); - // // foreach(var a in scratch.agenda){ - // // Console.WriteLine(a.Occurrence._event.Summary); - // // } - // var partiallyCopiable = scratch.agenda?.First(a => a.Occurrence._event.Summary == "Good Morning, Phyrexia (in the morning)!"); - // psuedo.Occurrence = partiallyCopiable.Occurrence; - // psuedo.Occurrence.OccurrenceStart = psuedo.Showtime; - // psuedo.Occurrence.OccurrenceEnd = psuedo.Showtime; - // workQueue.Enqueue(psuedo); - // _signal.Set(); - // } - // #endif } private static async Task checkCalendar(string calendarUri) @@ -164,7 +154,8 @@ namespace director continue; } todo.HandledBy = threadId; - Console.WriteLine($"signing it out, {todo.HandledBy}"); + occurenceHandlers[todo.Occurrence._event.Uid] = threadId; + Console.WriteLine($"signing it out. i'm {todo.HandledBy}, handling {todo.Occurrence._event.Uid}"); todo.Configuration = findConfig(todo.Occurrence.CalendarSourceName, todo.Occurrence._event.Summary); if (todo.Configuration == null)