Mercurial > hg > RemoteEditor > emacs
view test/session-info/redit-test-change-session.el @ 42:95301aa3ea2f
*** empty log message ***
author | gongo |
---|---|
date | Fri, 22 Aug 2008 20:27:01 +0900 |
parents | |
children | 0b7ba6b2a0f9 |
line wrap: on
line source
;; defstruct, make-hash-table (require 'cl) ;;;;;;;;;;;;;;;;;; ;; Queue struct ;; ;;;;;;;;;;;;;;;;;; (defstruct Queue (front nil) (rear nil)) ;; memo ;; car: return first element of list ;; cdr: return elements list since the second of list ;; (ex.) ;; (car '(rose violet daisy buttercup)) => rose ;; (cdr '(rose violet daisy buttercup)) => (violet daisy buttercup) ;; enqueue item in queue (defun enqueue (queue item) (let ((new-cell (list item))) (if (Queue-front queue) ;; update last cell (setf (cdr (Queue-rear queue)) new-cell) ;; if queue is empty (setf (Queue-front queue) new-cell)) (setf (Queue-rear queue) new-cell))) ;; dequeue (defun dequeue (queue) (if (Queue-front queue) (prog1 (pop (Queue-front queue)) (unless (Queue-front queue) ;; if queue is empty (setf (Queue-rear queue) nil))))) (defun dequeue-all (queue) "clean queue" (while (Queue-front queue) (dequeue queue))) ;;;;;;;;;;;;;;;;;;;;;;;;; ;; Session Info struct ;; ;;;;;;;;;;;;;;;;;;;;;;;;; ;; sid: Session ID ;; eid: Editor ID ;; send_cmdlist: rep_command list from user to SessionManager ;; recv_cmdlist: rep_command list from SessionManager to user (defstruct SessionInfo (sid nil) (eid nil) (send_cmdlist nil) (recv_cmdlist nil)) ;; create and initialize (defun test-redit-create-session-info (sid eid) (make-SessionInfo :sid sid :eid eid :send_cmdlist (make-Queue) :recv_cmdlist (make-Queue))) (defun test-redit-get-session-id-from-session-info (sinfo) (SessionInfo-sid sinfo)) (defun test-redit-get-editor-id-from-session-info (sinfo) (SessionInfo-eid sinfo)) (defun test-redit-get-sendqueue-from-session-info (sinfo) (SessionInfo-send_cmdlist sinfo)) (defun test-redit-get-recvqueue-from-session-info (sinfo) (SessionInfo-recv_cmdlist sinfo)) ;; hash table of SessionInfo (defvar bufname-to-sid-table (make-hash-table)) (defvar sid-to-session-table (make-hash-table)) (defun test-redit-sinfo-add-buf2sid (bufname sid) (setf (gethash bufname bufname-to-sid-table) sid)) (defun test-redit-sinfo-get-buf2sid (bufname) (gethash bufname bufname-to-sid-table)) (defun test-redit-sinfo-rm-buf2sid (bufname) (remhash bufname bufname-to-sid-table)) (defun test-redit-sinfo-add-sid2sinfo (sid eid sinfo) (setf (gethash sid sid-to-session-table) sinfo)) (defun test-redit-sinfo-get-sid2sinfo (sid) (gethash sid sid-to-session-table)) (defun test-redit-sinfo-rm-sid2sinfo (sid) (remhash sid sid-to-session-table))