Home > WPS Server

WPS Serverに関するメモ

実装

 コネクションの確立に関する部分はNet::Server::PreFork.pmに頼る。

ithreadsの利用は労力に見合わないと判断。誰かが私と同じ無駄をしないために備忘録。

これは割と有名なのね。知らなかった…。Win32から非ブロックソケットを利用するモジュールもあります。後で参考リンクあげときます。

これはthreadsおよびthreads::sharedのドキュメントを読めば書いてあるのですが、一応。

my $cgi : shared = CGI->new; # error!

 非共有のハッシュリファレンスは代入できない。だから

our @obj : shared;
my $cgi = CGI->new;
push @obj, $cgi; # error!

 これもだめ。次に

$cgi = CGI->new; # 共有じゃない
share($cgi);     # その後共有に
push @obj,$cgi;

 これはできる。けれども、blessされていないただのハッシュリファレンスになる。しかもハッシュのキーと値の挙動はとんでもないものに(共有された本体のオブジェクトのメソッド呼び出しに応じて変わってしまう!)。 まあ、他スレッドに伝搬しないというのはドキュメントに書いてあるとおりです。

プロトコル

まだ構想段階…

MESSAGE ::= COMMAND (S VALUE)? (S COMMENT)? CRLF
INFORM  ::= DATA CRLF

COMMAND ::= [a-zA-Z_]{1,15}
S       ::= [\t\s]+
VALUE   ::= [0-9a-zA-Z]+
COMMENT ::= [0-9a-zA-Z]*
ENDMARK ::= ','
DATA    ::= 16進数*

userデータ

userdata.xml こんな感じ?

ページの先頭へ