#include "utility.hpp" #include "uid.hpp" #include "instance.hpp" #include #include #include #include namespace Utility { std::vector strSplit(std::string_view s, char delimiter, size_t times) { std::vector to_return; decltype(s.size()) start = 0, finish = 0; while ((finish = s.find_first_of(delimiter, start)) != std::string_view::npos) { to_return.emplace_back(s.substr(start, finish - start)); start = finish + 1; if (to_return.size() == times) { break; } } to_return.emplace_back(s.substr(start)); return to_return; } std::tuple colonSplit(std::string_view s) { // Find the colon auto colonPos = s.find(" :"); if (colonPos == s.npos) { return {s, ""}; } // Split there return {s.substr(0, colonPos), s.substr(colonPos+2, s.size()-1)}; } } static const char UUIDChars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; UUID Instance::UUIDGen() { size_t numUUID = ++lastUUID; UUID fres = config.get().server.uid.str(); for (auto it = fres.array.end() - 1; it != fres.array.begin()+SUID_len-1; it--) { auto idx = std::min(numUUID, sizeof(UUIDChars)-1); *it = UUIDChars[idx]; if (idx != sizeof(UUIDGen())-1) { numUUID -= idx; } } return fres; }