annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
41
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
1 ;; send.pl のパス。
42
95301aa3ea2f *** empty log message ***
gongo
parents: 41
diff changeset
2 (defconst redit-test-client-program "/home/gongo/REP_project/emacs/test/packet/redit-test-packet-send.pl")
41
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
3
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
4 ;; プロセス変数
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
5 (defvar redit-test-client-process nil)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
6
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
7
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
8 (defun redit-test-unpack-int-loop (pkt pos count)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
9 (if (> count 1)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
10 (+
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
11 (* (redit-test-unpack-int-loop pkt (- pos 1) (- count 1)) 256)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
12 (string-to-char (substring pkt (- pos 1) pos)))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
13 0
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
14 ))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
15
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
16 (defun redit-test-unpack-int (pkt pos)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
17 (redit-test-unpack-int-loop pkt (* pos 4) 4))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
18
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
19 (defun rep-test-get-command-from-pkt (pkt)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
20 (redit-test-unpack-int pkt 1))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
21 (defun rep-test-get-session-id-from-pkt (pkt)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
22 (redit-test-unpack-int pkt 2))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
23 (defun rep-test-get-editor-id-from-pkt (pkt)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
24 (redit-test-unpack-int pkt 3))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
25 (defun rep-test-get-sequence-id-from-pkt (pkt)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
26 (redit-test-unpack-int pkt 4))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
27 (defun rep-test-get-line-number-from-pkt (pkt)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
28 (redit-test-unpack-int pkt 5))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
29 (defun rep-test-get-text-size-from-pkt (pkt)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
30 (redit-test-unpack-int pkt 6))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
31
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
32
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
33 ;; process (send.pl) を起動する。
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
34 ;; send.pl がパケットを送るトリガー(?)として
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
35 ;; 文字列を送信する(標準入力)。
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
36 (defun redit-test-start ()
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
37 (interactive)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
38 (setq redit-test-client-process
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
39 (start-process "reditclient" nil redit-test-client-program))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
40 (set-process-filter redit-test-client-process
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
41 'redit-test-client-process-filter)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
42 (set-process-coding-system redit-test-client-process
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
43 'binary 'binary)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
44
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
45 (process-send-string redit-test-client-process "a"))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
46
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
47 ;; process を終了する。
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
48 (defun redit-test-stop ()
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
49 (interactive)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
50 (if (not (eq (process-status redit-test-client-process) 'exit))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
51 (kill-process redit-test-client-process)))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
52
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
53 ;; process の restart。
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
54 (defun redit-test-restart ()
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
55 (interactive)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
56 (redit-test-stop)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
57 (redit-test-start))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
58
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
59 ;; process からのパケットを受け取る。
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
60 ;; パケットは REPcommand。
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
61 ;; バイトデータと、unpack して取得した値を出力する
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
62 (defun redit-test-client-process-filter (proc string)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
63 (let ((cmd (rep-test-get-command-from-pkt string))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
64 (sid (rep-test-get-session-id-from-pkt string))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
65 (eid (rep-test-get-editor-id-from-pkt string))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
66 (seq (rep-test-get-sequence-id-from-pkt string))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
67 (lno (rep-test-get-line-number-from-pkt string))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
68 (siz (rep-test-get-text-size-from-pkt string)))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
69
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
70 (message (concat string "\n"))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
71 (message (concat (number-to-string cmd) " "
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
72 (number-to-string sid) " "
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
73 (number-to-string eid) " "
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
74 (number-to-string seq) " "
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
75 (number-to-string lno) " "
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
76 (number-to-string siz)
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
77 "\n"))
0f547ed856f6 *** empty log message ***
gongo
parents:
diff changeset
78 ))