APIHostのテストが動くように修正した
StreamConnectionを閉じる時にはエラーを記録しないようにした

StreamConnection.Closeを実行中にエラーを記録すると、基のストリームを閉じる以上ほぼ確実にエラーが記録されてしまうので、Close実行中のエラーは無視して記録しないようにした。
SourceStreamの実装を接続毎に内部的に接続管理オブジェクトを作りなおすようにした

SourceStreamBaseの実装が一つのオブジェクトで何度もの接続を管理するようになっていたが、
再接続との競合が問題になったため接続毎に作り直すSourceConnectionBaseクラスを作るようにした。
PCPSourceStreamとHTTPSourceStreamを合わせて作り直した。
PCPSourceStreamが送信時のエラーチェックをしていなかったのを修正した
SourceStreamBase.csが大きくなったので分割した

SourceStreamBase.csにSourceConnectionBaseクラスも入れた結果大きくなりすぎたので、SourceConnectionBaseを別ファイルに分割した。
Channelのメンバ等を整理した

Channel.SourceStreamがなぜか設定可能になっていたが、Channel.Startで設定するのでプロパティでは設定はできないようにした。
OutputStreamCollectionはいらなかったのでListに置き換えた。
Channel.csに入っていたChannelInfoとChannelTrackをChannelInfo.csに分割した。
Channelの持つSourceStreamを外から指定していたのを中で作るようにした

Channel.StartはSourceStreamを指定されるようになっていたが、接続先のUriからSourceStreamを作るのはChannel.Startの中でもできるので、Uriだけ受け取るインターフェースに変更した。
Channel.Reconnet(Uri)は単純化のため指定したUriでSourceStreamを作り直すようにし、Channel.Startと同じ動作になるようにした。
ChannelのUptime計測にStopwatchを使うようにした

ChannelのUptime計測にTickCountを使っていたのが綺麗でないのでStopwatchに置き換えた。
Channelの各種メンバをロックするようにした

Channelの操作メソッドが同時アクセスされるといろいろやばそうなので適当にロックするようにしてみた。
PCPSourceStreamのConnectionInfoがHTTP Sourceを返していたのを修正した
接続終了後のチャンネルに対してUriを指定しない再接続を要求したときに無視されるのを修正した

接続終了後のチャンネルに対してUriを指定しない再接続を要求したときに無視されていたので、以前と同じUriでSourceStreamを作り直すようにした。
ただし自分で配信してる時の再接続は未実装。
Channelをリレーか配信かによってRelayChannelとBroadcastChannelに分割した

Channel.Startの引数によってリレーか配信か分かれていたが、途中からそれらが変わることはないのと、再接続の時にどちらのチャンネルかによってStartを呼び分けないといけないため、Startは一つとしてクラスによって分岐するようにした。
また、Channel.BroadcastIDは配信チャンネルかどうかの判別にしか使ってなかったのでより直接的なIsBroadcastingに置き換えた。
PCPのバージョンについての記述をPCPVersionにまとめた

PCPのバージョンについての記述があちこちに分散していたのでPCPVersionクラスにまとめた。
またEXバージョンとしてST150を出力するようにしてみた。
GUIで接続一覧の表示を微調整した

バイト位置の表示はデバッグ用にしかいらなかったので消した。
接続状態の記号とプロトコルの間にスペースを入れた。
PCPSourceの接続先がURIそのままだと長すぎるのでホスト部分のみ表示するようにした。
SourceStream毎だったストリームIDをチャンネル毎に生成するようにした

Contentに入るStreamIDはPCPSourceStreamや各種ContentReaderで独自に生成していたが、再接続などでインスタンスが作り直されるとリセットされてしまっていた。
リセットされると既にあるContentと新しく追加したContentの新旧判別ができなくなってしまうため、ストリームIDの管理はチャンネルがするようにした。
PCPSourceStreamやContentReaderは新しいストリームを発見したらChannel.GenerateStreamIDでストリームIDを発行して使用する。
PCPSourceConnectionで接続が切れた時に落ちることがあるのを修正した

接続が切れている状態でPCPSourceConnection.RemoteEndpointを呼び出すとnullを返して落ちることがあったので、接続時にRemoteEndPointを取得したら接続が切れてもそれを返すようにした。
Merge branch 'master' of https://github.com/kumaryu/peercaststation