#ifndef myCONNMANAGE_H #define myCONNMANAGE_H #include #include #include #include #include #include #include #include "commFPGA.hpp" #include "worker.hpp" /* worker thread: takes jobs assigns free fpga queue response cb on overwrite + delete old resp fills send buffer send thread: cycle fd send 1 packet if available recv thread: select(readFD) recv data into response cb on success + delete response response thread: search old responses cb on timeout + delete response */ class ConnectionManager { public: ConnectionManager(); ~ConnectionManager(); void addFPGA(const char* ip, const uint port); void start(); //send many Jobs and wait for all responses int sendJobListSync(JobList &jobList); //send many Jobs and call back int sendJobListAsync(JobList &jobList); private: std::vector> fpgas; std::vector> workers; void sendThread(); std::future sendResult; bool running = true; }; #endif