あんまり進んでないのはひたすらテストを作り直しているため。
日曜にやっとリレー出力のテストを一通り書き直した。通信するのめんどいから内部のテストをしてたが破綻したので、おとなしく通信するテストにした。めんどくさい方法と手抜きな方法がある場合はいつもめんどくさい方が正解なんだよ。なんとめんどくさいことよ。
テスト書いてる間もソケットで通信するのはめんどいのでパイプで通信しようとしてたんだけどこれも失敗。.NETにはAnonymousPipeServerStreamとAnonymousPipeClientStreamってのがあるんだけど、ドキュメントを見るとプロセス間通信をする前提で書いてある。これを同一プロセスっつーか同一のAppDomain内で使うとどうなんじゃろ?使えるよね?とやってみたが上手くいかなかった。片方のパイプを閉じるともう片方が発狂してしまう、というかEndReadなんかで渡されたIAsyncResultは既にEndReadされてるよ!とかいう例外を投げてくるんだがまったくそんなことはない。よくよく観察してみるとパイプのもう一方が閉じられた時にそうなってしまうようで、どうもこいつは同一プロセス内で使うことを想定されていないようだ。それちょっとバグっぽくねとも思うものの今使えないことには変わりないので見なかったことにしよう。
かわりにちゃんとTCPでつないでやることにした。ポート番号とか決めなきゃいけないのが面倒だが、一度に一つしか立ち上げないからかぶる心配をしなくていいのが救いか。