MCPcopy Create free account
hub / github.com/ceph/ceph / factory

Method factory

src/erasure-code/jerasure/ErasureCodePluginJerasure.cc:35–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

33}
34
35int ErasureCodePluginJerasure::factory(const std::string& directory,
36 ceph::ErasureCodeProfile &profile,
37 ceph::ErasureCodeInterfaceRef *erasure_code,
38 std::ostream *ss) {
39 ErasureCodeJerasure *interface;
40 std::string t;
41 if (profile.find("technique") != profile.end())
42 t = profile.find("technique")->second;
43 if (t == "reed_sol_van" || t == "") { // Default!
44 interface = new ErasureCodeJerasureReedSolomonVandermonde();
45 } else if (t == "reed_sol_r6_op") {
46 interface = new ErasureCodeJerasureReedSolomonRAID6();
47 } else if (t == "cauchy_orig") {
48 interface = new ErasureCodeJerasureCauchyOrig();
49 } else if (t == "cauchy_good") {
50 interface = new ErasureCodeJerasureCauchyGood();
51 } else if (t == "liberation") {
52 interface = new ErasureCodeJerasureLiberation();
53 } else if (t == "blaum_roth") {
54 interface = new ErasureCodeJerasureBlaumRoth();
55 } else if (t == "liber8tion") {
56 interface = new ErasureCodeJerasureLiber8tion();
57 } else {
58 *ss << "technique=" << t << " is not a valid coding technique. "
59 << " Choose one of the following: "
60 << "reed_sol_van, reed_sol_r6_op, cauchy_orig, "
61 << "cauchy_good, liberation, blaum_roth, liber8tion";
62 return -ENOENT;
63 }
64 dout(20) << __func__ << ": " << profile << dendl;
65 int r = interface->init(profile, ss);
66 if (r) {
67 delete interface;
68 return r;
69 }
70 *erasure_code = ceph::ErasureCodeInterfaceRef(interface);
71 return 0;
72}
73
74const char *__erasure_code_version() { return CEPH_GIT_NICE_VER; }
75

Callers

nothing calls this directly

Calls 3

findMethod · 0.45
endMethod · 0.45
initMethod · 0.45

Tested by

no test coverage detected