RequestProcessWorker.cpp 978 B

12345678910111213141516171819202122232425262728293031323334
  1. //
  2. // Created by xcbosa on 2023/1/28.
  3. //
  4. #include "../webuiconf.h"
  5. #include "RequestProcessWorker.h"
  6. #include "processor.h"
  7. namespace xc {
  8. namespace processor {
  9. vector<ContentGenerator *> generators;
  10. void RequestProcessWorker::workerLoop() {
  11. while (true) {
  12. RequestProcessTask task = processor::dequeueTaskSync();
  13. ContentGenerator *generator = nullptr;
  14. for (auto it : generators) {
  15. if (it->matchRequest(task.getRequest())) {
  16. generator = it;
  17. }
  18. }
  19. ResponseData *resp = nullptr;
  20. if (generator == nullptr) {
  21. resp = new FileResponseData(conf::errorPage404);
  22. } else {
  23. resp = generator->generateResponse(task.getRequest());
  24. }
  25. task.processFinish(resp);
  26. }
  27. }
  28. } // xc
  29. } // processor