Mercurial > hg > RemoteEditor > emacs
view test/packet/redit-test-packet-recv.el @ 42:95301aa3ea2f
*** empty log message ***
author | gongo |
---|---|
date | Fri, 22 Aug 2008 20:27:01 +0900 |
parents | 0f547ed856f6 |
children | c4566caf403f |
line wrap: on
line source
;; send.pl のパス。 (defconst redit-test-client-program "/home/gongo/REP_project/emacs/test/packet/redit-test-packet-send.pl") ;; プロセス変数 (defvar redit-test-client-process nil) (defun redit-test-unpack-int-loop (pkt pos count) (if (> count 1) (+ (* (redit-test-unpack-int-loop pkt (- pos 1) (- count 1)) 256) (string-to-char (substring pkt (- pos 1) pos))) 0 )) (defun redit-test-unpack-int (pkt pos) (redit-test-unpack-int-loop pkt (* pos 4) 4)) (defun rep-test-get-command-from-pkt (pkt) (redit-test-unpack-int pkt 1)) (defun rep-test-get-session-id-from-pkt (pkt) (redit-test-unpack-int pkt 2)) (defun rep-test-get-editor-id-from-pkt (pkt) (redit-test-unpack-int pkt 3)) (defun rep-test-get-sequence-id-from-pkt (pkt) (redit-test-unpack-int pkt 4)) (defun rep-test-get-line-number-from-pkt (pkt) (redit-test-unpack-int pkt 5)) (defun rep-test-get-text-size-from-pkt (pkt) (redit-test-unpack-int pkt 6)) ;; process (send.pl) を起動する。 ;; send.pl がパケットを送るトリガー(?)として ;; 文字列を送信する(標準入力)。 (defun redit-test-start () (interactive) (setq redit-test-client-process (start-process "reditclient" nil redit-test-client-program)) (set-process-filter redit-test-client-process 'redit-test-client-process-filter) (set-process-coding-system redit-test-client-process 'binary 'binary) (process-send-string redit-test-client-process "a")) ;; process を終了する。 (defun redit-test-stop () (interactive) (if (not (eq (process-status redit-test-client-process) 'exit)) (kill-process redit-test-client-process))) ;; process の restart。 (defun redit-test-restart () (interactive) (redit-test-stop) (redit-test-start)) ;; process からのパケットを受け取る。 ;; パケットは REPcommand。 ;; バイトデータと、unpack して取得した値を出力する (defun redit-test-client-process-filter (proc string) (let ((cmd (rep-test-get-command-from-pkt string)) (sid (rep-test-get-session-id-from-pkt string)) (eid (rep-test-get-editor-id-from-pkt string)) (seq (rep-test-get-sequence-id-from-pkt string)) (lno (rep-test-get-line-number-from-pkt string)) (siz (rep-test-get-text-size-from-pkt string))) (message (concat string "\n")) (message (concat (number-to-string cmd) " " (number-to-string sid) " " (number-to-string eid) " " (number-to-string seq) " " (number-to-string lno) " " (number-to-string siz) "\n")) ))