'pool_rate': graph.DataStreamDescription(True, dataview_descriptions),
'pool_stale_rate': graph.DataStreamDescription(True, dataview_descriptions),
'current_payout': graph.DataStreamDescription(True, dataview_descriptions),
+ 'incoming_peers': graph.DataStreamDescription(True, dataview_descriptions),
+ 'outgoing_peers': graph.DataStreamDescription(True, dataview_descriptions),
}, hd_obj)
task.LoopingCall(lambda: _atomic_write(hd_path, json.dumps(hd.to_obj()))).start(100)
@pseudoshare_received.watch
hd.datastreams['pool_rate'].add_datum(t, poolrate)
hd.datastreams['pool_stale_rate'].add_datum(t, poolrate - nonstalerate)
hd.datastreams['current_payout'].add_datum(t, get_current_txouts().get(bitcoin_data.pubkey_hash_to_script2(my_pubkey_hash), 0)*1e-8)
+ hd.datastreams['incoming_peers'].add_datum(t, sum(1 for peer in p2p_node.peers.itervalues() if peer.incoming))
+ hd.datastreams['outgoing_peers'].add_datum(t, sum(1 for peer in p2p_node.peers.itervalues() if not peer.incoming))
task.LoopingCall(add_point).start(5)
new_root.putChild('graph_data', WebInterface(lambda source, view: json.dumps(hd.datastreams[source].dataviews[view].get_data(time.time())), 'application/json'))
<h2>Pool rate - Blue=All, Red=Stale (hash/second)</h2>
<svg id="pool"></svg>
+ <h2>Peers - Blue=Incoming, Red=Outgoing</h2>
+ <svg id="peers"></svg>
+
<script type="text/javascript">
function compose() {
var funcs = arguments;
var margin_top = 10;
var x = d3.time.scale().domain([as_date(d3.min(data, itemgetter(0))), as_date(d3.max(data, itemgetter(0)))]).range([0 + margin * 2, w - margin * 2]);
- var y = d3.scale.linear().domain([0, d3.max(data, itemgetter(1))]).range([h - margin, margin_top]);
+ var y = d3.scale.linear().domain([0, d3.max(data.concat(dead_data), itemgetter(1))]).range([h - margin, margin_top]);
var line = d3.svg.line().x(compose(x, as_date, itemgetter(0))).y(compose(y, itemgetter(1))).defined(compose(not_null, itemgetter(1)));
attachGraph(d3.select("#local"), "local_hash_rate/last_" + lowerperiod, "local_dead_hash_rate/last_" + lowerperiod);
attachGraph(d3.select("#payout"), "current_payout/last_" + lowerperiod);
attachGraph(d3.select("#pool"), "pool_rate/last_" + lowerperiod, "pool_stale_rate/last_" + lowerperiod);
+ attachGraph(d3.select("#peers"), "incoming_peers/last_" + lowerperiod, "outgoing_peers/last_" + lowerperiod);
d3.select("#period_current").text(period);
}
change_period(periods[1]);