帯域チェックを非同期だけでなく同期実行もできるようにした

BandwidthChecker.Runは非同期実行だったがAPIからは同期実行したかったので、非同期実行をRunAsyncに変更して、Runを新しく同期実行版として追加した。
JSON RPC APIで戻り値を返せないことがあったのを修正した

JSONRPCで呼び出されるRPCMethod属性がついたメソッドで、引数無しの場合に戻り値の型変換を正しく処理していなかったためにJTokenのサブクラス以外はnullを返していたのを修正した。
JSONRPC APIに帯域測定のcheckBandwidthを追加した

HTML UIから使うように帯域測定を実行するcheckBandwidthをJSONRPCに追加した。
HTML UIの設定ページに帯域測定を追加した

HTML UIの設定ページに帯域計測ボタンを追加し、上り帯域の自動設定ができるようにした。
GUIから更新確認を切り離すためにPeerCastStation.Utilsを追加しUpdaterクラスを入れた

更新確認はWPF版GUIでのみ動くようになっていたがHTML UIでも更新確認を行えるようにするため、更新確認を切り出してPeerCastStation.Utils.Updaterを追加した。
Updaterの動作がおかしかった部分を修正した
WPF版GUIのアップデートチェックを新しいUpdaterを使用するようにした

WPF GUIで独自に行っていた更新チェックをUpdaterを使ったものに置き換えた。
RateCounterをUtils.csから分離した

Utils.csに入ってたRateCounterを単一のファイルに分離した
Utils.csにRateCounterが残っていたのを削除した
UtilsからCreateHostTreeを削除し、HostTreeクラスとして分離した

Utilsにぞんざいに放り込まれていたCreateHostTreeを分離してHostTreeクラスとして独立させた
Utils.CreateChannelIDをBraodcastChannelに移動した

BroadcastChannelでしか使わないCreateChannelIDがUtilsに入っていたので適切な場所に移動した。
Utils.ReplaceCollectionを削除した

ChannelとPeerCastでしか使ってなかったUtils.ReplaceCollectionを削除してそれぞれのクラスにコピペした。
UtilsのIPアドレス判定メソッドをIPAddressの拡張メソッドにした

Utils.IsSiteLocalとUtils.GetAddressLocalityをIPAddressExtensionクラスに追い出してIPAddressの拡張メソッドに変更した。
PeerCastStation.Core.Utilsが空になったので削除した
PeerCastStation.Core.Utilsが空になったので削除した
再接続時に落ちることがあるのを修正した

ユーザ要求での再接続時にコンテントヘッダがクリアされたあとにコンテントヘッダを送ろうとして落ちることがあったのを修正した。
送信タイムアウト時に結局送信待ちをしてしまうのを修正した

送信タイムアウトが起きた場合に結局Stream.EndWriteを呼び出すので、接続先がいつまでも受信してくれないと送信スレッドが終了しなかったので、タイムアウト時はEndWriteを呼び出さずに終了するようにした。
User-Agentヘッダがないリクエストが投げられた時に落ちるのを修正した

HTTPOutputStreamでクライアントがUser-Agentヘッダを送ってこないと表示しようとして落ちる場合があったので修正した。