Üzenőfal

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.

Segédanyagok:

Java Language Reference

Eclipse 32 bit

Eclipse 64 bit


Az alapfeladat:

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:

RMI-vel:

Sockettel:

Minden esetben figyelj a párhuzamos problémák kiküszöbölésére!


A hármasért:

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.


+1

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.


+1

Készíts Mirror-t a BlackBoard-hoz. A Mirror a következő kritériumoknak kell, hogy megfeleljen:


+1

A BlackBoard fogadja a felhasználó üzeneteit: