package com.psddev.cms.rtc; import com.google.common.collect.ImmutableMap; import com.psddev.dari.db.UpdateNotifier; import java.util.UUID; import java.util.concurrent.ConcurrentMap; class RtcEventUpdateNotifier implements UpdateNotifier<RtcEvent> { private final ConcurrentMap<UUID, RtcAsyncContext> contexts; public RtcEventUpdateNotifier(ConcurrentMap<UUID, RtcAsyncContext> contexts) { this.contexts = contexts; } @Override public void onUpdate(RtcEvent event) { RtcBroadcast.forEachBroadcast(event, (broadcast, data) -> { String broadcastClassName = broadcast.getClass().getName(); contexts.values().forEach(context -> { if (broadcast.shouldBroadcast(data, context.getUserId())) { context.writeEvent(ImmutableMap.of( "broadcast", broadcastClassName, "data", data)); } }); }); } }