Whack-a-mole as a distributed system with requirements, multiple "vendor's" components, and configurable security/functionality settings.
The distributed whack-a-mole is comprised of a few components that together allow a human operator to whack digital moles (no actual animals are harmed in this system). These components are:
- UI: A web-based user inferface that displays the current sensor output of mole presence to a human operator, and provides an input mechanism for the operator to issue a "whack" command.
- Mole sensor: A digital sensor that determines the presence or absence of a digital mole and reports the status to the message router.
- "Whactuator": A digital whacking actuator that dispenses a digital whack to the digital mole hole when commanded.
- Message router: A backend server that takes messages from all the aforementioned components, ensures the messages are valid, and routes them to their intended destination.
- The UI must be updated to reflect the sensor's determination of a mole being present or not within 5 seconds of sensor identifying a mole.
- The "whactuator" must receive and act upon the "whack" request from the human operator within 1 second of user input.
- Messages exchanged between the components must be validated by the message router using the most robust integrity checks available.
- Where possible, links between components should be encrypted.
- Configure each component to interact and operate on your specific host system (ensure there are no conflicting ports, etc.).
- Run the
./run.sh
script and navigate your browser to the specified localhost port to bring up the UI. - A message will display indicating whether there is a mole present according to the sensor. Use the "whack" button to send a message to the Whactuator as moles appear, but be careful or you might whack at nothing.
- Run the
./shutdown.py
script to cleanly shutdown all the server threads.
Statement "A" (Approved for Public Release, Distribution Unlimited)