# HG changeset patch # User gongo # Date 1198372820 -32400 # Node ID f07bc68d9750244a1c45c6a3868ac8bbb097abf0 # Parent 8991e2263f83cedc13b912e45486474c1966bd51 *** empty log message *** diff -r 8991e2263f83 -r f07bc68d9750 ChangeLog --- a/ChangeLog Sat Dec 22 21:06:07 2007 +0900 +++ b/ChangeLog Sun Dec 23 10:20:20 2007 +0900 @@ -1,3 +1,54 @@ +2007-12-23 Wataru MIYAGUNI + + * thinking: hash のキーについて + 今まで、(buffer-name) をキーにしてコマンドリストをほげほげと + 思ってたけど、受け取る command には Session ID があるので + それをキーにした方がいいのではと思い始める。 + そして、バッファ毎に Session ID は覚えとかないといけないので、 + (buffer-name) から Session ID を取得するハッシュテーブルも + 必要ではないかと思う。 + そして、Session ID 毎に editor ID や seq-no も保持すべき? + + ================ + put-ack, select-ack で Session ID, file name が来るので + + bufname-to-sid-table => key = bufname, value = sid; + sid-to-session-table => key = sid, value = session; + + // C 風に + struct session { + int eid; + int seq-no; + CmdListPtr recv_cmdlist; + CmdListPtr send_cmdlist; + } + ================ + + こんな二つの hash table を作る方がいいのかな。 + bufname はグローバルだし、sid も確か + ローカルなSession Managerでは一意に決まるはずだし。 + + 送信受信(insert,delete,replace)の流れ的には + + - cmd 送信 + 現在の (buffer-name) をキーとして、 + bufname-to-sid-table から Session ID (以下sid) を取得。 + sid をキーとして、sid-to-session-table から + Editor ID , Seq-no を取得し command を作成。 + その command は、sid-to-session-table から取った + send_cmdlist に放り込む + + - cmd 受信 + cmd 内の sid で、sid-to-session-table から取得した + recv_cmdlist に cmd を放り込む。こんなところか。 + put-ack, select-ack の場合、text にファイル名があるはずなので + bufname-to-sid-table に file と sid を登録する。 + + + こんなところでしょう。今から実装してみる + + + 2007-12-22 Wataru MIYAGUNI * gethash():