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
|