From: Gerd Flaig Date: Wed, 9 Feb 2011 22:39:48 +0000 (+0100) Subject: Integrate new xdump X-Git-Url: http://git.pond.sub.org/?p=eow;a=commitdiff_plain;h=c61f30ca70589a5ea3e532a313722ecb3f109b53 Integrate new xdump --- diff --git a/empire.lisp b/empire.lisp index edb8316..8a1689b 100644 --- a/empire.lisp +++ b/empire.lisp @@ -48,7 +48,8 @@ (send-queue :accessor send-queue :initform (locked-queue:create) - :documentation "lines outstanding to be sent at next prompt"))) + :documentation "lines outstanding to be sent at next prompt") + (xdump :accessor xdump :initform (xdump:make-parser)))) (defun make-connection (&key (user nil) (password nil) @@ -303,38 +304,32 @@ (char= +special-command-char+ (aref line 0)))) (defclass xdump-mode (play-mode) - ((parser :initform (xdump:make-parser)) - (phase :initform :meta-meta) + ((phase :initform :meta-meta) (dump-queue :initform nil) (dump-index :initform 0))) (defmethod handle-data ((m xdump-mode) message) - (with-slots (connection parser phase dump-queue dump-index) m - (if (xdump:parse-line parser message) + (with-slots (connection phase dump-queue dump-index) m + (if (xdump:parse-line (xdump connection) message) ;;XXX consider something like a 'pop-mode function (ccase phase (:meta-meta - (setf phase :meta-table - parser (xdump:make-parser)) + (setf phase :meta-table) (send-message connection "xdump meta table")) (:meta-table - (setf phase :table-table - parser (xdump:make-parser)) + (setf phase :table-table) (send-message connection "xdump table *")) (:table-table (setf phase :tables-meta dump-queue (xdump::table-entries (xdump::get-table "table")) - dump-index 0 - parser (xdump:make-parser)) + dump-index 0) (send-message connection (format nil "xdump meta ~a" (xdump-data::table-name (aref dump-queue 0))))) (:tables-meta - (setf phase :tables-content - parser (xdump:make-parser)) + (setf phase :tables-content) (send-message connection (format nil "xdump ~a *" (xdump-data::table-name (aref dump-queue dump-index))))) (:tables-content (if (< dump-index (fill-pointer dump-queue)) - (progn (setf phase :tables-meta - parser (xdump:make-parser)) + (progn (setf phase :tables-meta) (incf dump-index) (loop while (and (< dump-index (fill-pointer dump-queue)) (let ((dump-queue-entry (aref dump-queue dump-index)))