Inlämningsuppgift 2, Distribuerad programmeringsmetodik HT 2004

Specifikation

I denna uppgift skall ni implementera en distribuerad "chat"/telekonferens/liknande. I sin enklaste form skall alltså deltagarna kunna sända textstycken, som skall visas i samma ordning hos alla deltagare, men utöver detta får ni - om ni vill - efter eget huvud lägga in andra sorters händelser, så länge ordningen på händelser förblir likadan hos alla. (Enkla exempel skulle kunna vara att man också kan skicka bilder, eller byta ansiktsuttryck på en "avatar".)

Applikationen ska ha ett grafiskt interface. För detta använder ni Erlangs portabla grafiksystem gs som finns dokumenterat i online-manualerna. Interfacet behöver inte vara mer avancerat än ni själva vill ha det.

Kapitel 11.6 i Erlang-boken beskriver ett "fuskigt" sätt att implementera processgrupper, där total meddelandeordning (abcast) garanteras genom att alla meddelanden går genom gruppledaren. (Nackdelen är förstås att man får en flaskhals i systemet.) Erlangs system med processlänkar och trap_exit används för att detektera fel hos andra processer. Ni ska använda denna metod, med vissa modifieringar, enligt följande:

Ni skriver alltså ett bibliotek för dynamiska processgrupper, och en applikation som använder detta bibliotek för att skapa ordnad kommunikation mellan "applets" med grafiska interface, samt en namntjänst för att låta användare hitta varandra. Man ska kunna ha flera sådana "applets" på samma nod, eller distribuerat över olika noder utan att användaren märker någon skillnad. Flera grupper ska kunna existera parallellt helt oberoende av varandra.

Redovisning


Last Modified: Sep 13 '04
Richard Carlsson / richardc@csd.uu.se