changeset 42:95301aa3ea2f

*** empty log message ***
author gongo
date Fri, 22 Aug 2008 20:27:01 +0900
parents 0f547ed856f6
children c4566caf403f
files test/packet/README test/packet/redit-test-packet-recv.el test/packet/redit-test-packet-send.pl test/session-info/README test/session-info/redit-test-change-session.el
diffstat 5 files changed, 116 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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$
  * 現在、まだ動いてません
  */
 
--- 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)
--- /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);
+}
--- /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
--- /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))