connectionManager.cpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "connectionManager.hpp"
  2. ConnectionManager::ConnectionManager() {
  3. }
  4. ConnectionManager::~ConnectionManager() {
  5. running = false;
  6. sendResult.get();
  7. }
  8. void ConnectionManager::addFPGA(const char* ip, const uint port) {
  9. commFPGA fpga(ip, port);
  10. fpga.start();
  11. fpgas.push_back(fpga);
  12. }
  13. int ConnectionManager::sendJobListAsync(JobList &jobList) {
  14. Worker worker(fpgas);
  15. worker.assignJobList(jobList);
  16. worker.start();
  17. workers.push_back(worker);
  18. return 0;
  19. }
  20. void ConnectionManager::start() {
  21. sendResult = std::async(std::launch::async, &ConnectionManager::sendThread, this);
  22. }
  23. void ConnectionManager::sendThread() {
  24. while(running) {
  25. Clock::time_point start = Clock::now();
  26. for(std::vector<std::reference_wrapper<commFPGA>>::iterator it=fpgas.begin(); it!=fpgas.end(); it++) {
  27. it->get().sendFromBuffer();
  28. }
  29. //printf("%8d %8d\n", fpgas[0].sendBufferWriteIndex, fpgas[0].sendBufferReadIndex);
  30. uint us = std::chrono::duration_cast<microseconds>(Clock::now() - start).count();
  31. if(us < 50)
  32. usleep(50 - us);
  33. }
  34. }