about summary refs log tree commit diff
path: root/MatrixContentFilter/Handlers/Filters/ImageFilter.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MatrixContentFilter/Handlers/Filters/ImageFilter.cs')
-rw-r--r--MatrixContentFilter/Handlers/Filters/ImageFilter.cs35
1 files changed, 13 insertions, 22 deletions
diff --git a/MatrixContentFilter/Handlers/Filters/ImageFilter.cs b/MatrixContentFilter/Handlers/Filters/ImageFilter.cs

index 13a68f9..7a298ce 100644 --- a/MatrixContentFilter/Handlers/Filters/ImageFilter.cs +++ b/MatrixContentFilter/Handlers/Filters/ImageFilter.cs
@@ -1,7 +1,3 @@ -using System.Runtime.Loader; -using System.Security.Cryptography; -using System.Text.Json.Nodes; -using ArcaneLibs.Collections; using ArcaneLibs.Extensions; using LibMatrix; using LibMatrix.EventTypes.Spec; @@ -21,46 +17,43 @@ public class ImageFilter( AuthenticatedHomeserverGeneric hs, AsyncMessageQueue msgQueue, InfoCacheService infoCache, - AbstractAsyncActionQueue actionQueue) + AbstractAsyncActionQueue actionQueue, + MatrixContentFilterMetrics metrics) : IContentFilter { - public override async Task ProcessSyncAsync(SyncResponse syncResponse) { - Console.WriteLine("Processing image filter"); - if (syncResponse.Rooms?.Join is null) return; + public override Task ProcessSyncAsync(SyncResponse syncResponse) { + if (syncResponse.Rooms?.Join is null) return Task.CompletedTask; var tasks = syncResponse.Rooms.Join.Select(ProcessRoomAsync); - await Task.WhenAll(tasks); + return Task.WhenAll(tasks); } - // private SemaphoreSlim semaphore = new(8, 8); - - private async Task ProcessRoomAsync(KeyValuePair<string, SyncResponse.RoomsDataStructure.JoinedRoomDataStructure> syncRoom) { + private Task ProcessRoomAsync(KeyValuePair<string, SyncResponse.RoomsDataStructure.JoinedRoomDataStructure> syncRoom) { var (roomId, roomData) = syncRoom; - if (roomId == cfgService.LogRoom.RoomId || roomId == cfgService.ControlRoom.RoomId) return; - if (roomData.Timeline?.Events is null) return; + if (roomId == cfgService.LogRoom.RoomId || roomId == cfgService.ControlRoom.RoomId) return Task.CompletedTask; + if (roomData.Timeline?.Events is null) return Task.CompletedTask; var config = cfgService.RoomConfigurationOverrides.GetValueOrDefault(roomId)?.ImageFilter; var room = hs.GetRoom(roomId); var tasks = roomData.Timeline.Events.Select(msg => ProcessEventAsync(room, msg, config)); - await Task.WhenAll(tasks); + return Task.WhenAll(tasks); } - public override async Task ProcessEventListAsync(List<StateEventResponse> events) { + public override Task ProcessEventListAsync(List<StateEventResponse> events) { var tasks = events.GroupBy(x => x.RoomId).Select(async x => { var room = hs.GetRoom(x.Key); var config = cfgService.RoomConfigurationOverrides.GetValueOrDefault(x.Key)?.ImageFilter; - var tasks = x.Select(msg => ProcessEventAsync(room, msg, config)); + var tasks = x.Select(msg => ProcessEventAsync(room, msg, config)).ToList(); await Task.WhenAll(tasks); }); - await Task.WhenAll(tasks); + return Task.WhenAll(tasks); } private async Task ProcessEventAsync(GenericRoom room, StateEventResponse msg, FilterConfiguration.BasicFilterConfiguration roomConfiguration) { if (msg.Type != "m.room.message") return; var content = msg.TypedContent as RoomMessageEventContent; if (content?.MessageType != "m.image") return; - - // await semaphore.WaitAsync(); + metrics.Increment("image_filter_processed_event_count"); await actionQueue.EqueueActionAsync(msg.EventId, async () => { while (true) { @@ -86,7 +79,5 @@ public class ImageFilter( .Build()); }); ActionCount++; - - // semaphore.Release(); } } \ No newline at end of file