Készíts üzenőfalt, melyen a különböző szálak üzenetet hagyhatnak egymásnak, elolvashatják bármelyik üzenetet, és akár törölhetik is azt. A megoldásod be kell mutatnod egy gyakorlatvezetőnek, aki majd leosztályozza. Az osztályozás során az implementáció minőségét osztályozzák.
Az alap feladatot megoldhatod RMI-vel és Socket-ek segítségével egyaránt. A hármasért a feladat kötött, de a négyesért már választhatsz, melyik részfeladatot oldod meg. Az ötösért elég 2 plusfeladat, nem kell mind a 3.
Készítsd el az Üzenőfalat (BlackBoard), és készíts hozzá random üzeneteket (Message) gyártó klienseket is. Minden üzenet egy (int, String) pár, amit az int az üzenőfalon egyértelműen meghatároz (ID). A BlackBoard műveletei:
Minden esetben figyelj a párhuzamos problémák kiküszöbölésére!
Ha az előző feladatot RMI-vel oldottad meg, ezt Sockettel kell, és fordítva.
Készíts egy aktív logoló alkalmazást, mely csatlakozik a BlackBoard-hoz, és meghatározott időközönként lekéri annak teljes tartalmát. A szükséges Socketes / RMI-s felülettel egészítsd ki a Black Board-ot. Egy BalckBoard-hoz akárhány Logger csatlakozhat.
A Logger parancssori paraméterként várja, hogy hány másodpercenként kérjen le az összes üzenetet. Ha csak egy paramétert kap, akkor a standard outputra logol, ha kettőt, akkor a második paraméterül kapott file-ba. A Logger folyamtosan várja a felhasználó parancsait, melyek a következők lehetnek.
Oldd meg, hogy ha nem létezik a Message, amit a read vagy a take művelet igényelt, akkor a kliens várjon addig, míg az üzenet fel nem kerül a BlackBoard-ra.
Készíts Mirror-t a BlackBoard-hoz. A Mirror a következő kritériumoknak kell, hogy megfeleljen:
A BlackBoard fogadja a felhasználó üzeneteit: