+ // Get and set current load, which may be real load, or expected
+ // load if opt::bookkeeping is true.
+ double get_load() const { return expected_load; }
+
+ // The load balancing algorithm comes here...
+ virtual void load_balance();
+
+ // Register some amount of load to send to given neighbor.
+ void send(neighbor& nb, double amount);
+ void send(neighbor* nb, double amount) { send(*nb, amount); }
+
+ // Sort pneigh by applying comp to their loads
+ template <typename Compare>
+ void pneigh_sort_by_load(const Compare& comp);
+