https://github.com/thinkonmay/thinkshare-daemon

Role

  1. Maintain gRPC connection to conductor service, pushing log and worker status.
  2. Initialize Hub, HID child process on demand from conductor.
  3. Run as a service, process bootup when server bootup.
  4. Register its existence to API server.

Principle

  1. Use GO instead of C whenever it is possible.
  2. Any process that heavily rely on Windows API and virtual driver call should be written in C#
  3. Child module failure must not affect daemon.
  4. The conductor server set the desired state of hub and hid on daemon.
  5. In case child module failure happened, daemon process must recover child module to desired state.
  6. API servers manage auto-update deployment with git commit Hash.
  7. self-contained executable package deploys as git repository.
  8. Mono repo management
  9. Avoid creating a whole new multimedia framework / library if possible.

Tech stack