RequestProcessWorker.cpp 992 B

123456789101112131415161718192021222324252627282930313233
  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. void RequestProcessWorker::workerLoop() {
  10. while (true) {
  11. RequestProcessTask *task = processor::dequeueTaskSync();
  12. ContentGenerator *generator = nullptr;
  13. for (int i = 0; i < generatorsCnt; i++) {
  14. auto it = generators[i];
  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