1 package info.mikethomas.fahview.v6project.model;
2
3 /*
4 * #%L
5 * This file is part of FAHView-v6project.
6 * %%
7 * Copyright (C) 2011 - 2017 Mike Thomas <mikepthomas@outlook.com>
8 * %%
9 * FAHView is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation, either version 3 of the License, or
12 * (at your option) any later version.
13 * %
14 * FAHView is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 * %
19 * You should have received a copy of the GNU General Public License
20 * along with FAHView. If not, see <http://www.gnu.org/licenses/>.
21 * #L%
22 */
23
24 /**
25 * Interface to represent data stored about a Folding@home queue.
26 *
27 * @author <a href="mailto:mikepthomas@outlook.com">Michael Thomas</a>
28 * @version 6.00
29 */
30 public interface Queue {
31 // <editor-fold defaultstate="collapsed" desc="position-constants">
32 /**
33 * Position in bytes of the Queue (client) version from the start of
34 * {@code queue.dat}.
35 *
36 * @since 2.17
37 * @see #getVersion()
38 * @see #VERSION_LENGTH
39 */
40 int VERSION_POS = 0;
41 /**
42 * Position in bytes of the Current index number from the start of
43 * {@code queue.dat}.
44 *
45 * @see #getCurrent()
46 * @see #CURRENT_LENGTH
47 */
48 int CURRENT_POS = 4;
49 /**
50 * Position in bytes of Queue Index 0 from the start of
51 * {@code queue.dat}.
52 *
53 * @see #getQueueIndex(int)
54 * @see #QUEUE_INDEX_LENGTH
55 */
56 int QUEUE_INDEX_0_POS = 8;
57 /**
58 * Position in bytes of Queue Index 1 from the start of
59 * {@code queue.dat}.
60 *
61 * @see #getQueueIndex(int)
62 * @see #QUEUE_INDEX_LENGTH
63 */
64 int QUEUE_INDEX_1_POS = 720;
65 /**
66 * Position in bytes of Queue Index 2 from the start of
67 * {@code queue.dat}.
68 *
69 * @see #getQueueIndex(int)
70 * @see #QUEUE_INDEX_LENGTH
71 */
72 int QUEUE_INDEX_2_POS = 1432;
73 /**
74 * Position in bytes of Queue Index 3 from the start of
75 * {@code queue.dat}.
76 *
77 * @see #getQueueIndex(int)
78 * @see #QUEUE_INDEX_LENGTH
79 */
80 int QUEUE_INDEX_3_POS = 2144;
81 /**
82 * Position in bytes of Queue Index 4 from the start of
83 * {@code queue.dat}.
84 *
85 * @see #getQueueIndex(int)
86 * @see #QUEUE_INDEX_LENGTH
87 */
88 int QUEUE_INDEX_4_POS = 2856;
89 /**
90 * Position in bytes of Queue Index 5 from the start of
91 * {@code queue.dat}.
92 *
93 * @see #getQueueIndex(int)
94 * @see #QUEUE_INDEX_LENGTH
95 */
96 int QUEUE_INDEX_5_POS = 3568;
97 /**
98 * Position in bytes of Queue Index 6 from the start of
99 * {@code queue.dat}.
100 *
101 * @see #getQueueIndex(int)
102 * @see #QUEUE_INDEX_LENGTH
103 */
104 int QUEUE_INDEX_6_POS = 4280;
105 /**
106 * Position in bytes of Queue Index 7 from the start of
107 * {@code queue.dat}.
108 *
109 * @see #getQueueIndex(int)
110 * @see #QUEUE_INDEX_LENGTH
111 */
112 int QUEUE_INDEX_7_POS = 4992;
113 /**
114 * Position in bytes of Queue Index 8 from the start of
115 * {@code queue.dat}.
116 *
117 * @see #getQueueIndex(int)
118 * @see #QUEUE_INDEX_LENGTH
119 */
120 int QUEUE_INDEX_8_POS = 5704;
121 /**
122 * Position in bytes of Queue Index 9 from the start of
123 * {@code queue.dat}.
124 *
125 * @see #getQueueIndex(int)
126 * @see #QUEUE_INDEX_LENGTH
127 */
128 int QUEUE_INDEX_9_POS = 6416;
129 /**
130 * Position in bytes of the Performance Fraction from the start of
131 * {@code queue.dat}.
132 *
133 * @since 3.24
134 * @see #getPfract()
135 * @see #PFRACT_LENGTH
136 */
137 int PFRACT_POS = 7128;
138 /**
139 * Position in bytes of the Performance fraction unit weight from the start
140 * of {@code queue.dat}.
141 *
142 * @since 3.24
143 * @see #getPunits()
144 * @see #PUNITS_LENGTH
145 */
146 int PUNITS_POS = 7132;
147 /**
148 * Position in bytes of the Download rate sliding average from the start of
149 * {@code queue.dat}.
150 *
151 * @since 4.00
152 * @see #getDrate()
153 * @see #DRATE_LENGTH
154 */
155 int DRATE_POS = 7136;
156 /**
157 * Position in bytes of the Download rate unit weight from the start of
158 * {@code queue.dat}.
159 *
160 * @since 4.00
161 * @see #getDunits()
162 * @see #DUNITS_LENGTH
163 */
164 int DUNITS_POS = 7140;
165 /**
166 * Position in bytes of the Upload rate sliding average from the start of
167 * {@code queue.dat}.
168 *
169 * @since 4.00
170 * @see #getUrate()
171 * @see #URATE_LENGTH
172 */
173 int URATE_POS = 7144;
174 /**
175 * Position in bytes of the Upload rate unit weight from the start of
176 * {@code queue.dat}.
177 *
178 * @since 4.00
179 * @see #getUunits()
180 * @see #UUNITS_LENGTH
181 */
182 int UUNITS_POS = 7148;
183 /**
184 * Position in bytes of the Results successfully sent after upload failures
185 * from the start of {@code queue.dat}.
186 *
187 * @since 5.00
188 * @see #getSent()
189 * @see #SENT_LENGTH
190 */
191 int SENT_POS = 7152;
192 /**
193 * Position in bytes of padding from the start of {@code queue.dat}
194 * (All Zeros).
195 *
196 * @since 5.00
197 * @see #Z7156_LENGTH
198 */
199 int Z7156_POS = 7156;
200 // </editor-fold>
201 // <editor-fold defaultstate="collapsed" desc="length-constants">
202 /**
203 * Length in bytes of the Queue (client) version in {@code queue.dat}.
204 *
205 * @since 2.17
206 * @see #getVersion()
207 * @see #VERSION_POS
208 */
209 int VERSION_LENGTH = 4;
210 /**
211 * Length in bytes of the Current index number in {@code queue.dat}.
212 *
213 * @see #getCurrent()
214 * @see #CURRENT_POS
215 */
216 int CURRENT_LENGTH = 4;
217 /**
218 * Length in bytes of a Queue Index in {@code queue.dat}.
219 *
220 * @see #getQueueIndex(int)
221 * @see #QUEUE_INDEX_0_POS
222 * @see #QUEUE_INDEX_1_POS
223 * @see #QUEUE_INDEX_2_POS
224 * @see #QUEUE_INDEX_3_POS
225 * @see #QUEUE_INDEX_4_POS
226 * @see #QUEUE_INDEX_5_POS
227 * @see #QUEUE_INDEX_6_POS
228 * @see #QUEUE_INDEX_7_POS
229 * @see #QUEUE_INDEX_8_POS
230 * @see #QUEUE_INDEX_9_POS
231 *
232 */
233 int QUEUE_INDEX_LENGTH = 712;
234 /**
235 * Length in bytes of the Performance fraction in {@code queue.dat}.
236 *
237 * @since 3.24
238 * @see #getPfract()
239 * @see #PFRACT_POS
240 */
241 int PFRACT_LENGTH = 4;
242 /**
243 * Length in bytes of the Performance fraction unit weight in
244 * {@code queue.dat}.
245 *
246 * @since 3.24
247 * @see #getPunits()
248 * @see #PUNITS_POS
249 */
250 int PUNITS_LENGTH = 4;
251 /**
252 * Length in bytes of the Download rate sliding average in
253 * {@code queue.dat}.
254 *
255 * @since 4.00
256 * @see #getDrate()
257 * @see #DRATE_POS
258 */
259 int DRATE_LENGTH = 4;
260 /**
261 * Length in bytes of the Download rate unit weight in {@code queue.dat}.
262 *
263 * @since 4.00
264 * @see #getDunits()
265 * @see #DUNITS_POS
266 */
267 int DUNITS_LENGTH = 4;
268 /**
269 * Length in bytes of the Upload rate sliding average in {@code queue.dat}.
270 *
271 * @since 4.00
272 * @see #getUrate()
273 * @see #URATE_POS
274 */
275 int URATE_LENGTH = 4;
276 /**
277 * Length in bytes of the Upload rate unit weight in {@code queue.dat}.
278 *
279 * @since 4.00
280 * @see #getUunits()
281 * @see #UUNITS_POS
282 */
283 int UUNITS_LENGTH = 4;
284 /**
285 * Length in bytes of the Results successfully sent after upload failures in
286 * {@code queue.dat}.
287 *
288 * @since 5.00
289 * @see #getSent()
290 * @see #SENT_POS
291 */
292 int SENT_LENGTH = 4;
293 /**
294 * Length in bytes of padding in {@code queue.dat} (All Zeros).
295 *
296 * @since 5.00
297 * @see #Z7156_POS
298 */
299 int Z7156_LENGTH = 12;
300 // </editor-fold>
301 // <editor-fold desc="accessors">
302 /**
303 * Get the value of Queue (client) version.
304 *
305 * @return the value of version
306 */
307 int getVersion();
308 /**
309 * Get the value of Current index number.
310 *
311 * @return the value of current
312 */
313 int getCurrent();
314 /**
315 * Get the value of queueIndex at specified index.
316 *
317 * @param index the index required
318 * @return the value of queueIndex at specified index
319 */
320 QueueIndexImpl getQueueIndex(int index);
321 /**
322 * Get the value of Performance fraction.
323 *
324 * @return the value of pfract
325 */
326 int getPfract();
327 /**
328 * Get the value of Performance fraction unit weight.
329 *
330 * @return the value of punits
331 */
332 int getPunits();
333 /**
334 * Get the value of Download rate sliding average.
335 *
336 * @return the value of drate
337 */
338 int getDrate();
339 /**
340 * Get the value of Download rate unit weight.
341 *
342 * @return the value of dunits
343 */
344 int getDunits();
345 /**
346 * Get the value of Upload rate sliding average.
347 *
348 * @return the value of urate
349 */
350 int getUrate();
351 /**
352 * Get the value of Upload rate unit weight.
353 *
354 * @return the value of uunits
355 */
356 int getUunits();
357 /**
358 * Get the value of Results Sent.
359 *
360 * @return the value of sent
361 */
362 int getSent();
363 // </editor-fold>
364
365 /**
366 * Update all values.
367 */
368 void update();
369 }