# HG changeset patch # User gongo # Date 1219404421 -32400 # Node ID 95301aa3ea2f4e8a6a1eeab565bacc6e2ca7769e # Parent 0f547ed856f6513cd30dd4932075e816b4f5a890 *** empty log message *** diff -r 0f547ed856f6 -r 95301aa3ea2f test/packet/README --- a/test/packet/README Fri Aug 22 20:27:01 2008 +0900 +++ b/test/packet/README Fri Aug 22 20:27:01 2008 +0900 @@ -39,7 +39,7 @@ cmd 自体はサイズがわかっているので、分割はきっと大丈夫と信じる。 /** - * $ID:$ + * $Id$ * 現在、まだ動いてません */ diff -r 0f547ed856f6 -r 95301aa3ea2f test/packet/redit-test-packet-recv.el --- a/test/packet/redit-test-packet-recv.el Fri Aug 22 20:27:01 2008 +0900 +++ b/test/packet/redit-test-packet-recv.el Fri Aug 22 20:27:01 2008 +0900 @@ -1,5 +1,5 @@ ;; send.pl のパス。 -(defconst redit-test-client-program "/Users/gongo/Source/Concurrency/REP_project/emacs/test/packet/redit-test-packet-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) diff -r 0f547ed856f6 -r 95301aa3ea2f test/packet/redit-test-packet-send.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/packet/redit-test-packet-send.pl Fri Aug 22 20:27:01 2008 +0900 @@ -0,0 +1,28 @@ +#!/usr/bin/perl -w + +use IO::Select; +use Time::HiRes; # sleep で 1秒未満も扱えるように + +my $selector = new IO::Select(\*STDIN) or die "Cannot select stdin : $!\n"; + +# パケット送信する回数 +my $send_count = 10; + +# パケット送信の間隔(秒) +my $send_interval = 0.05; + +sub make_packet { + my ($cmd, $sid, $eid, $seqno, $lineno, $text) = @_; + return pack("NNNNNN", $cmd, $sid, $eid, $seqno, $lineno, length($text)).$text; +} + +# パケット送信のトリガー(?)的な意味なので +# 特に STDIN から拾う必要は無い(多分) +$selector->can_read(0); + +for ($i = 0; $i < $send_count; $i++) { + # REPcommand を生成 + my $packet = &make_packet(41, 1, 1, 0, $i, ""); + syswrite(STDOUT, $packet, length($packet)); + Time::HiRes::sleep($send_interval); +} diff -r 0f547ed856f6 -r 95301aa3ea2f test/session-info/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/session-info/README Fri Aug 22 20:27:01 2008 +0900 @@ -0,0 +1,2 @@ +ここはまだできてないので +動いてないと思います \ No newline at end of file diff -r 0f547ed856f6 -r 95301aa3ea2f test/session-info/redit-test-change-session.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/session-info/redit-test-change-session.el Fri Aug 22 20:27:01 2008 +0900 @@ -0,0 +1,84 @@ +;; 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))