|                                                                                                              1
 24
 25  package com.mckoi.database;
 26
 27  import com.mckoi.debug.*;
 28
 29
 37
 38  public final class Lock {
 39
 40
 44    public static final int READ  = 0;
 45    public static final int WRITE = 1;
 46
 47
 50    private int type;
 51
 52
 55    private LockingQueue queue;
 56
 57
 61    private boolean was_checked;
 62
 63
 66    private final DebugLogger debug;
 67
 68
 72    Lock(int type, LockingQueue queue, DebugLogger logger) {
 73      this.debug = logger;
 74      this.type = type;
 75      this.queue = queue;
 76      was_checked = false;
 77      queue.addLock(this);
 78    }
 79
 80
 83    int getType() {
 84      return type;
 85    }
 86
 87
 90    String
  getTypeAsString() { 91      int type = getType();
 92      if (type == READ) {
 93        return "READ";
 94      }
 95      else {
 96        return "WRITE";
 97      }
 98    }
 99
 100
 103   DataTable getTable() {
 104     return queue.getTable();
 105   }
 106
 107
 113   void release() {
 114     queue.removeLock(this);
 115
 116     if (!was_checked) {
 117                   String
  table_name = queue.getTable().getTableName().toString(); 120       debug.write(Lvl.ERROR, this,
 121          "Lock on table '" + getTable().getTableName() +
 122          "' was released but never checked.  " + toString());
 123       debug.writeException(new RuntimeException
  ("Lock Error Dump")); 124     }
 125   }
 130
 131
 144   void checkAccess(int access_type) {
 145     if (access_type == WRITE && this.type != WRITE) {
 146       throw new Error
  ( 147                  "Access error on Lock: Tried to write to a non write lock.");
 148     }
 149     if (was_checked == false) {
 150       queue.checkAccess(this);
 151       was_checked = true;
 152     }
 155   }
 156
 157   public String
  toString() { 158     return "[Lock] type: " + getTypeAsString() +
 159            "  was_checked: " + was_checked;
 160   }
 161
 162 }
 163
                                                                                                                                                                                                             |                                                                       
 
 
 
 
 
                                                                                   Popular Tags                                                                                                                                                                                              |