namespace SameBeat.Application.Interfejsy; /// /// Cienki klient LiveKit Room Service API (Twirp/HTTP) -- jedyny sposob, zeby FIZYCZNIE zmienic /// uprawnienia publikacji uczestnika, ktory jest juz polaczony (token wydany wczesniej dalej dziala /// az do wygasniecia, wiec samo przelogowanie po stronie bazy nie wystarczy). Uzywane w ETAPIE 5 do /// twardego wymuszenia odebrania mikrofonu -- patrz komentarz w SerwisMikrofonu. /// /// UWAGA: implementacja traktuje to jako "best effort" -- gdy LiveKit jest niedostepny, loguje blad /// i NIE rzuca wyjatku, bo autorytatywnym zrodlem prawdy jest baza + kolejne wydawane tokeny /// (SerwisTokenowLiveKit juz dzis liczy uprawnienia z aktualnego stanu, nie z tego, co bylo w /// poprzednim tokenie). /// public interface ISerwisAdministracjiLiveKit { /// /// Ustawia uczestnikowi o danej tozsamosci canPublishSources w podanym pokoju -- zawsze "camera", /// a "microphone" tylko gdy . Nigdy nie rzuca -- awaria LiveKit /// jest logowana i polykana, nie wywala calej operacji biznesowej. /// Task UstawUprawnieniaMikrofonuAsync(string identity, string nazwaPokoju, bool mikrofonWlaczony, CancellationToken token = default); /// /// TWARDE usuniecie ze sceny (ETAP 7) -- czysci canPublishSources do pustej listy, wiec uczestnik /// fizycznie traci prawo publikacji ZARoWNO kamery, jak i mikrofonu (w odroznieniu od /// , ktora zawsze zostawia kamere). Uzywane, gdy host /// zwalnia slot sceny -- domyka luke celowo odlozona w ETAPACH 2-3 (miekkie usuniecie tylko w bazie). /// Tak samo best-effort jak wyzej -- nigdy nie rzuca. /// Task OdbierzUprawnieniaScenyAsync(string identity, string nazwaPokoju, CancellationToken token = default); }