BACK END (com.netoftaste.*) Ś FRONT END (com.yourradio.*) Ś Ś --------------------------- Ś ------------------------------- Ś Client _facade Ś Ś Ś YourRadio Ś Ś -------------------- Ś<-------------------------Ś ------------------------ Ś Ś new Client(...) Ś Ś Ś main() Ś Ś quit() Ś Ś Ś ... Ś Ś connect(host,fileName) Ś Ś ------------------------------- Ś disconnect() Ś Ś Ś Ś String play() Ś Ś Ś--> PlayerThread Ś String download() Ś Ś Ś--> DownloadThread Ś vote(name,points) Ś Ś Ś--> LimeClient implements ActivityCallBack Ś ... Ś Ś --------------------------- Ś Ś --------------------------------------- Ś Ś abstract ClientCallBack _callback Ś Ś Ś ---------------------------------- Ś Ś Ś logUpdate(String) Ś Ś Ś errorOccured(String) Ś Ś Ś scanReplay(String) Ś Ś ------------------------------- Ś chatReplay(String,NodeUnifier) Ś/-------------Ś NotClientCallBack Ś --------------------------------------Ś\-------------------------------------------- Ś --------------------------------------Ś Ś ------------------------------- Ś Global _singelton Ś Ś Ś Global _singelton Ś Ś ----------------------------- Ś Ś Ś -------------------------- Ś Ś Global get() Ś Ś Ś Global get() Ś Ś YourNode getYourNode() Ś Ś Ś ... Ś Ś ClientCallBack getClientCallBack() Ś Ś ------------------------------- Ś NetworkBackEnd getNetworkBackEnd() Ś Ś Ś ..... Ś Ś Ś-------------------------------------Ś Ś -------------------------------------------- Ś Ś LimeClient implements ActivityCallBack Ś ---------------------------------------- Ś Ś -------------------------------------- Ś Ś abstract NetworkBackEnd ext. Thread Ś Ś Ś new LimeClient(String shareDir) Ś Ś ----------------------------------- Ś Ś Ś search(String) Ś Ś send(Message,NodeUnifier) Ś Ś Ś Vector getResults() Ś Ś--------------------------------------- Ś Ś download(int[]) Ś /\ Ś Ś Vector getDownloads() Ś ŚŚ Ś Ś quit() Ś ŚŚ Ś Ś ... Ś ----------------------------------------- Ś -------------------------------------------- Ś StreamNetworkBackEnd ext. NetBackEnd Ś Ś Ś---------------------------------------Ś Ś Ś ----------------------------------------- Ś Ś PlayList Ś Ś Ś ------------------------------------ Ś Ś Ś boolean isElement(ContendUnifier) Ś Ś Ś addLocal(Contend) Ś Ś Ś addForeigne(Contend) Ś Ś Ś remove(ContendUnifier) Ś Ś Ś Contend get(ContendUnifier) Ś Ś Ś Contend makeProposualToPlay() Ś Ś Ś Contend makeProposualToDownload() Ś Ś Ś .... Ś Ś ----------------------------------------- Ś Ś ------------------------------------ Ś Ś Node Ś Ś Ś ------------------------------ Ś Ś Ś PlayList playlist Ś : Ś List neighbor //of Node Ś : Ś addNeighbor(Node) Ś . Ś removeNeighbor(NodeUnifier) Ś . Ś boolean isNeighbor(NodeUnifier) Ś Ś Node getNeighbor(NodeUnifier) Ś . Ś ... Ś ------------------------------------ /\ ŚŚ ŚŚ ---------------------------------------- Ś YourNode ext. Node Ś Ś ---------------------------------- Ś Ś connect(NodeUnifier) Ś Ś disconnect(NodeUnifier) Ś Ś vote(ContendUnifier,int) Ś Ś proposePing(NodeUnifier) Ś Ś Contend getBetterNode() Ś Ś ... Ś ---------------------------------------- ---------------------------------------- Ś ServerThread ext. Thread Ś ---------------------------------------- Ś v ---------------------------------------- Ś DownloadMessageThread ext. Thread Ś ---------------------------------------- Ś v ---------------------------------------- Ś Pipe Ś Ś ---------------------------------- Ś Ś add(Message) Ś Ś Message get() Ś ---------------------------------------- /\ Ś ---------------------------------------- Ś DoMessageThread ext. Thread _pullingŚ ---------------------------------------- Ś v ---------------------------------------- Ś abstract OnMessage Ś Ś ---------------------------------- Ś Ś execute() Ś ---------------------------------------- /\ ŚŚ-- OnConnect ŚŚ-- OnConnectResponse ŚŚ-- OnDisconnect ŚŚ-- OnChat ŚŚ-- OnProposePing ŚŚ-- OnProposePong ŚŚ-- OnScanConnect ŚŚ-- OnScanConnectReplay ŚŚ-- OnVote --------------------------------------- Ś UnifiableObject Ś Ś -------------------------------- Ś Ś Unifier id Ś --------------------------------------- /\ ŚŚ --------------------------------------- Ś abstract Message Ś --------------------------------------- /\ ŚŚ-- ChatMessage ŚŚ-- ConnectMessage ŚŚ-- ConnectResponseMessage ŚŚ-- DisconnectMessage ŚŚ-- ProposePingMessage ŚŚ-- ProposePongMessage ŚŚ-- ScanConnectMessage ŚŚ-- ScanConnectReplayMessage ŚŚ-- BroadcastMessage /\ ŚŚ VoteMessage --------------------------------------- Ś Unifier Ś --------------------------------------- /\ ŚŚ-- NodeUnifier ŚŚ-- ContendUnifier /\ ŚŚ MusicUnifier