@@ -8,14 +8,15 @@ ;; |-monitor.db ;; |-sdb.db ;; |-fdb.db ;; |-1.db ;; |-.db +;; (define (make-dbr:dbstruct #!key (path #f)(local #f)) (vector #f ;; the main db (contains runs, test_meta etc.) NOT CACHED IN MEM - (make-hash-table) ;; run-id => [ rundb inmemdb last-mod last-read last-sync ] + (make-hash-table) ;; run-id => [ rundb inmemdb last-mod last-read last-sync refdb ] #f ;; the global string db (use for state, status etc.) path ;; path to database files/megatest area local)) ;; read-only local access ;; @@ -39,12 +40,12 @@ ;; get a rundb vector, create it if not already existing (define (dbr:dbstruct-get-rundb-rec vec run-id) (let* ((dbhash (dbr:dbstruct-get-dbhash vec)) ;; get the runs hash (runvec (hash-table-ref/default dbhash run-id #f))) ;; get the vector for run-id (if (vector? runvec) - runvec ;; rundb inmemdb last-mod last-read last-sync in-use - (let ((nvec (vector #f #f -1 -1 -1 #f))) + runvec ;; rundb inmemdb last-mod last-read last-sync in-use refdb + (let ((nvec (vector #f #f -1 -1 -1 #f #f))) (hash-table-set! dbhash run-id nvec) nvec)))) ;; [ rundb inmemdb last-mod last-read last-sync ] (define-inline (dbr:dbstruct-field-name->num field-name) @@ -53,10 +54,11 @@ ((inmem) 1) ;; the in-memory db ((mtime) 2) ;; last modification time ((rtime) 3) ;; last read time ((stime) 4) ;; last sync time ((inuse) 5) ;; is the db currently in use, #t yes, #f no. + ((refdb) 6) ;; the db used for reference (can be on disk or inmem) (else -1))) ;; get/set rundb fields (define (dbr:dbstruct-get-runvec-val vec run-id field-name) (let ((runvec (dbr:dbstruct-get-rundb-rec vec run-id))