NSStreamでクライアントとしてTCPソケット通信を行う その2 クラス設計
その1の続き
手順はわかったので、実際に通信をするためのヘルパークラスを設計します。
delegateで非同期な通信が用意されているのは良いのですが、呼び出す側としては処理が面倒です。呼び出し元をGCDの並列キュー等の非同期で動かす事を前提として、ヘルパークラス側は全て同期(処理が完了するかエラーで失敗するまでは返らない)メソッドとなるように実装していきます。
クラスに必要なメソッド群はこんな感じ?
- 接続先ホスト情報をともなった指定イニシャライザ
- ソケットをオープン
- 指定されたサイズのバイトを読み込む
- 指定されたデータを書き込む
- ソケットをクローズする
- エラー事由を取り出す
- ファイナライザ
メンバ変数はこんなもん?
- ホスト情報(CFHostRef)
- ポート番号 (unit16_t)
- 読み込みストリーム(NSInputStream)
- 読み込みデータバッファ(NSMutableData)
- 書き出しストリーム(NSOutputStream)
- 書き出しデータバッファ(NSData)
readonlyのプロパティとして
- ホスト名(NSString)
- ポート番号
- 接続状況
あたりがあると便利かも?
ということで、うまく実装できるのかはわかりませんが、ドキュメンド代わりに記事を書きながらコーディングを開始します。