25 std::vector<ComputingOffer>
result;
27 for (
auto& resource : mResources) {
28 if (resource.cpu < 0.01) {
31 if (resource.memory < 0.01) {
34 if (resource.usedPorts == (resource.lastPort - resource.startPort + 1)) {
38 offer.
cpu = resource.cpu;
39 offer.
memory = resource.memory;
41 offer.
startPort = resource.startPort + resource.usedPorts;
42 offer.
rangeSize = (resource.lastPort - resource.startPort) - resource.usedPorts;
50 bool resourceFound =
false;
51 for (
auto& resource : mResources) {
52 if (resource.hostname != offer.
hostname) {
55 if (resource.startPort > offer.
startPort) {
62 resource.cpu -= offer.
cpu;
63 resource.memory -= offer.
memory;
68 if (resourceFound ==
false) {
69 std::string resources =
"Available resources:\n";
70 for (
auto& resource : mResources) {
71 resources += fmt::format(
"- (host:{}, cpu:{}, memory:{}, ports:{}-{})\n", resource.hostname.c_str(), resource.cpu, resource.memory, resource.startPort, resource.lastPort);
73 throw std::runtime_error(fmt::format(
"Could not match offer (host:{}, cpu:{}, mem:{}, ports:{}) to original resource.\n"
74 "Most likely you need to declare more resources via --resources or reduce the number of devices.",