#
# patch "ChangeLog"
# from [60f1576e8c659ae5ff8184217e5ea04d4de163d5]
# to [5dc32a632e92858ace8ff280b83f2327cdcb0ab3]
#
# patch "netsync.cc"
# from [60652355c67df5803337e5deb857a8dbb279ffa1]
# to [e1f885ae4739699f950e7d311e5d4bd8815ade54]
#
# patch "packet.cc"
# from [478a95c883062f409c2d9558dd3177e9d5e6ac2c]
# to [90a102794d4dc3b6943b502026bfb74c4ab69fab]
#
# patch "packet.hh"
# from [f5f36ee1eb04d53b1d407fe6f5ea1b24d9c4a847]
# to [3ecd9f0de0e37c56a105cfc6bfd8a5fdb84032c7]
#
--- ChangeLog
+++ ChangeLog
@@ -1,5 +1,12 @@
2005-05-10 Timothy Brownawell
+ * packet.{cc,hh}: Give packet_consumer and children a callback to call
+ after writing out a revision.
+ * netsync.cc: Use this callback to add a "revisions written" ticker,
+ to provide user feedback while sanity checking.
+
+2005-05-10 Timothy Brownawell
+
* ui.cc: Make tick_write_count take less horizontal space
2005-05-09 Matthew Gregan
--- netsync.cc
+++ netsync.cc
@@ -12,6 +12,7 @@
#include
#include
#include
+#include
#include "app_state.hh"
#include "cert.hh"
@@ -233,6 +234,7 @@
auto_ptr cert_out_ticker;
auto_ptr revision_in_ticker;
auto_ptr revision_out_ticker;
+ auto_ptr revision_checked_ticker;
map< std::pair,
boost::shared_ptr > merkle_tables;
@@ -260,6 +262,8 @@
Netxx::Timeout const & to);
virtual ~session() {}
+
+ void rev_written_callback();
id mk_nonce();
void mark_recent_io();
@@ -433,6 +437,7 @@
cert_out_ticker(NULL),
revision_in_ticker(NULL),
revision_out_ticker(NULL),
+ revision_checked_ticker(NULL),
analyzed_ancestry(false),
saved_nonce(""),
received_goodbye(false),
@@ -447,6 +452,9 @@
this->collection = idx(collections, 0);
}
+ dbw.set_on_revision_written(boost::bind(&session::rev_written_callback,
+ this));
+
// we will panic here if the user doesn't like urandom and we can't give
// them a real entropy-driven random.
bool request_blocking_rng = false;
@@ -478,6 +486,11 @@
}
}
+void session::rev_written_callback()
+{
+ if(revision_checked_ticker.get()) ++(*revision_checked_ticker);
+}
+
id
session::mk_nonce()
{
@@ -2887,6 +2900,7 @@
sess.byte_out_ticker.reset(new ticker("bytes out", "<", 1024, true));
if (role == sink_role)
{
+ sess.revision_checked_ticker.reset(new ticker("revs written", "w", 1));
sess.cert_in_ticker.reset(new ticker("certs in", "c", 3));
sess.revision_in_ticker.reset(new ticker("revs in", "r", 1));
}
@@ -2898,6 +2912,7 @@
else
{
I(role == source_and_sink_role);
+ sess.revision_checked_ticker.reset(new ticker("revs written", "w", 1));
sess.revision_in_ticker.reset(new ticker("revs in", "r", 1));
sess.revision_out_ticker.reset(new ticker("revs out", "R", 1));
}
--- packet.cc
+++ packet.cc
@@ -428,6 +428,13 @@
I(all_prerequisites_satisfied());
}
+
+void packet_consumer::set_on_revision_written(boost::function0 const & x)
+{
+ on_revision_written=x;
+}
+
+
struct packet_db_writer::impl
{
app_state & app;
@@ -859,6 +866,7 @@
if (dp->all_prerequisites_satisfied())
{
pimpl->app.db.put_revision(ident, dat);
+ if(on_revision_written) on_revision_written();
pimpl->accepted_revision(ident, *this);
}
}
@@ -990,6 +998,11 @@
#define DOIT(x) pimpl->do_packet(boost::shared_ptr(new x));
+void packet_db_valve::set_on_revision_written(boost::function0 const & x)
+{
+ on_revision_written=x;
+ pimpl->writer.set_on_revision_written(x);
+}
void
packet_db_valve::consume_file_data(file_id const & ident,
file_data const & dat)
--- packet.hh
+++ packet.hh
@@ -9,6 +9,8 @@
#include
#include
+#include
+
#include "app_state.hh"
#include "ui.hh"
#include "vocab.hh"
@@ -34,6 +36,12 @@
struct packet_consumer
{
+protected:
+ boost::function0 on_revision_written;
+public:
+
+ virtual void set_on_revision_written(boost::function0 const & x);
+
virtual ~packet_consumer() {}
virtual void consume_file_data(file_id const & ident,
file_data const & dat) = 0;
@@ -154,6 +162,7 @@
packet_db_valve(app_state & app,
bool take_keys = false);
virtual ~packet_db_valve();
+ virtual void set_on_revision_written(boost::function0 const & x);
virtual void consume_file_data(file_id const & ident,
file_data const & dat);
virtual void consume_file_delta(file_id const & id_old,