Skip to content

Snnorlax/comp90020

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Summary

Scalable Reliable Multicast (SRM) is a negative acknowledgement (NACK) -oriented reliable multicast framework (Floyd et al, 1997). Algorithm ensures receiver-based model of reliability for asynchronous systems on the application level. By referring to term “reliable”, we guarantee properties of integrity, validity and agreement, i.e., if one non-faulty process delivers a message m, then m will be eventually delivered (liveness) to all group members with no duplication, unless all nodes holding m have already crashed. However, ordering isn’t fulfilled. We investigate related research on this topic and compare SRM to other approaches. The loss recovery method is adaptive to the length of repair delay and number of duplicates, making SRM efficient across a broad variety of underlying network typologies.

Furthermore, we develop a distributed game application that runs on top of the framework, similar to that Draw & Guess on Steam. A player draws a word, the next player guesses the word that the drawing wants to represent, then another person draws the guess again. Continue the loop, let’s see if the last player guessed the first word correctly.

Repo Structure

├── docs/
|   └──── ..
├── libs/
|   └──── gson-2.9.0.jar
├── src/
|   ├──── app/                                 # application
|   |     ├──── UI_util/
|   |     |     ├──── ColorLine.java
|   |     |     ├──── ColorPoint.java
|   |     |     ├──── MyMouseAdapter.java
|   |     |     ├──── PlayerRenderer.java
|   |     |     ├──── RoomRenderer.java
|   |     |     └──── VocabRenderer.java
|   |     ├──── socket_threads/
|   |     |     ├──── lobby_group/
|   |     |     |     ├──── InLobbyAdvertiseThread.java
|   |     |     |     └──── InLobbyReceiveThread.java
|   |     |     └──── room_group/
|   |     |           ├──── InRoomAdvertiseThread.java
|   |     |           └──── InRoomReceiveThread.java
|   |     ├──── DataCache.java
|   |     ├──── DrawPane.java
|   |     ├──── DrawandGuess.java              # main
|   |     ├──── EndGamePane.java
|   |     ├──── GuessPane.java
|   |     ├──── LobbyPane.java
|   |     ├──── MySocketFactory.java
|   |     ├──── Player.java
|   |     ├──── Room.java
|   |     ├──── ShowPane.java
|   |     ├──── WaitingPane.java
|   |     ├──── WaitingRoomPane.java
|   |     ├──── WelcomePane.java
|   |     └──── WhiteBoardGUI.java
|   └──── srm/                                 # framework
|         ├──── DataCache.java
|         ├──── Message.java
|         ├──── ReceiverDispatcher.java
|         ├──── ReliableMulticastSocket.java   # facade
|         ├──── RequestRepairPool.java
|         ├──── StateTable.java
|         └──── Type.java
├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
├── vocab1.txt                                 # example vocabulary file
└── vocab2.txt

Library

https://search.maven.org/artifact/com.google.code.gson/gson/2.9.0/jar

About

COMP90020 Distributed Algorithms - 2022 Semester 1 - Semester-long Project: Multicast

Topics

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages