Program dgnsd jest serwerem jednoprocesowym. Klientami jego mogą być zarówno
programy zgłaszające chęć powiadomienia operatora o zaistniałym problemie jak i
programy potrafiące wyświetlić graficzne powiadomienie w postaci okienka dialogowego.
W chwili otrzymania komunikatu od klienta powiadamiającego o sprawie, rozsyłany jest
on do zarejestrowanych wcześniej programów, które są aplikacjami graficznymi i potrafią
wyświetlić graficzne powiadomienie. Wiadomość zostanie rozesłana tylko tym aplikacjom,
które mają zalogowanych użytkowników. Innymi słowy, jeśli aplikacja graficzna chce
otrzymywać powiadomienia, to musi się oczywiście połączyć z serwerem oraz dokonać
udanej autentykacji użytkownika w systemie David.
Autentykacji dokonuje się na podstawie informacji zawartych w Bazie Danych
Użytkowników przechowywanej w SQL-owej bazie danych. Klientowi powiadomień,
który wysłał dane powiadomienie, zostanie przekazana odpowiedź od klienta graficznego,
jeśli taką serwer otrzyma. Z racji, że więcej niż jeden klient graficzny może wysłać
odpowiedź, to została wprowadzone prosta reguła. Zgodnie z nią zostanie uwzględniona
tylko odpowiedź od tego klienta, który posiada token. W danej chwili może istnieć
tylko jeden token dla całego serwera dgnsd. W przypadku, gdy nie istnieje żaden
token, wtedy liczy się pierwsza odpowiedź. Dany klient graficzny może się logować
wielokrotnie i do tego za każdym razem jako inny użytkownik. Zalogowany użytkownik
posiada uprawnienia takie, jakie są zapisane w Bazie Danych Użytkowników. Użytkownicy
mogą dokonywać następujących operacji:
wylogowywać się;
wylogowywać użytkowników niższego poziomu;
pobierać listę zalogowanych użytkowników;
pobierać token, jeśli nie był nikomu przyznany lub użytkownik,
który go posiadał był niższego poziomu;
oddawać token, jeśli się jest jego właścicielem;
przekazywać token użytkownikowi z niższego poziomu
uprawnień pod warunkiem, że token był wcześniej własnością
danego użytkownika lub nie należał do nikogo lub należał
do użytkownika niższego poziomu.
Serwer dgnsd zajmuje się również odbieraniem od programu
sndc próśb o odtworzenie dźwięku i przesyła je
do klientów xdgnp. Mogą być dwa rodzaje takich próśb:
Wiadomości tekstowe są odtwarzane za pomocą syntezatora mowy.
W przypadku kiedy ma być odtworzony plik dźwiękowy należy podać ścieżkę do niego.
Każda ścieżka automatycznie poprzedzana jest katalogiem, w którym
lokalnie zainstalowany jest system David (np. /home/david).
Klient xdgnp może być zainstalowany na
innej stacji niż serwer dgnsd. Kiedy klient xdgnp
otrzymuje prośbę o odtworzenie pliku dźwiękowego, wówczas sprawdza, czy ma taki plik
w swoim lokalnym systemie plików, czy też ma go pobrać ze stacji, na której pracuje
serwer dgnsd. Jeśli xdgnp nie znajduje go
na swojej stacji to wówczas, jeśli serwer dgnsd pracuje na innym komputerze,
prosi serwer o przesłanie mu tego pliku. Wszystkie pliki dźwiękowe znajdują się na stacji,
na której jest zainstalowany dgnsd.