TODO

Radio

  • Check if Queuable is necessary. If not used by anyone else, probably thrash
  • Write tests
  • Wrap every call to std

DONE/NA

  • Switch all instances of pointers to smart pointers
    • No pointers at this time.
  • Move all classes to abstract/concrete
    • Too complicated at this point and not necessary.
  • Make EventHandler RAII
  • Implement condition_variable instead of busy loop
  • Namespace EventHandler. The typedefs are global and polluting
    • Moved typedefs to class scope, but had to leave some global. Must revisit later
  • Createa an async_queue class to wrap queue.
  • At some point we will need to put some protection to avoid 2 threads waitingOnEmpty to run at the same time. Otherwise 2 consumers might run into a data race. This can be done by using notify_one().
    • Ended up creating a WaitType::Types and 2 condVars to resolve it.
  • Create async_vector to wrap std::vector and implement in Scheduler
    • Not needed. The only vector in used is on scheduler. Each thread tracks one event which is already thread-safe and none of them share resources. If they do, they manage it themselves.
  • Get rid of scheduler eventMap and let the caller provide the scheduling function.
    • The entire scheduler has been replaced for async calls
  • Replace scheduler with std::async()
  • Migrate/link TODO.txt with UndergroundBlog as a page
  • Seperate Blog and Radio todos (currently using this file for both)