Update of /project/elephant/cvsroot/elephant/src/elephant In directory clnet:/tmp/cvs-serv4428/src/elephant
Modified Files: controller.lisp package.lisp Log Message: Added missing file; Henrik's fixes to ele-bdb and clsql cursor-pset
--- /project/elephant/cvsroot/elephant/src/elephant/controller.lisp 2006/12/16 19:35:10 1.17 +++ /project/elephant/cvsroot/elephant/src/elephant/controller.lisp 2007/01/19 21:03:30 1.18 @@ -198,7 +198,7 @@ (class-root :reader controller-class-root :documentation "This should be a persistent indexed btree instantiated by the backend") ;; Upgradable serializer strategy - (version :accessor controller-version :initform nil) + (version :accessor controller-version-cached :initform nil) (serializer-version :accessor controller-serializer-version :initform nil) (serialize :accessor controller-serialize :initform nil) (deserialize :accessor controller-deserialize :initform nil) @@ -230,11 +230,16 @@ (defvar *restricted-properties* '(:version) "Properties that are not user manipulable")
-(defgeneric controller-version ((sc store-controller)) - (:documentation "Return the elephant version of this controller - should not - require the serializer to operate as it may be used to determine - the serializer version used to read the DB. This has to be valid - prior to the DB being opened.")) +(defmethod controller-version ((sc store-controller)) + (let ((version (controller-version-cached sc))) + (if version version + (let ((path (make-pathname :name "VERSION" :defaults (second (controller-spec sc))))) + (if (probe-file path) + (with-open-file (stream path :direction :input) + (setf (controller-version-cached sc) (read stream))) + (with-open-file (stream path :direction :output) + (setf (controller-version-cached sc) + (write *elephant-code-version* :stream stream))))))))
(defun prior-version-p (v1 v2) "Is v1 an equal or earlier version than v2" --- /project/elephant/cvsroot/elephant/src/elephant/package.lisp 2006/12/16 19:35:10 1.4 +++ /project/elephant/cvsroot/elephant/src/elephant/package.lisp 2007/01/19 21:03:30 1.5 @@ -29,7 +29,8 @@ #:*elephant-lib-path* #:*elephant-code-version*
#:store-controller #:controller-root #:controller-class-root - #:controller-version #:controller-serialize #:controller-deserialize + #:controller-version #:controller-serializer-version + #:controller-serialize #:controller-deserialize #:open-store #:close-store #:with-open-store #:add-to-root #:get-from-root #:remove-from-root #:root-existsp #:get-cached-instance #:flush-instance-cache