SpecBackendBuilder SpecMountpointReader::readMountpointSpecification (KeySet const & cks) { ks = cks; mp = ks.head ().dup (); Key rmp (mp.dup ()); helper::removeNamespace (rmp); bb.setMountpoint (rmp, mountConf); processKey (mp); bb.nodes++; // count mp ks.lookup (mp, KDB_O_POP); ks.rewind (); // we need old fashioned loop, because it can handle ks.cut during iteration for (Key k = ks.next (); k; k = ks.next ()) { // search for mountpoint Key m = k.getMeta<const Key> ("mountpoint"); if (m) { SpecMountpointReader smr (backends, bbi); backends[k] = smr.readMountpointSpecification (ks.cut (k)); continue; } processKey (k); bb.nodes++; } bb.setBackendConfig (backendConfig); bb.useConfigFile (mp.getMeta<std::string> ("mountpoint")); return bb; }
void SpecReader::readSpecification (KeySet const & cks) { KeySet ks; Key mp; // only accept keys in 'spec' namespace for (Key k : cks) { if (k.isSpec ()) { ks.append (k); } } ks.rewind (); // we need old fashioned loop, because it can handle ks.cut during iteration for (Key k = ks.next (); k; k = ks.next ()) { // search for mountpoint Key m = k.getMeta<const Key> ("mountpoint"); if (m) { SpecMountpointReader smr (backends, bbi); backends[k] = smr.readMountpointSpecification (ks.cut (k)); } } }
void SpecReader::readSpecification (KeySet const & cks) { KeySet ks (cks); Key mp; ks.rewind (); // we need old fashioned loop, because it can handle ks.cut during iteration for (Key k = ks.next (); k; k = ks.next ()) { // search for mountpoint Key m = k.getMeta<const Key> ("mountpoint"); if (m) { SpecMountpointReader smr (backends, bbi); backends[k] = smr.readMountpointSpecification (ks.cut (k)); } } }