return alignment;
}
-int ErasureCodeJerasureLiberation::parse(const map<std::string,std::string> ¶meters,
- ostream *ss)
+bool ErasureCodeJerasureLiberation::check_k(ostream *ss) const
{
- int err = ErasureCodeJerasure::parse(parameters, ss);
- err |= to_int("packetsize", parameters, &packetsize, DEFAULT_PACKETSIZE, ss);
-
- bool error = false;
if (k > w) {
*ss << "k=" << k << " must be less than or equal to w=" << w << std::endl;
- error = true;
+ return false;
+ } else {
+ return true;
}
+}
+
+bool ErasureCodeJerasureLiberation::check_w(ostream *ss) const
+{
if (w <= 2 || !is_prime(w)) {
*ss << "w=" << w << " must be greater than two and be prime" << std::endl;
- error = true;
+ return false;
+ } else {
+ return true;
}
+}
+
+bool ErasureCodeJerasureLiberation::check_packetsize_set(ostream *ss) const
+{
if (packetsize == 0) {
*ss << "packetsize=" << packetsize << " must be set" << std::endl;
- error = true;
+ return false;
+ } else {
+ return true;
}
+}
+
+bool ErasureCodeJerasureLiberation::check_packetsize(ostream *ss) const
+{
if ((packetsize%(sizeof(int))) != 0) {
*ss << "packetsize=" << packetsize
<< " must be a multiple of sizeof(int) = " << sizeof(int) << std::endl;
- error = true;
+ return false;
+ } else {
+ return true;
}
+}
+
+void ErasureCodeJerasureLiberation::revert_to_default(ostream *ss)
+{
+ *ss << "reverting to k=" << DEFAULT_K << ", w="
+ << DEFAULT_W << ", packetsize=" << DEFAULT_PACKETSIZE << std::endl;
+ k = DEFAULT_K;
+ w = DEFAULT_W;
+ packetsize = DEFAULT_PACKETSIZE;
+}
+
+int ErasureCodeJerasureLiberation::parse(const map<std::string,std::string> ¶meters,
+ ostream *ss)
+{
+ int err = ErasureCodeJerasure::parse(parameters, ss);
+ err |= to_int("packetsize", parameters, &packetsize, DEFAULT_PACKETSIZE, ss);
+
+ bool error = false;
+ if (!check_k(ss))
+ error = true;
+ if (!check_w(ss))
+ error = true;
+ if (!check_packetsize_set(ss) || !check_packetsize(ss))
+ error = true;
if (error) {
- *ss << "reverting to k=" << DEFAULT_K << ", w="
- << DEFAULT_W << ", packetsize=" << DEFAULT_PACKETSIZE << std::endl;
- k = DEFAULT_K;
- w = DEFAULT_W;
- packetsize = DEFAULT_PACKETSIZE;
+ revert_to_default(ss);
err = -EINVAL;
}
return err;
err |= to_int("packetsize", parameters, &packetsize, DEFAULT_PACKETSIZE, ss);
bool error = false;
- if (k > w) {
- *ss << "k=" << k << " must be less than or equal to w=" << w << std::endl;
+ if (!check_k(ss))
error = true;
- }
- if (packetsize == 0) {
- *ss << "packetsize=" << packetsize << " must be set" << std::endl;
+ if (!check_packetsize_set(ss))
error = true;
- }
if (error) {
- *ss << "reverting to k=" << DEFAULT_K << ", packetsize="
- << DEFAULT_PACKETSIZE << std::endl;
- k = DEFAULT_K;
- packetsize = DEFAULT_PACKETSIZE;
+ revert_to_default(ss);
err = -EINVAL;
}
return err;