using DodoSSH.Api.Features.Relay; namespace DodoSSH.Api.Features.Events; /// /// Announces a change to everything on this node that acts on one: the event sockets, and the relay. /// /// /// What the write paths are given as their . They announce a change once and /// do not know who listens, which is the point: the relay learning about removals from teams did not have to /// touch any of the places a removal happens. /// internal sealed class VaultEventFanOut(VaultEventHub hub, RelayAccessWatch relay) : IVaultEventPublisher { /// public void VaultChanged(Guid vaultId, long sequence) => hub.VaultChanged(vaultId, sequence); /// public void VaultAccessChanged(Guid userId) { hub.VaultAccessChanged(userId); _ = relay.AccessChangedAsync(userId); } }