Bloco.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package cache;
  7. import java.util.Arrays;
  8. /**
  9. *
  10. * @author Juninho Carlos
  11. */
  12. public class Bloco {
  13. private boolean isDirty;
  14. private Boolean[] palavraComErro;
  15. private boolean valido;
  16. private boolean firstWrite;
  17. private long limiteInf; //valor do menor endereço do bloco
  18. private long limiteSuperior; // valor do maior endereço do bloco
  19. private boolean cachavel;
  20. public Bloco(){
  21. this.cachavel = true;
  22. this.firstWrite = true;
  23. this.valido = false;
  24. this.isDirty = false;
  25. this.palavraComErro = new Boolean[32];
  26. Arrays.fill(palavraComErro, Boolean.FALSE);
  27. }
  28. public void setarComoInvalido(){
  29. this.cachavel = false;
  30. if(this.firstWrite == true){
  31. this.firstWrite = false;
  32. }
  33. }
  34. public boolean isCachavel(){
  35. return this.cachavel;
  36. }
  37. public void inserirErro(int palavra){
  38. this.palavraComErro[palavra] = true;
  39. }
  40. public boolean isFirstWrite(){
  41. return this.firstWrite;
  42. }
  43. public Boolean[] getErroDasPalavraDoBloco(){
  44. return this.palavraComErro;
  45. }
  46. public boolean isSujo(){
  47. return this.isDirty;
  48. }
  49. public boolean hasErrorInBloco() {
  50. Boolean[] palavras = this.palavraComErro;
  51. for (Boolean erro : palavras) {
  52. if (erro == true) {
  53. return true;
  54. }
  55. }
  56. return false;
  57. }
  58. public void setLimitesDoBloco(long limInf,long limSup){
  59. this.limiteInf = limInf;
  60. this.limiteSuperior = limSup;
  61. }
  62. public boolean getErroFromPalavra(int palavra){
  63. return this.palavraComErro[palavra];
  64. }
  65. public boolean verificaBloco(long address){
  66. return address >= limiteInf && address < limiteSuperior+4;
  67. }
  68. public void setValidadeDoBloco(boolean validade){
  69. this.valido = validade;
  70. if(this.firstWrite == true){
  71. this.firstWrite = false;
  72. }
  73. }
  74. public void setSujeira(boolean dirty){
  75. this.isDirty = dirty;
  76. }
  77. public boolean isValido(){
  78. return this.valido;
  79. }
  80. @Override
  81. public String toString() {
  82. String s;
  83. s = "Sujo: " + this.isDirty +"\n";
  84. s += "Valido: " + this.valido + "\n";
  85. s += "Erro: " + this.hasErrorInBloco() + "\n";
  86. s += "Cachavel: " + this.cachavel + "\n";
  87. s += "range: " + "[ " + this.limiteInf + " - " + this.limiteSuperior + " ]\n";
  88. /* s += "Palavras com erro: ";
  89. int i = 0;
  90. for (Boolean boolean1 : palavraComErro) {
  91. s += i + " " + boolean1 + "\n";
  92. i++;
  93. } */
  94. return s;
  95. }
  96. }