# # # patch "ChangeLog" # from [df1ae231ae8e6ecdb49adbd4bb67ae28746d931b] # to [81e3045140bcbf832f6fe43481c287b7343f50a8] # # patch "automate.cc" # from [f3dbb30624320cf769d823040cf8732940b7cb71] # to [8aa16555b3ed2bbd87bbdb395a2d23a790803f19] # # patch "cmd_merging.cc" # from [89dc71c64b5a9ece8bb5f98faa43c0c83745b07b] # to [8cb9a727c46da071534f510458de386f45b2c092] # # patch "database.cc" # from [8a18b697ea6dfa42979560ef2023429615fec9d6] # to [e185a4b7db7def9d9c5ddb0b1bc9f883d623220b] # # patch "database.hh" # from [da379322125c5ca6f8b1ab7e95e9b39d10bdf896] # to [66618c65676ce4af4ca52ade55cd6f2af8ea11e8] # # patch "database_check.cc" # from [cc6c8ece1194a534ba856ef17bc56ebb31b8458a] # to [91784581512b6a22dba4959fd46076f8ac2d18b6] # # patch "roster.cc" # from [7fcb961614cdf6ae31327fd80ac9f25648fee6bd] # to [5955f1339c8276c1ad2964abf5051b7d9cb13890] # # patch "roster.hh" # from [48f810e272158afce673d31d45766bfaf42bea6e] # to [03aeb703100a85fcf944af1e9f6b2a2ff64e44eb] # # patch "transforms.cc" # from [3ccf0649c918465fe7169c823a2fc9e912488b9a] # to [37f28648e9933556c9262e822c3a4e40e0425467] # # patch "transforms.hh" # from [231599114d9ce5980f63ef0acb0605d836f4c0e6] # to [1bbcd45fc8139263719006c25e13eeb76046f95d] # # patch "vocab.cc" # from [ec4c04c67d063fa7beb7b7821411f56099588d9a] # to [734ef82435e130f3ba3674573a142a8a980de91c] # # patch "vocab.hh" # from [9bc5a9930e2e19e73317788cd7f5142d99adb60f] # to [ddda58d45f872418855170d5d7e47872ffb239ce] # # patch "vocab_terms.hh" # from [fa88ad4f49972bed8d1e5f02bdeb23f5031f3de0] # to [5442a9adf37051de74795ca8d6f5b25ed92ab301] # ============================================================ --- ChangeLog df1ae231ae8e6ecdb49adbd4bb67ae28746d931b +++ ChangeLog 81e3045140bcbf832f6fe43481c287b7343f50a8 @@ -1,3 +1,23 @@ +2006-05-26 Derek Scherger + + * automate.cc (automate_get_manifest_of, automate_get_file): + * cmd_merging.cc (get_roster): use roster_data instead of generic + data + * database.{cc,hh} (get_roster): rename to ... + (get_roster_version): ... this and move to a better spot + (put_roster): use roster_data + * database_check.cc (check_rosters_manifest, + check_rosters_marking): use roster_data + * roster.{cc,hh} (read_roster_and_marking, + write_roster_and_marking, write_manifest_of_roster, + calculate_ident, do_testing_on_one_roster, tests_on_two_rosters, + write_roster_test): + * transforms.{cc,hh} (calculate_ident): use roster_data + * vocab.cc: add dump template for roster_data + * vocab.hh: add roster_data typedef + * vocab_terms.hh: instantiate roster_data template, add + roster_data operator<< + 2006-05-25 Matthew Gregan * cmd_merging.cc (CMD(update)): Report branch switch after ============================================================ --- automate.cc f3dbb30624320cf769d823040cf8732940b7cb71 +++ automate.cc 8aa16555b3ed2bbd87bbdb395a2d23a790803f19 @@ -1118,7 +1118,7 @@ if (args.size() > 1) throw usage(help_name); - data dat; + roster_data dat; manifest_id mid; roster_t old_roster, new_roster; temp_node_id_source nis; @@ -1142,7 +1142,7 @@ calculate_ident(new_roster, mid); write_manifest_of_roster(new_roster, dat); L(FL("dumping manifest %s\n") % mid); - output.write(dat().data(), dat().size()); + output.write(dat.inner()().data(), dat.inner()().size()); } ============================================================ --- cmd_merging.cc 89dc71c64b5a9ece8bb5f98faa43c0c83745b07b +++ cmd_merging.cc 8cb9a727c46da071534f510458de386f45b2c092 @@ -606,7 +606,7 @@ marking_map mm; app.db.get_roster(rid, roster, mm); - data dat; + roster_data dat; write_roster_and_marking(roster, mm, dat); cout << dat; } ============================================================ --- database.cc 8a18b697ea6dfa42979560ef2023429615fec9d6 +++ database.cc e185a4b7db7def9d9c5ddb0b1bc9f883d623220b @@ -1468,6 +1468,15 @@ } void +database::get_roster_version(roster_id const & id, + roster_data & dat) +{ + data tmp; + get_version(id.inner(), tmp, "rosters", "roster_deltas"); + dat = tmp; +} + +void database::put_file(file_id const & id, file_data const & dat) { @@ -2747,17 +2756,6 @@ get_roster(rev_id, roster, mm); } -void -database::get_roster(roster_id const & ros_id, - data & dat) -{ - string data_table = "rosters"; - string delta_table = "roster_deltas"; - - get_version(ros_id.inner(), dat, data_table, delta_table); -} - - static LRUCache > > rcache(constants::db_roster_cache_sz); @@ -2782,11 +2780,11 @@ return; } - data dat; + roster_data dat; roster_id ident; get_roster_id_for_revision(rev_id, ident); - get_roster(ident, dat); + get_roster_version(ident, dat); read_roster_and_marking(dat, roster, marks); sp = boost::shared_ptr > (new pair(roster, marks)); @@ -2800,7 +2798,7 @@ marking_map & marks) { MM(rev_id); - data old_data, new_data; + roster_data old_data, new_data; delta reverse_delta; roster_id old_id, new_id; @@ -2837,7 +2835,7 @@ // Else we have a new roster the database hasn't seen yet; our task is to // add it, and deltify all the incoming edges (if they aren't already). - schedule_write(data_table, new_id.inner(), new_data); + schedule_write(data_table, new_id.inner(), new_data.inner()); std::set parents; get_revision_parents(rev_id, parents); @@ -2853,8 +2851,8 @@ get_roster_id_for_revision(old_rev, old_id); if (exists(new_id.inner(), data_table)) { - get_version(old_id.inner(), old_data, data_table, delta_table); - diff(new_data, old_data, reverse_delta); + get_roster_version(old_id, old_data); + diff(new_data.inner(), old_data.inner(), reverse_delta); if (have_pending_write(data_table, old_id.inner())) cancel_pending_write(data_table, old_id.inner()); else ============================================================ --- database.hh da379322125c5ca6f8b1ab7e95e9b39d10bdf896 +++ database.hh 66618c65676ce4af4ca52ade55cd6f2af8ea11e8 @@ -405,8 +405,8 @@ roster_t & roster, marking_map & marks); - void get_roster(roster_id const & ros_id, - data & dat); + void get_roster_version(roster_id const & ros_id, + roster_data & dat); void get_uncommon_ancestors(revision_id const & a, revision_id const & b, ============================================================ --- database_check.cc cc6c8ece1194a534ba856ef17bc56ebb31b8458a +++ database_check.cc 91784581512b6a22dba4959fd46076f8ac2d18b6 @@ -170,8 +170,8 @@ { L(FL("checking roster %s\n") % *i); - data dat; - app.db.get_roster(*i, dat); + roster_data dat; + app.db.get_roster_version(*i, dat); checked_rosters[*i].found = true; roster_t ros; @@ -191,7 +191,7 @@ // normalisation check { roster_id norm_ident; - data norm_data; + roster_data norm_data; write_roster_and_marking(ros, mm, norm_data); calculate_ident(norm_data, norm_ident); if (norm_ident == *i) @@ -240,8 +240,8 @@ if (!i->second.parseable) continue; - data dat; - app.db.get_roster(ros_id, dat); + roster_data dat; + app.db.get_roster_version(ros_id, dat); roster_t ros; marking_map mm; ============================================================ --- roster.cc 7fcb961614cdf6ae31327fd80ac9f25648fee6bd +++ roster.cc 5955f1339c8276c1ad2964abf5051b7d9cb13890 @@ -2553,11 +2553,11 @@ void -read_roster_and_marking(data const & dat, +read_roster_and_marking(roster_data const & dat, roster_t & ros, marking_map & mm) { - basic_io::input_source src(dat(), "roster"); + basic_io::input_source src(dat.inner()(), "roster"); basic_io::tokenizer tok(src); basic_io::parser pars(tok); ros.parse_from(pars, mm); @@ -2569,7 +2569,7 @@ static void write_roster_and_marking(roster_t const & ros, marking_map const & mm, - data & dat, + roster_data & dat, bool print_local_parts) { if (print_local_parts) @@ -2578,14 +2578,14 @@ ros.check_sane(true); basic_io::printer pr; ros.print_to(pr, mm, print_local_parts); - dat = data(pr.buf); + dat = roster_data(pr.buf); } void write_roster_and_marking(roster_t const & ros, marking_map const & mm, - data & dat) + roster_data & dat) { write_roster_and_marking(ros, mm, dat, true); } @@ -2593,7 +2593,7 @@ void write_manifest_of_roster(roster_t const & ros, - data & dat) + roster_data & dat) { marking_map mm; write_roster_and_marking(ros, mm, dat, false); @@ -2602,17 +2602,16 @@ void calculate_ident(roster_t const & ros, manifest_id & ident) { - data tmp; - hexenc tid; + roster_data tmp; + roster_id tid; if (!ros.all_nodes().empty()) { write_manifest_of_roster(ros, tmp); calculate_ident(tmp, tid); } - ident = tid; + ident = tid.inner(); } - //////////////////////////////////////////////////////////////////// // testing //////////////////////////////////////////////////////////////////// @@ -2667,7 +2666,7 @@ I(n == dfs_counted); // do a read/write spin - data r_dat; MM(r_dat); + roster_data r_dat; MM(r_dat); marking_map fm; make_fake_marking_for(r, fm); write_roster_and_marking(r, fm, r_dat); @@ -2676,7 +2675,7 @@ read_roster_and_marking(r_dat, r2, fm2); I(r == r2); I(fm == fm2); - data r2_dat; MM(r2_dat); + roster_data r2_dat; MM(r2_dat); write_roster_and_marking(r2, fm2, r2_dat); I(r_dat == r2_dat); } @@ -2774,10 +2773,10 @@ // will have new ids assigned. // But they _will_ have the same manifests, assuming things are working // correctly. - data a_dat; MM(a_dat); - data a2_dat; MM(a2_dat); - data b_dat; MM(b_dat); - data b2_dat; MM(b2_dat); + roster_data a_dat; MM(a_dat); + roster_data a2_dat; MM(a2_dat); + roster_data b_dat; MM(b_dat); + roster_data b2_dat; MM(b2_dat); if (a.has_root()) write_manifest_of_roster(a, a_dat); if (a2.has_root()) @@ -4364,28 +4363,29 @@ { // manifest first - data mdat; MM(mdat); + roster_data mdat; MM(mdat); write_manifest_of_roster(r, mdat); - data expected("format_version \"1\"\n" - "\n" - "dir \"\"\n" - "\n" - "dir \"fo\"\n" - "\n" - "dir \"foo\"\n" - "\n" - "dir \"foo/ang\"\n" - "\n" - " file \"foo/bar\"\n" - "content [1111111111111111111111111111111111111111]\n" - " attr \"fascist\" \"tidiness\"\n" - "\n" - "dir \"foo/zoo\"\n" - "\n" - " dir \"xx\"\n" - "attr \"say\" \"hello\"\n" - ); + roster_data + expected(string("format_version \"1\"\n" + "\n" + "dir \"\"\n" + "\n" + "dir \"fo\"\n" + "\n" + "dir \"foo\"\n" + "\n" + "dir \"foo/ang\"\n" + "\n" + " file \"foo/bar\"\n" + "content [1111111111111111111111111111111111111111]\n" + " attr \"fascist\" \"tidiness\"\n" + "\n" + "dir \"foo/zoo\"\n" + "\n" + " dir \"xx\"\n" + "attr \"say\" \"hello\"\n" + )); MM(expected); BOOST_CHECK_NOT_THROW( I(expected == mdat), std::logic_error); @@ -4393,56 +4393,57 @@ { // full roster with local parts - data rdat; MM(rdat); + roster_data rdat; MM(rdat); write_roster_and_marking(r, mm, rdat); // node_id order is a hassle. // root 1, foo 2, xx 3, fo 4, foo_bar 5, foo_ang 6, foo_zoo 7 - data expected("format_version \"1\"\n" - "\n" - " dir \"\"\n" - " ident \"1\"\n" - " birth [1234123412341234123412341234123412341234]\n" - "path_mark [1234123412341234123412341234123412341234]\n" - "\n" - " dir \"fo\"\n" - " ident \"4\"\n" - " birth [1234123412341234123412341234123412341234]\n" - "path_mark [1234123412341234123412341234123412341234]\n" - "\n" - " dir \"foo\"\n" - " ident \"2\"\n" - " birth [1234123412341234123412341234123412341234]\n" - "path_mark [1234123412341234123412341234123412341234]\n" - "\n" - " dir \"foo/ang\"\n" - " ident \"6\"\n" - " birth [1234123412341234123412341234123412341234]\n" - "path_mark [1234123412341234123412341234123412341234]\n" - "\n" - " file \"foo/bar\"\n" - " content [1111111111111111111111111111111111111111]\n" - " ident \"5\"\n" - " attr \"fascist\" \"tidiness\"\n" - " birth [1234123412341234123412341234123412341234]\n" - " path_mark [1234123412341234123412341234123412341234]\n" - "content_mark [1234123412341234123412341234123412341234]\n" - " attr_mark \"fascist\" [1234123412341234123412341234123412341234]\n" - "\n" - " dir \"foo/zoo\"\n" - " ident \"7\"\n" - "dormant_attr \"regime\"\n" - " birth [1234123412341234123412341234123412341234]\n" - " path_mark [1234123412341234123412341234123412341234]\n" - " attr_mark \"regime\" [1234123412341234123412341234123412341234]\n" - "\n" - " dir \"xx\"\n" - " ident \"3\"\n" - " attr \"say\" \"hello\"\n" - " birth [1234123412341234123412341234123412341234]\n" - "path_mark [1234123412341234123412341234123412341234]\n" - "attr_mark \"say\" [1234123412341234123412341234123412341234]\n" - ); + roster_data + expected(string("format_version \"1\"\n" + "\n" + " dir \"\"\n" + " ident \"1\"\n" + " birth [1234123412341234123412341234123412341234]\n" + "path_mark [1234123412341234123412341234123412341234]\n" + "\n" + " dir \"fo\"\n" + " ident \"4\"\n" + " birth [1234123412341234123412341234123412341234]\n" + "path_mark [1234123412341234123412341234123412341234]\n" + "\n" + " dir \"foo\"\n" + " ident \"2\"\n" + " birth [1234123412341234123412341234123412341234]\n" + "path_mark [1234123412341234123412341234123412341234]\n" + "\n" + " dir \"foo/ang\"\n" + " ident \"6\"\n" + " birth [1234123412341234123412341234123412341234]\n" + "path_mark [1234123412341234123412341234123412341234]\n" + "\n" + " file \"foo/bar\"\n" + " content [1111111111111111111111111111111111111111]\n" + " ident \"5\"\n" + " attr \"fascist\" \"tidiness\"\n" + " birth [1234123412341234123412341234123412341234]\n" + " path_mark [1234123412341234123412341234123412341234]\n" + "content_mark [1234123412341234123412341234123412341234]\n" + " attr_mark \"fascist\" [1234123412341234123412341234123412341234]\n" + "\n" + " dir \"foo/zoo\"\n" + " ident \"7\"\n" + "dormant_attr \"regime\"\n" + " birth [1234123412341234123412341234123412341234]\n" + " path_mark [1234123412341234123412341234123412341234]\n" + " attr_mark \"regime\" [1234123412341234123412341234123412341234]\n" + "\n" + " dir \"xx\"\n" + " ident \"3\"\n" + " attr \"say\" \"hello\"\n" + " birth [1234123412341234123412341234123412341234]\n" + "path_mark [1234123412341234123412341234123412341234]\n" + "attr_mark \"say\" [1234123412341234123412341234123412341234]\n" + )); MM(expected); BOOST_CHECK_NOT_THROW( I(expected == rdat), std::logic_error); ============================================================ --- roster.hh 48f810e272158afce673d31d45766bfaf42bea6e +++ roster.hh 03aeb703100a85fcf944af1e9f6b2a2ff64e44eb @@ -387,19 +387,20 @@ app_state & app); void -read_roster_and_marking(data const & dat, +read_roster_and_marking(roster_data const & dat, roster_t & ros, marking_map & mm); void write_roster_and_marking(roster_t const & ros, marking_map const & mm, - data & dat); + roster_data & dat); void write_manifest_of_roster(roster_t const & ros, - data & dat); + roster_data & dat); + void calculate_ident(roster_t const & ros, manifest_id & ident); ============================================================ --- transforms.cc 3ccf0649c918465fe7169c823a2fc9e912488b9a +++ transforms.cc 37f28648e9933556c9262e822c3a4e40e0425467 @@ -245,11 +245,11 @@ } void -calculate_ident(data const & dat, +calculate_ident(roster_data const & dat, roster_id & ident) { hexenc tmp; - calculate_ident(dat, tmp); + calculate_ident(dat.inner(), tmp); ident = tmp; } ============================================================ --- transforms.hh 231599114d9ce5980f63ef0acb0605d836f4c0e6 +++ transforms.hh 1bbcd45fc8139263719006c25e13eeb76046f95d @@ -119,7 +119,7 @@ void calculate_ident(revision_data const & dat, revision_id & ident); -void calculate_ident(data const & dat, +void calculate_ident(roster_data const & dat, roster_id & ident); // canonicalize base64 encoding ============================================================ --- vocab.cc ec4c04c67d063fa7beb7b7821411f56099588d9a +++ vocab.cc 734ef82435e130f3ba3674573a142a8a980de91c @@ -219,6 +219,9 @@ template void dump(hexenc const & r, std::string &); +template +void dump(roster_data const & d, std::string &); + // the rest is unit tests #ifdef BUILD_UNIT_TESTS ============================================================ --- vocab.hh 9bc5a9930e2e19e73317788cd7f5142d99adb60f +++ vocab.hh ddda58d45f872418855170d5d7e47872ffb239ce @@ -82,6 +82,7 @@ typedef epoch< hexenc > epoch_data; typedef revision< data > revision_data; +typedef roster< data > roster_data; typedef manifest< data > manifest_data; typedef file< data > file_data; ============================================================ --- vocab_terms.hh fa88ad4f49972bed8d1e5f02bdeb23f5031f3de0 +++ vocab_terms.hh 5442a9adf37051de74795ca8d6f5b25ed92ab301 @@ -76,6 +76,7 @@ EXTERN template class base64< gzip >; EXTERN template class revision< data >; +EXTERN template class roster< data >; EXTERN template class manifest< data >; EXTERN template class file< data >; @@ -110,9 +111,11 @@ EXTERN template std::ostream & operator<< <>(std::ostream &, file< hexenc > const &); EXTERN template std::ostream & operator<< <>(std::ostream &, epoch< hexenc > const &); -EXTERN template std::ostream & operator<< <>(std::ostream &, hexenc const &); +EXTERN template std::ostream & operator<< <>(std::ostream &, hexenc const &); -EXTERN template std::ostream & operator<< <>(std::ostream &, hexenc const &); +EXTERN template std::ostream & operator<< <>(std::ostream &, roster const &); + +EXTERN template std::ostream & operator<< <>(std::ostream &, hexenc const &); EXTERN template std::ostream & operator<< <>(std::ostream &, epoch< hexenc > const &); EXTERN template std::ostream & operator<< <>(std::ostream &, gzip const &);