Clover Coverage Report - JmDNS 3.4.1
Coverage timestamp: Thu Aug 25 2011 13:06:33 CEST
../../../../../img/srcFileCovDistChart9.png 2% of files have more coverage
25   146   16   2.08
6   77   0.64   12
12     1.33  
1    
 
  Announcer       Line # 24 25 0% 16 6 86% 0.8604651
 
  (19)
 
1    // Copyright 2003-2005 Arthur van Hoff, Rick Blair
2    // Licensed under Apache License version 2.0
3    // Original license LGPL
4   
5    package javax.jmdns.impl.tasks.state;
6   
7    import java.io.IOException;
8    import java.util.Timer;
9    import java.util.logging.Logger;
10   
11    import javax.jmdns.impl.DNSOutgoing;
12    import javax.jmdns.impl.DNSRecord;
13    import javax.jmdns.impl.JmDNSImpl;
14    import javax.jmdns.impl.ServiceInfoImpl;
15    import javax.jmdns.impl.constants.DNSConstants;
16    import javax.jmdns.impl.constants.DNSRecordClass;
17    import javax.jmdns.impl.constants.DNSState;
18   
19    /**
20    * The Announcer sends an accumulated query of all announces, and advances the state of all serviceInfos, for which it has sent an announce. The Announcer also sends announcements and advances the state of JmDNS itself.
21    * <p/>
22    * When the announcer has run two times, it finishes.
23    */
 
24    public class Announcer extends DNSStateTask {
25    static Logger logger = Logger.getLogger(Announcer.class.getName());
26   
 
27  51 toggle public Announcer(JmDNSImpl jmDNSImpl) {
28  51 super(jmDNSImpl, defaultTTL());
29   
30  51 this.setTaskState(DNSState.ANNOUNCING_1);
31  51 this.associate(DNSState.ANNOUNCING_1);
32    }
33   
34    /*
35    * (non-Javadoc)
36    * @see javax.jmdns.impl.tasks.DNSTask#getName()
37    */
 
38  204 toggle @Override
39    public String getName() {
40  204 return "Announcer(" + (this.getDns() != null ? this.getDns().getName() : "") + ")";
41    }
42   
43    /*
44    * (non-Javadoc)
45    * @see java.lang.Object#toString()
46    */
 
47  0 toggle @Override
48    public String toString() {
49  0 return super.toString() + " state: " + this.getTaskState();
50    }
51   
52    /*
53    * (non-Javadoc)
54    * @see javax.jmdns.impl.tasks.DNSTask#start(java.util.Timer)
55    */
 
56  51 toggle @Override
57    public void start(Timer timer) {
58  51 if (!this.getDns().isCanceling() && !this.getDns().isCanceled()) {
59  51 timer.schedule(this, DNSConstants.ANNOUNCE_WAIT_INTERVAL, DNSConstants.ANNOUNCE_WAIT_INTERVAL);
60    }
61    }
62   
 
63  51 toggle @Override
64    public boolean cancel() {
65  51 this.removeAssociation();
66   
67  51 return super.cancel();
68    }
69   
70    /*
71    * (non-Javadoc)
72    * @see javax.jmdns.impl.tasks.state.DNSStateTask#getTaskDescription()
73    */
 
74  204 toggle @Override
75    public String getTaskDescription() {
76  204 return "announcing";
77    }
78   
79    /*
80    * (non-Javadoc)
81    * @see javax.jmdns.impl.tasks.state.DNSStateTask#checkRunCondition()
82    */
 
83  102 toggle @Override
84    protected boolean checkRunCondition() {
85  102 return !this.getDns().isCanceling() && !this.getDns().isCanceled();
86    }
87   
88    /*
89    * (non-Javadoc)
90    * @see javax.jmdns.impl.tasks.state.DNSStateTask#createOugoing()
91    */
 
92  102 toggle @Override
93    protected DNSOutgoing createOugoing() {
94  102 return new DNSOutgoing(DNSConstants.FLAGS_QR_RESPONSE | DNSConstants.FLAGS_AA);
95    }
96   
97    /*
98    * (non-Javadoc)
99    * @see javax.jmdns.impl.tasks.state.DNSStateTask#buildOutgoingForDNS(javax.jmdns.impl.DNSOutgoing)
100    */
 
101  53 toggle @Override
102    protected DNSOutgoing buildOutgoingForDNS(DNSOutgoing out) throws IOException {
103  53 DNSOutgoing newOut = out;
104  54 for (DNSRecord answer : this.getDns().getLocalHost().answers(DNSRecordClass.UNIQUE, this.getTTL())) {
105  54 newOut = this.addAnswer(newOut, null, answer);
106    }
107  54 return newOut;
108    }
109   
110    /*
111    * (non-Javadoc)
112    * @see javax.jmdns.impl.tasks.state.DNSStateTask#buildOutgoingForInfo(javax.jmdns.impl.ServiceInfoImpl, javax.jmdns.impl.DNSOutgoing)
113    */
 
114  48 toggle @Override
115    protected DNSOutgoing buildOutgoingForInfo(ServiceInfoImpl info, DNSOutgoing out) throws IOException {
116  48 DNSOutgoing newOut = out;
117  48 for (DNSRecord answer : info.answers(DNSRecordClass.UNIQUE, this.getTTL(), this.getDns().getLocalHost())) {
118  146 newOut = this.addAnswer(newOut, null, answer);
119    }
120  48 return newOut;
121    }
122   
123    /*
124    * (non-Javadoc)
125    * @see javax.jmdns.impl.tasks.state.DNSStateTask#recoverTask(java.lang.Throwable)
126    */
 
127  0 toggle @Override
128    protected void recoverTask(Throwable e) {
129  0 this.getDns().recover();
130    }
131   
132    /*
133    * (non-Javadoc)
134    * @see javax.jmdns.impl.tasks.state.DNSStateTask#advanceTask()
135    */
 
136  102 toggle @Override
137    protected void advanceTask() {
138  102 this.setTaskState(this.getTaskState().advance());
139  102 if (!this.getTaskState().isAnnouncing()) {
140  51 this.cancel();
141   
142  51 this.getDns().startRenewer();
143    }
144    }
145   
146    }