# # # patch "README.encapsulation" # from [2c948530991583f4b7d253d2f50ca441666e3d94] # to [485029c5b411db1f2969d61377d5ba1d39fa4cd9] # # patch "cmd_merging.cc" # from [0d8932c108698850bff26d77eee7281f18a4908e] # to [e709fecf8e9cd9847e878812b6a33a69dee87dac] # # patch "database.cc" # from [c609818513960b330c4d833ba6abe267fa635c47] # to [d6ad1937f9623d80391dd07346ab912cf41a437a] # # patch "database.hh" # from [dbcf6a4985c8319fe05b5d012a4772316d00a07b] # to [76ff25bd59ccb29cbe31206a9eccfdc9b8ecd5f9] # # patch "merge.cc" # from [1a06c3dfc96557c0608d1450917ca071dc4795b2] # to [e50ac78f44fbfa318338fde15b1320ae6b90b4bb] # # patch "merge.hh" # from [42ee1885e4d911e3ff29434b3a417f64c64f9048] # to [f12a288adf1d3b16c7687444011313d34a4e9a03] # # patch "netsync.cc" # from [b162d327e4854e204ec02ef5f3fd0e0be2c42596] # to [0f01e801b2652763d4f1b7b99b9fd5f227081b43] # # patch "roster.cc" # from [dfb22c69788162515c92abc16b52eee9c1e4f75e] # to [2b855d1ef23ddcf2a544d12b92bbe70cfa2aa272] # # patch "roster.hh" # from [0df1174eb4998443af6c94143f46eb3f8b383f31] # to [9f5f0738e58f32a444e7b554281030605b21cfd1] # ============================================================ --- README.encapsulation 2c948530991583f4b7d253d2f50ca441666e3d94 +++ README.encapsulation 485029c5b411db1f2969d61377d5ba1d39fa4cd9 @@ -82,7 +82,120 @@ cert.cc: app.opts.branchname +database.cc: + __app is a member variable of class database, it's needed for the + following functions: + migrate_sql_schema() + test_migration_step() + database::complete() + needs: __app->get_project().get_branch_list() + needs: __app->require_workspace() + needs: __app->get_project().get_branch_heads() + needs: __app->opts.branchname + +schema_migration.cc: + + migrate_to_external_privkeys(): + needs the key_store + + the migrator func (migrator_cb) also needs the app_state. + + +netsync.cc: + + struct session: + app.db... + app.opts.use_transport_auth + needs: rev_enumerator() + app.lua.hook_note_netsync_{pubkey,revision,cert}_received + app.lua.hook_note_netsync_end + + session::set_session_key(): + app.opts.use_transport_auth + app.opts.signing_key + needs: load_key_pair() + needs: decrypt_rsa() + + session::queue_anonymous_cmd(): + needs: encript_rsa() + + session::queue_auth_cmd(): + needs: encript_rsa() + + session::process_hello_cmd(): + app.db... + app.opts.use_transport_auth + app.opts.signing_key + app.get_project().get_branch_list() + needs: make_signature() + app.lua.hook_note_netsync_start + + session::process_anonymous_cmd(): + app.db... + app.opts.use_transport_auth + app.opts.signing_key + app.get_project().get_branch_list() + app.lua.hook_get_netsync_read_permitted + needs: rebuild_merkle_trees() + + session::process_auth_cmd(): + app.db... + app.keys.try_ensure_in_db() + app.lua.hook_note_netsync_start() + app.lua.hook_get_netsync_read_permitted() + app.lua.hook_get_netsync_write_permitted() + app.get_project().get_branch_list() + needs: rebuild_merkle_trees() + needs: check_signature() + + session::begin_service(): + app.opts.use_transport_auth + app.opts.signing_key + app.keys.get_key_pair() + + build_stream_to_server(): + app.lua.hook_get_netsync_connect_command() + app.lua.hook_use_transport_auth + (saving that to "app.opts.use_transport_auth") + + call_server(): + needs: build_stream_to_server() + needs: session() + + serve_connections(): + app.opts.bind_port() + app.opts.bind_address() + + session::rebuild_merkle_trees() + (huh? takes another app_state, even if the session already has one?) + app.get_project().get_branch_certs() + app.db... + app.opts.keys_to_push() + app.keys.key_pair_exists() + app.keys.ensure_in_database() + + run_netsync_protocol(): + app.opts.bind_stdio + + +packet.cc: + feed_packet_consumer: + needs: migrate_private_key() + + +keys.cc: + migrate_private_key(): + needs: get_passphrase() + + get_passphrase(): + lua.hook_get_passphrase + + make_signature(): + needs: get_passphrase() + app.opts.ssh_sign + app.keys... + app.agent ============================================================ --- cmd_merging.cc 0d8932c108698850bff26d77eee7281f18a4908e +++ cmd_merging.cc e709fecf8e9cd9847e878812b6a33a69dee87dac @@ -574,7 +574,7 @@ CMD(merge_into_dir, N_("tree"), N_("SOUR // Write new files into the db. store_roster_merge_result(left_roster, right_roster, result, left_rid, right_rid, merged, - app); + app.db); } bool log_message_given; ============================================================ --- database.cc c609818513960b330c4d833ba6abe267fa635c47 +++ database.cc d6ad1937f9623d80391dd07346ab912cf41a437a @@ -241,7 +241,7 @@ database::sql(enum open_mode mode) check_format(); } - install_functions(__app); + install_functions(); } else I(mode == normal_mode); @@ -2107,7 +2107,7 @@ database::put_roster_for_revision(revisi shared_ptr mm_writeable(new marking_map); MM(*mm_writeable); manifest_id roster_manifest_id; MM(roster_manifest_id); - make_roster_for_revision(rev, new_id, *ros_writeable, *mm_writeable, *__app); + make_roster_for_revision(rev, new_id, *ros_writeable, *mm_writeable, *this); calculate_ident(*ros_writeable, roster_manifest_id); I(rev.new_manifest == roster_manifest_id); // const'ify the objects, suitable for caching etc. @@ -2406,7 +2406,7 @@ void } void -database::install_functions(app_state * app) +database::install_functions() { // register any functions we're going to use I(sqlite3_create_function(sql(), "gunzip", -1, ============================================================ --- database.hh dbcf6a4985c8319fe05b5d012a4772316d00a07b +++ database.hh 76ff25bd59ccb29cbe31206a9eccfdc9b8ecd5f9 @@ -90,7 +90,7 @@ private: schema_bypass_mode, format_bypass_mode }; - void install_functions(app_state * app); + void install_functions(); struct sqlite3 * sql(enum open_mode mode = normal_mode); void check_filename(); ============================================================ --- merge.cc 1a06c3dfc96557c0608d1450917ca071dc4795b2 +++ merge.cc e50ac78f44fbfa318338fde15b1320ae6b90b4bb @@ -160,7 +160,7 @@ interactive_merge_and_store(revision_id // write new files into the db store_roster_merge_result(left_roster, right_roster, result, left_rid, right_rid, merged_rid, - app); + app.db); } void @@ -170,7 +170,7 @@ store_roster_merge_result(roster_t const revision_id const & left_rid, revision_id const & right_rid, revision_id & merged_rid, - app_state & app) + database & db) { I(result.is_clean()); roster_t & merged_roster = result.roster; @@ -193,9 +193,9 @@ store_roster_merge_result(roster_t const write_revision(merged_rev, merged_data); calculate_ident(merged_data, merged_rid); { - transaction_guard guard(app.db); + transaction_guard guard(db); - app.db.put_revision(merged_rid, merged_rev); + db.put_revision(merged_rid, merged_rev); guard.commit(); } ============================================================ --- merge.hh 42ee1885e4d911e3ff29434b3a417f64c64f9048 +++ merge.hh f12a288adf1d3b16c7687444011313d34a4e9a03 @@ -52,7 +52,7 @@ store_roster_merge_result(roster_t const revision_id const & left_rid, revision_id const & right_rid, revision_id & merged_rid, - app_state & app); + database & db); // Local Variables: // mode: C++ ============================================================ --- netsync.cc b162d327e4854e204ec02ef5f3fd0e0be2c42596 +++ netsync.cc 0f01e801b2652763d4f1b7b99b9fd5f227081b43 @@ -2981,7 +2981,6 @@ insert_with_parents(revision_id rev, refiner & ref, revision_enumerator & rev_enumerator, set & revs, - app_state & app, ticker & revisions_ticker) { deque work; @@ -3043,7 +3042,7 @@ session::rebuild_merkle_trees(app_state { revision_id rid(j->inner().ident); insert_with_parents(rid, rev_refiner, rev_enumerator, - revision_ids, app, revisions_ticker); + revision_ids, revisions_ticker); // Branch certs go in here, others later on. hexenc tmp; id item; ============================================================ --- roster.cc dfb22c69788162515c92abc16b52eee9c1e4f75e +++ roster.cc 2b855d1ef23ddcf2a544d12b92bbe70cfa2aa272 @@ -14,9 +14,9 @@ #include #include -#include "app_state.hh" #include "basic_io.hh" #include "cset.hh" +#include "database.hh" #include "platform-wrapped.hh" #include "roster.hh" #include "revision.hh" @@ -1095,14 +1095,14 @@ namespace struct true_node_id_source : public node_id_source { - true_node_id_source(app_state & app) : app(app) {} + true_node_id_source(database & db) : db(db) {} virtual node_id next() { - node_id n = app.db.next_node_id(); + node_id n = db.next_node_id(); I(!temp_node(n)); return n; } - app_state & app; + database & db; }; @@ -1916,10 +1916,10 @@ make_roster_for_revision(revision_t cons void make_roster_for_revision(revision_t const & rev, revision_id const & new_rid, roster_t & new_roster, marking_map & new_markings, - app_state & app) + database & db) { - true_node_id_source nis(app); - make_roster_for_revision(rev, new_rid, new_roster, new_markings, app.db, nis); + true_node_id_source nis(db); + make_roster_for_revision(rev, new_rid, new_roster, new_markings, db, nis); } ============================================================ --- roster.hh 0df1174eb4998443af6c94143f46eb3f8b383f31 +++ roster.hh 9f5f0738e58f32a444e7b554281030605b21cfd1 @@ -316,7 +316,6 @@ template <> void dump(roster_t const & v template <> void dump(roster_t const & val, std::string & out); -class app_state; class database; struct revision_t; @@ -409,7 +408,7 @@ make_roster_for_revision(revision_t cons revision_id const & rid, roster_t & result, marking_map & marking, - app_state & app); + database & db); // This is for revisions that are not necessarily going to be written to the // db; you can specify your own node_id_source.