【SimpleSocketGenerator】

はじめに

SOCKET-MANAGER Framework の新機能「シンプルソケット機能」を支える中心的なクラスが SimpleSocketGenerator です。
本記事では、実装例には踏み込まず、コンストラクタや主要メソッドのシグネチャを整理して紹介します。
実際の利用例については▶新規開発環境の解説ページにて掲載しています。ここでは API リファレンス的な位置づけでご覧ください。

コンストラクタ

/**
 * コンストラクタ
 * 
 * @param SimpleSocketTypeEnum $p_type シンプルソケットタイプ
 * @param ?string $p_host ホスト名(待受、または接続用)
 * @param ?int $p_port ポート番号(待受、または接続用)
 * @param ?int $p_downtime ダウンタイム(ms)
 * @param ?int $p_size 送受信バッファサイズ
 * @param ?int ?$p_limit 接続制限数
 * @param ?int $p_buff_cnt バッファスタック件数
 * @param ?int $p_retry リトライ回数
 * @param ?int $p_retry_interval リトライ時インターバル(μs)
 */
                    

  • ソケット種別(TCPサーバー/クライアント、UDP)を指定
  • ホスト名・ポート番号は待受/接続の両方に利用
  • バッファサイズやリトライ回数など、通信安定性に関わるパラメータを設定可能

ログライターの登録

/**
 * setLogWriter  
 * ログライターの登録
 * 
 * @param \Closure|string|null $p_log_writer ログライター
 */
                    

  • SocketManager など他クラスと同じシグネチャ
  • 初期化クラスの getLogWriter の戻り値をそのまま渡すことで、出力先・フォーマットを統一可能

常時実行コールバックの登録

/**
 * setKeepRunning  
 * 常時実行処理の登録
 * 
 * @param \Closure|string|null $p_keep_running 常時実行処理
 *          - 第一パラメータ⇒シンプルソケットのインスタンス
 *          - 第二パラメータ以降⇒$p_argvの可変引数
 * @param mixed[] $p_argv クロージャに渡す可変引数
 */
                    

  • イベントループ周期でコールバックされる処理を登録
  • 第二引数に UNIT パラメータインスタンスを渡すことで、コンテキストの状態把握や干渉が可能

SocketManagerとの連携

/**
 * setUnitParameter  
 * SocketManagerとの連携
 * 
 * - UNITパラメータインスタンスの"simple_socket"プロパティにシンプルソケットインスタンスが設定されます
 * 
 * @param SocketManagerParameter $p_param UNITパラメータインスタンス
 */
                    

  • SocketManager 側の UNIT 処理やコマンドディスパッチャーで利用可能
  • simple_socket プロパティにインスタンスが格納され、UNIT 内で利用できる

インスタンス生成

/**
 * generate  
 * 生成インスタンスのインターフェースを取得
 * 
 * @return ISimpleSocketUdp|ISimpleSocketTcpServer|ISimpleSocketTcpClient|null
 *         生成インスタンスのインターフェース or null(該当するインターフェースなし)
 */
                    

  • TCPサーバー/クライアント、UDP通信用のインターフェースを返却
  • 詳細は別ページ(各インターフェース解説ページ)にて紹介

周期ドリブン処理

/**
 * cycleDriven  
 * 生成インスタンスのインターフェースを取得
 * 
 * @return ISimpleSocketUdp|ISimpleSocketTcpServer|ISimpleSocketTcpClient|null
 *         生成インスタンスのインターフェース or null(該当するインターフェースなし)
 */
                    

  • イベントループ内で呼び出される処理
  • 周期的な送受信や監視処理を実装する際に利用

全ソケットクローズ

/**
 * shutdownAll  
 * ソケット全クローズ
 * 
 * @return bool true(成功) or false(失敗)
 */
                    

  • 全てのソケットをクローズし、後処理を実行
  • アプリケーション終了時のリソース解放に利用

関連リンク