ビルド時に警告が出るのを修正した

NotificationMessage.GetHashCodeは使っていないがオーバーライドしないとコンパイラが文句を言ってくるので定義して黙らせるようにした。
配信開始時のSourceStreamFactoryを明示的に指定するようにした

PeerCast.BroadcastChannelは渡されたUriから自動的にSourceStreamFactoryを検索して使用していたが、選択基準がUriのスキームだけだと同じスキームで別な動作をするSourceStreamが使えないので、選択はBroadcastChannelの外で行って明示的に渡すようにした。
ISourceStreamFactoryには配信用かリレー用か選択するためのTypeプロパティと配信時に既定のUriをユーザに示せるようにDefaultUriプロパティを追加した。
GUIとHTML UIでの配信時に取得方法を選択できるようにした

GUIとHTML UIでの配信開始時に、ストリームを取得するためのSourceStreamFactoryを手動で選択できるようにした。
トラップされない例外が投げられた場合に落ちる前に例外のログを書き出すようにした

トラップされない例外が投げられた時にスレッド毎にトラップして例外を通常のログに書き出すようにしていたが、
スレッドプールで処理されなかった例外など漏れがありログも常にファイルに書き出されてるとは限らないので、
全くトラップされなかった例外に関してはAppDomain.UnhandledExceptionイベントで受け取って
設定ファイルと同じ場所のexception.logに書き出すように変更した。
Bump version up to 1.7.2
グローバルIPアドレスを持っていないノード情報があった時に落ちる場合があったのを修正した

グローバルIPアドレスがnullになっているノード情報があった場合に接続先選択やviewxmlの表示で落ちるようになっていたので修正した。
Contentを個数でなく時間で消すようにした

Contentの保持期間を個数にしていたが、パケット数が多い場合にすぐ溢れてしまうので個数でなく時間で消すようにしてみた。
Bumped version up to 1.7.3
appcastを更新忘れていたので入れた
Contentに受信した順番を表すSerial番号をつけるようにした

ContentCollectionから次のContentを取得しようとして無かった場合に、受信していなかったのか受信はしたが既にタイムアウトで消えたのかわからなくなるので、受信順のシリアル番号をつけて消えたかどうか判別できるようにした。
StreamConnectionでのデータ送信を16KiB単位で行うようにした

StreamConnectionのデータ送信タイムアウトが、送るデータサイズにかかわらず一定であったため、多くのデータを送ろうとするとタイムアウトする可能性があった。
この対策のためデータを最大16KiB単位に分割して送るようにし、送信タイムアウトは16KiB送りきるまでの時間でタイムアウトするように変更した。
OutputStreamBaseを内部的にStreamConnectionを使用するよう整理した

StreamConnectionとOutputStreamBaseで非同期送受信のためのコードが重複してたので、OutputStreamBaseがStreamConnectionを使用するように整理した。
PCPのリレー出力でパケットのスキップが起きたとき切れるようにしてみた

PCPのリレー出力はパケットスキップが起きてもそのままリレーを継続していたが、StreamConnectionがそう簡単に送信タイムアウトしないようになったために多少送信が間に合わなくても切れなくなった。
結果として送信タイムアウトがほぼなくなってしまうため、PeerCast同様にパケットのスキップが起きた時には切断をするようにした。
ただし上流で起きたパケットスキップが伝搬しないように、ローカルでタイムアウトして消えたパケットを検出した時のみスキップで切れる。
PCPとHTTPの受信ストリームにおけるタイムアウトを調整した

PCPとHTTPのSourceStreamにおいてタイムアウトを調整した。
双方とも受信タイムアウトは10秒、送信タイムアウトは16KiBにつき8秒とした。
送信タイムアウトは16Kbps未満で切れるようにしたが、受信タイムアウトは特に理由がないので再考の余地あり。
PCPSourceStreamでなるべくAtom受信処理を一括で行うようにした

PCPSourceStreamでAtomを1つずつ受信して処理していたが、パケット数が多いときに処理が滞りがちになるのでなるべく一度に沢山受信して処理するように変更した。
StreamConnectionで送信タイムアウトが起きた時に送信の終了が正しく行われないのを修正した

StreamConnectionで送信タイムアウトが起きた際に、送信終了処理を行っていなかったのでCleanup時にいつまでも送信完了待ちをしてしまうようになっていたのを修正した。
StreamConnectionのRecvとSendを使いやすくした

StreamConnection.Recvでは渡したprocがEndOfStreamExceptionを投げた時に読み込み中断していたが、例外を投げるのは重いので読み込み完了したかをbool値で返す関数も受け取れるようにした。
また、SendではStream.Writeに合わせてOffsetとLengthも指定できるようにした。
Merge branch 'ContentTimeLimit'
app.configのappSettingsセクションを読み込むAppSettingsReaderを追加した

アプリケーションの構成ファイルから直接読み込みができるようにappSettingsセクションから値を取得するAppSettingsReaderクラスを追加した。
新バージョンチェック用のURLと日付をapp.configから取得するように変更した

新バージョンチェック用のURLと日付は実質的にPeerCastStation.WPFの中に埋め込まれていたが変更が面倒なので、アプリケーションの構成ファイルから読み込むように変更した。