package resa.evaluation.simulate.sleep; import backtype.storm.topology.OutputFieldsDeclarer; import backtype.storm.tuple.Fields; import backtype.storm.tuple.Tuple; import backtype.storm.tuple.Values; import java.util.Random; /** * Created by ding on 14-1-27. */ public class TAWordCounter2Path extends TASleepBolt { private Random rand; private double p; public TAWordCounter2Path(IntervalSupplier sleep, double p) { super(sleep); this.p = p; rand = new Random(); } @Override public void execute(Tuple tuple) { super.execute(tuple); String sid = tuple.getString(0); String word = tuple.getString(1); double prob = rand.nextDouble(); if (prob < this.p){ collector.emit("Bolt-P", tuple, new Values(sid, word)); } else{ collector.emit("Bolt-NotP", new Values(word + "!!")); } collector.ack(tuple); } @Override public void declareOutputFields(OutputFieldsDeclarer declarer) { declarer.declareStream("Bolt-P", new Fields("sid", "word")); declarer.declareStream("Bolt-NotP", new Fields("word!")); } }