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 import java.net.InetAddress; 25 import java.net.URL; 26 import java.util.Date; 27 28 /** 29 * Interface to represent data stored about a Folding@home queue index. 30 * 31 * @author <a href="mailto:mikepthomas@outlook.com">Michael Thomas</a> 32 * @version 6.00 33 */ 34 public interface QueueIndex { 35 // <editor-fold defaultstate="collapsed" desc="position-constants"> 36 /** 37 * Position in bytes of Status from the start of {@code queue.dat}. 38 */ 39 int STAT_POS = 0; 40 /** 41 * Position in bytes of Pad for Windows from the start of {@code queue.dat}. 42 * 43 * @since 4.01 Pad for others 44 * @since 6.01 Number of SMP Cores to use 45 * @deprecated Use {@link #CORES_POS} 46 */ 47 int Z004_POS = 4; 48 /** 49 * Position in bytes of Time data from the start of {@code queue.dat}. 50 */ 51 int TDATA_POS = 8; 52 /** 53 * Position in bytes of Server IP address from the start of 54 * {@code queue.dat}. 55 * 56 * @deprecated As of 3.00 replaced by {@link #SVR2_POS} 57 */ 58 int SVR1_POS = 40; 59 /** 60 * Position in bytes of Upload status from the start of {@code queue.dat}. 61 */ 62 int USTAT_POS = 44; 63 /** 64 * Position in bytes of Web address for core downloads from the start of 65 * {@code queue.dat}. 66 */ 67 int URL_POS = 48; 68 /** 69 * Position in bytes of Misc1a from the start of {@code queue.dat}. 70 */ 71 int M176_POS = 176; 72 /** 73 * Position in bytes of Core_xx number (hex) from the start of 74 * {@code queue.dat}. 75 */ 76 int CORE_POS = 180; 77 /** 78 * Position in bytes of Misc1b from the start of {@code queue.dat}. 79 */ 80 int M184_POS = 184; 81 /** 82 * Position in bytes of wudata_xx.dat file size from the start of 83 * {@code queue.dat}. 84 */ 85 int DSIZ_POS = 188; 86 /** 87 * Position in bytes of padding from the start of {@code queue.dat} 88 * (All Zeros). 89 */ 90 int Z192_POS = 192; 91 /** 92 * Position in bytes of Work unit ID information from the start of 93 * {@code queue.dat}. 94 */ 95 int WUID_POS = 208; 96 /** 97 * Position in bytes of padding from the start of {@code queue.dat} 98 * (All Zeros). 99 */ 100 int Z224_POS = 224; 101 /** 102 * Position in bytes of Machine ID from the start of {@code queue.dat}. 103 */ 104 int MID_POS = 260; 105 /** 106 * Position in bytes of Server IP address from the start of 107 * {@code queue.dat}. 108 */ 109 int SVR2_POS = 264; 110 /** 111 * Position in bytes of Server port number from the start of 112 * {@code queue.dat}. 113 */ 114 int PORT_POS = 268; 115 /** 116 * Position in bytes of Work unit type from the start of {@code queue.dat}. 117 */ 118 int TYPE_POS = 272; 119 /** 120 * Position in bytes of User Name from the start of {@code queue.dat}. 121 */ 122 int UNAME_POS = 336; 123 /** 124 * Position in bytes of Team Number from the start of {@code queue.dat}. 125 */ 126 int TEAMN_POS = 400; 127 /** 128 * Position in bytes of Stored ID for unit (UserID + MachineID) from the 129 * start of {@code queue.dat}. 130 */ 131 int UID_POS = 464; 132 /** 133 * Position in bytes of Benchmark from the start of {@code queue.dat}. 134 * 135 * @since 3.24 136 */ 137 int BENCH_POS = 472; 138 /** 139 * Position in bytes of Misc3b from the start of {@code queue.dat}. 140 * 141 * @deprecated 3.24 142 */ 143 int M476_POS = 476; 144 /** 145 * Position in bytes of CPU type from the start of {@code queue.dat}. 146 */ 147 int CPU_TYPE_POS = 480; 148 /** 149 * Position in bytes of OS type from the start of {@code queue.dat}. 150 */ 151 int OS_TYPE_POS = 484; 152 /** 153 * Position in bytes of CPU species from the start of {@code queue.dat}. 154 */ 155 int CPU_SPEC_POS = 488; 156 /** 157 * Position in bytes of OS species from the start of {@code queue.dat}. 158 */ 159 int OS_SPEC_POS = 492; 160 /** 161 * Position in bytes of Allowed time to return (seconds) from the start of 162 * {@code queue.dat}. 163 */ 164 int EXPIRE_POS = 496; 165 /** 166 * Position in bytes of padding from the start of {@code queue.dat} 167 * (All Zeros). 168 */ 169 int Z500_POS = 500; 170 /** 171 * Position in bytes of Client type required from the start of 172 * {@code queue.dat}. 173 */ 174 int CLTYPE_POS = 504; 175 /** 176 * Position in bytes of Assignment info present flag from the start of 177 * {@code queue.dat}. 178 */ 179 int AIFLAG_POS = 508; 180 /** 181 * Position in bytes of Assignment timestamp from the start of 182 * {@code queue.dat}. 183 */ 184 int AITIME_POS = 512; 185 /** 186 * Position in bytes of Assignment info from the start of {@code queue.dat}. 187 */ 188 int AIDATA_POS = 516; 189 /** 190 * Position in bytes of Collection server IP address from the start of 191 * {@code queue.dat}. 192 * 193 * @since 5.00 194 */ 195 int CSIP_POS = 520; 196 /** 197 * Position in bytes of Download started time from the start of 198 * {@code queue.dat}. 199 * 200 * @since 5.00 201 */ 202 int DSTART_POS = 524; 203 /** 204 * Position in bytes of padding from the start of {@code queue.dat} 205 * (All Zeros). 206 */ 207 int Z528_POS = 528; 208 /** 209 * Position in bytes of Misc4a from the start of {@code queue.dat}. 210 */ 211 int M532_POS = 532; 212 /** 213 * Position in bytes of padding from the start of {@code queue.dat} 214 * (All Zeros). 215 */ 216 int Z536_POS = 536; 217 /** 218 * Position in bytes of Number of SMP cores from the start of 219 * {@code queue.dat}. 220 * 221 * @since 5.91 222 */ 223 int CORES_POS = 544; 224 /** 225 * Position in bytes of Tag of Work Unit from the start of 226 * {@code queue.dat}. 227 * 228 * @since 5.00 229 */ 230 int TAG_POS = 548; 231 /** 232 * Position in bytes of padding from the start of {@code queue.dat} 233 * (All Zeros). 234 */ 235 int Z564_POS = 564; 236 /** 237 * Position in bytes of Passkey from the start of {@code queue.dat}. 238 * 239 * @since 6.00 240 */ 241 int PASSKEY_POS = 580; 242 /** 243 * Position in bytes of Flops per CPU (core) from the start of 244 * {@code queue.dat}. 245 * 246 * @since 6.00 247 */ 248 int FLOPS_POS = 612; 249 /** 250 * Position in bytes of Available memory from the start of 251 * {@code queue.dat}. 252 * 253 * @since 6.00 254 */ 255 int MEMORY_POS = 616; 256 /** 257 * Position in bytes of Available GPU memory from the start of 258 * {@code queue.dat}. 259 * 260 * @since 6.20 261 */ 262 int GPU_MEMORY_POS = 620; 263 /** 264 * Position in bytes of padding from the start of {@code queue.dat} 265 * (All Zeros). 266 */ 267 int Z624_POS = 624; 268 /** 269 * Position in bytes of WU expiration time from the start of 270 * {@code queue.dat}. 271 */ 272 int DUE_POS = 688; 273 /** 274 * Position in bytes of Packet size limit from the start of 275 * {@code queue.dat}. 276 * 277 * @since 5.00 278 */ 279 int PLIMIT_POS = 704; 280 /** 281 * Position in bytes of Number of upload failures from the start of 282 * {@code queue.dat}. 283 * 284 * @since 5.00 285 */ 286 int UPLOADS_POS = 708; 287 // </editor-fold> 288 // <editor-fold defaultstate="collapsed" desc="length-constants"> 289 /** 290 * Length in bytes of the Status in {@code queue.dat}. 291 * 292 * @see #getStat() 293 * @see #STAT_POS 294 */ 295 int STAT_LENGTH = 4; 296 /** 297 * Length in bytes of the Pad for Windows in {@code queue.dat}. 298 * 299 * @since 4.01 Pad for others 300 * @since 6.01 Number of SMP Cores to use 301 * @deprecated Use {@link #CORES_POS} 302 */ 303 int Z004_LENGTH = 4; 304 /** 305 * Length in bytes of the Time data in {@code queue.dat}. 306 * 307 * @see #getTdata() 308 * @see #TDATA_POS 309 */ 310 int TDATA_LENGTH = 32; 311 /** 312 * Length in bytes of the Server IP address in {@code queue.dat}. 313 * 314 * @deprecated As of 3.00 replaced by {@link #SVR2_POS} 315 */ 316 int SVR1_LENGTH = 4; 317 /** 318 * Length in bytes of the Upload Status in {@code queue.dat}. 319 * 320 * @see #getUstat() 321 * @see #USTAT_POS 322 */ 323 int USTAT_LENGTH = 4; 324 /** 325 * Length in bytes of the Web address for core downloads in 326 * {@code queue.dat}. 327 * 328 * @see #getUrl() 329 * @see #URL_POS 330 */ 331 int URL_LENGTH = 128; 332 /** 333 * Length in bytes of the Misc1a in {@code queue.dat}. 334 * 335 * @see #M176_POS 336 */ 337 int M176_LENGTH = 4; 338 /** 339 * Length in bytes of the Core_xx number (hex) in {@code queue.dat}. 340 * 341 * @see #getCore() 342 * @see #CORE_POS 343 */ 344 int CORE_LENGTH = 4; 345 /** 346 * Length in bytes of the Misc1b in {@code queue.dat}. 347 * 348 * @see #M184_POS 349 */ 350 int M184_LENGTH = 4; 351 /** 352 * Length in bytes of the wudata_xx.dat file size in {@code queue.dat}. 353 * 354 * @see #getDsiz() 355 * @see #DSIZ_POS 356 */ 357 int DSIZ_LENGTH = 4; 358 /** 359 * Length in bytes of the z192 in {@code queue.dat}. 360 * 361 * @see #Z192_POS 362 */ 363 int Z192_LENGTH = 16; 364 /** 365 * Length in bytes of the Work unit ID information in {@code queue.dat}. 366 * 367 * @see #getWuid() 368 * @see #WUID_POS 369 */ 370 int WUID_LENGTH = 16; 371 /** 372 * Length in bytes of the z224 in {@code queue.dat}. 373 * 374 * @see #Z224_POS 375 */ 376 int Z224_LENGTH = 36; 377 /** 378 * Length in bytes of the Machine ID in {@code queue.dat}. 379 * 380 * @see #getMid() 381 * @see #MID_POS 382 */ 383 int MID_LENGTH = 4; 384 /** 385 * Length in bytes of the Server IP address in {@code queue.dat}. 386 * 387 * @see #getSvr2() 388 * @see #SVR2_POS 389 */ 390 int SVR2_LENGTH = 4; 391 /** 392 * Length in bytes of the Server port number in {@code queue.dat}. 393 * 394 * @see #getPort() 395 * @see #PORT_POS 396 */ 397 int PORT_LENGTH = 4; 398 /** 399 * Length in bytes of the Work unit type in {@code queue.dat}. 400 * 401 * @see #getType() 402 * @see #TYPE_POS 403 */ 404 int TYPE_LENGTH = 64; 405 /** 406 * Length in bytes of the User Name in {@code queue.dat}. 407 * 408 * @see #getUname() 409 * @see #UNAME_POS 410 */ 411 int UNAME_LENGTH = 64; 412 /** 413 * Length in bytes of the Team Number in {@code queue.dat}. 414 * 415 * @see #getTeamn() 416 * @see #TEAMN_POS 417 */ 418 int TEAMN_LENGTH = 64; 419 /** 420 * Length in bytes of the Stored ID for unit (UserID + MachineID) 421 * in {@code queue.dat}. 422 * 423 * @see #getUid() 424 * @see #UID_POS 425 */ 426 int UID_LENGTH = 8; 427 /** 428 * Length in bytes of the Benchmark in {@code queue.dat}. 429 * 430 * @since 3.24 431 * @see #getBench() 432 * @see #BENCH_POS 433 */ 434 int BENCH_LENGTH = 4; 435 /** 436 * Length in bytes of Misc3b in {@code queue.dat}. 437 * 438 * @deprecated 3.24 439 */ 440 int M476_LENGTH = 4; 441 /** 442 * Length in bytes of the CPU type in {@code queue.dat}. 443 * 444 * @see #getCpuType() 445 * @see #CPU_TYPE_POS 446 */ 447 int CPU_TYPE_LENGTH = 4; 448 /** 449 * Length in bytes of the OS type in {@code queue.dat}. 450 * 451 * @see #getOsType() 452 * @see #OS_TYPE_POS 453 */ 454 int OS_TYPE_LENGTH = 4; 455 /** 456 * Length in bytes of the CPU species in {@code queue.dat}. 457 * 458 * @see #getCpuSpec() 459 * @see #CPU_SPEC_POS 460 */ 461 int CPU_SPEC_LENGTH = 4; 462 /** 463 * Length in bytes of the OS species in {@code queue.dat}. 464 * 465 * @see #getOsSpec() 466 * @see #OS_SPEC_POS 467 */ 468 int OS_SPEC_LENGTH = 4; 469 /** 470 * Length in bytes of the Allowed time to return (seconds) 471 * in {@code queue.dat}. 472 * 473 * @see #getExpire() 474 * @see #EXPIRE_POS 475 */ 476 int EXPIRE_LENGTH = 4; 477 /** 478 * Length in bytes of the z500 in {@code queue.dat}. 479 * 480 * @see #Z500_POS 481 */ 482 int Z500_LENGTH = 4; 483 /** 484 * Length in bytes of the Client type required in {@code queue.dat}. 485 * 486 * @see #getCltype() 487 * @see #CLTYPE_POS 488 */ 489 int CLTYPE_LENGTH = 4; 490 /** 491 * Length in bytes of the Assignment info present flag in {@code queue.dat}. 492 * 493 * @see #getAiflag() 494 * @see #AIFLAG_POS 495 */ 496 int AIFLAG_LENGTH = 4; 497 /** 498 * Length in bytes of the Assignment timestamp in {@code queue.dat}. 499 * 500 * @see #getAitime() 501 * @see #AITIME_POS 502 */ 503 int AITIME_LENGTH = 4; 504 /** 505 * Length in bytes of the Assignment info in {@code queue.dat}. 506 * 507 * @see #getAidata() 508 * @see #AIDATA_POS 509 */ 510 int AIDATA_LENGTH = 4; 511 /** 512 * Length in bytes of the Collection server IP address in {@code queue.dat}. 513 * 514 * @since 5.00 515 * @see #getCsip() 516 * @see #CSIP_POS 517 */ 518 int CSIP_LENGTH = 4; 519 /** 520 * Length in bytes of the Download started time in {@code queue.dat}. 521 * 522 * @since 5.00 523 * @see #getDstart() 524 * @see #DSTART_POS 525 */ 526 int DSTART_LENGTH = 4; 527 /** 528 * Length in bytes of the z528 in {@code queue.dat}. 529 * 530 * @see #Z528_POS 531 */ 532 int Z528_LENGTH = 4; 533 /** 534 * Length in bytes of the Misc4a in {@code queue.dat}. 535 * 536 * @see #M532_POS 537 */ 538 int M532_LENGTH = 4; 539 /** 540 * Length in bytes of the z536 in {@code queue.dat}. 541 * 542 * @see #Z536_POS 543 */ 544 int Z536_LENGTH = 8; 545 /** 546 * Length in bytes of the Number of SMP cores in {@code queue.dat}. 547 * 548 * @since 5.91 549 * @see #getCores() 550 * @see #CORES_POS 551 */ 552 int CORES_LENGTH = 4; 553 /** 554 * Length in bytes of the Tag of Work Unit in {@code queue.dat}. 555 * 556 * @since 5.00 557 * @see #getCores() 558 * @see #CORES_POS 559 */ 560 int TAG_LENGTH = 16; 561 /** 562 * Length in bytes of the z564 in {@code queue.dat}. 563 * 564 * @see #Z564_POS 565 */ 566 int Z564_LENGTH = 16; 567 /** 568 * Length in bytes of the Passkey in {@code queue.dat}. 569 * 570 * @since 6.00 571 * @see #getPasskey() 572 * @see #PASSKEY_POS 573 */ 574 int PASSKEY_LENGTH = 32; 575 /** 576 * Length in bytes of the Flops per CPU (core) in {@code queue.dat}. 577 * 578 * @since 6.00 579 * @see #getFlops() 580 * @see #FLOPS_POS 581 */ 582 int FLOPS_LENGTH = 4; 583 /** 584 * Length in bytes of the Available memory in {@code queue.dat}. 585 * 586 * @since 6.00 587 * @see #getMemory() 588 * @see #MEMORY_POS 589 */ 590 int MEMORY_LENGTH = 4; 591 /** 592 * Length in bytes of the Available GPU memory in {@code queue.dat}. 593 * 594 * @since 6.20 595 * @see #getGpuMemory() 596 * @see #GPU_MEMORY_POS 597 */ 598 int GPU_MEMORY_LENGTH = 4; 599 /** 600 * Length in bytes of the z624 in {@code queue.dat}. 601 * 602 * @see #Z624_POS 603 */ 604 int Z624_LENGTH = 64; 605 /** 606 * Length in bytes of the WU expiration time in {@code queue.dat}. 607 * 608 * @see #getDue() 609 * @see #DUE_POS 610 */ 611 int DUE_LENGTH = 16; 612 /** 613 * Length in bytes of the Packet size limit in {@code queue.dat}. 614 * 615 * @since 5.00 616 * @see #getPlimit() 617 * @see #PLIMIT_POS 618 */ 619 int PLIMIT_LENGTH = 4; 620 /** 621 * Length in bytes of the Number of upload failures in {@code queue.dat}. 622 * 623 * @since 5.00 624 * @see #getUploads() 625 * @see #UPLOADS_POS 626 */ 627 int UPLOADS_LENGTH = 4; 628 // </editor-fold> 629 // <editor-fold desc="Accessors"> 630 /** 631 * Get the value of Status. 632 * 633 * @return the value of stat 634 */ 635 int getStat(); 636 /** 637 * Get the value of Time data. 638 * 639 * @return the value of tdata 640 */ 641 Date getTdata(); 642 /** 643 * Get the value of Server IP address. 644 * 645 * @return the value of svr1 646 */ 647 InetAddress getSvr1(); 648 /** 649 * Get the value of Upload status. 650 * 651 * @return the value of ustat 652 */ 653 int getUstat(); 654 /** 655 * Get the value of Web address for core download. 656 * 657 * @return the value of url 658 */ 659 URL getUrl(); 660 /** 661 * Get the value of Core_xx number (hex). 662 * 663 * @return the value of core 664 */ 665 Core getCore(); 666 /** 667 * Get the value of wudata_xx.dat file size. 668 * 669 * @return the value of dsiz 670 */ 671 int getDsiz(); 672 /** 673 * Get the value of Work unit ID information. 674 * 675 * @return the value of wuid 676 */ 677 WorkUnitImpl getWuid(); 678 /** 679 * Get the value of Machine ID. 680 * 681 * @return the value of mid 682 */ 683 int getMid(); 684 /** 685 * Get the value of Server IP address. 686 * 687 * @return the value of svr2 688 */ 689 InetAddress getSvr2(); 690 /** 691 * Get the value of Server port number. 692 * 693 * @return the value of port 694 */ 695 int getPort(); 696 /** 697 * Get the value of Work unit type. 698 * 699 * @return the value of type 700 */ 701 String getType(); 702 /** 703 * Get the value of User Name. 704 * 705 * @return the value of uname 706 */ 707 String getUname(); 708 /** 709 * Get the value of Team Number. 710 * 711 * @return the value of teamn 712 */ 713 int getTeamn(); 714 /** 715 * Get the value of Stored ID for unit (UserID + MachineID). 716 * 717 * @return the value of uid 718 */ 719 long getUid(); 720 /** 721 * Get the value of Benchmark. 722 * 723 * @since 3.24 724 * @return the value of bench 725 */ 726 int getBench(); 727 /** 728 * Get the value of CPU type. 729 * 730 * @since 3.00 731 * @return the value of cpu_type 732 */ 733 String getCpuType(); 734 /** 735 * Get the value of OS type. 736 * 737 * @since 3.00 738 * @return the value of os_type 739 */ 740 String getOsType(); 741 /** 742 * Get the value of CPU species. 743 * 744 * @return the value of cpu_spec 745 */ 746 String getCpuSpec(); 747 /** 748 * Get the value of OS species. 749 * 750 * @return the value of os_spec 751 */ 752 String getOsSpec(); 753 /** 754 * Get the value of Allowed time to return (seconds). 755 * 756 * @return the value of expire 757 */ 758 Date getExpire(); 759 /** 760 * Get the value of Client type required (usually 0). 761 * 762 * @return the value of cltype 763 */ 764 int getCltype(); 765 /** 766 * Get the value of Assignment info present flag. 767 * 768 * @return the value of aiflag 769 */ 770 boolean getAiflag(); 771 /** 772 * Get the value of Assignment timestamp. 773 * 774 * @return the value of aitime 775 */ 776 Date getAitime(); 777 /** 778 * Get the value of Assignment info. 779 * 780 * @return the value of aidata 781 */ 782 long getAidata(); 783 /** 784 * Get the value of Collection server IP address. 785 * 786 * @return the value of csip 787 */ 788 InetAddress getCsip(); 789 /** 790 * Get the value of Download started time. 791 * 792 * @since 5.00 793 * @return the value of dstart 794 */ 795 Date getDstart(); 796 /** 797 * Get the value of Number of SMP cores. 798 * 799 * @since 5.91 800 * @return the value of cores 801 */ 802 int getCores(); 803 /** 804 * Get the value of Tag of Work Unit. 805 * 806 * @since 5.00 807 * @return the value of tag 808 */ 809 String getTag(); 810 /** 811 * Get the value of Passkey. 812 * 813 * @since 6.00 814 * @return the value of passkey 815 */ 816 String getPasskey(); 817 /** 818 * Get the value of Flops per CPU (core). 819 * 820 * @since 6.00 821 * @return the value of flops 822 */ 823 int getFlops(); 824 /** 825 * Get the value of Available memory. 826 * 827 * @since 6.00 828 * @return the value of memory 829 */ 830 int getMemory(); 831 /** 832 * Get the value of Available GPU memory. 833 * 834 * @since 6.20 835 * @return the value of gpu_memory 836 */ 837 int getGpuMemory(); 838 /** 839 * Get the value of WU expiration time. 840 * 841 * @return the value of due 842 */ 843 Date getDue(); 844 /** 845 * Get the value of Packet size limit. 846 * 847 * @since 5.00 848 * @return the value of plimit 849 */ 850 int getPlimit(); 851 /** 852 * Get the value of Number of upload failures. 853 * 854 * @since 5.00 855 * @return the value of uploads 856 */ 857 int getUploads(); 858 // </editor-fold> 859 860 /** 861 * Update all values. 862 */ 863 void update(); 864 }