SAM フレームワークを拡張して、他のメッセージングプロトコルや通信機構をサポートさせることができます。 新しいプロトコルや接続ライブラリのサポートを追加するには、 それをサポートするクラスを定義する必要があります。これは C 拡張モジュールあるいは PHP スクリプトとして作成します。また、"ファクトリ" スクリプトも作成しなければなりません。 サポートクラスは、SAMConnection クラスの全メソッドを実装する必要があります。 SAMConnection を継承してはいけません。ファクトリスクリプトはフレームワークからコールされ、 実装クラスのインスタンスを作成します。SAM がどのファクトリをコールするのかは、 "connect" の最初のパラメータで指定したプロトコルによって決まります。
デフォルトでは、connect でプロトコルに SAM_MQTT ("mqtt") を指定した場合に 組み込みの MQTT サポートを使用します。その他のプロトコルを指定した場合は XMS 拡張モジュールを使用します。 新たなプロトコルのサポートを追加したりデフォルトの挙動を変更したりするには、 php.ini の [sam] セクションにエントリを追加します。 デフォルトのマッピングは、以下のエントリと同等です。
[sam] sam.factory.mqtt=mqtt sam.factory.wmq=xms sam.factory.wmq:client=xms sam.factory.wmq:bindings=xms sam.factory.wpm=xms sam.factory.rtt=xms
SAM_WMQ=wmq
、SAM_WPM=wpm
、
SAM_RTT=rtt
、SAM_MQTT=mqtt
などとなります。
connect コールの際にこれを指定すると、 SAM はそのプロトコル名を php.ini のエントリから探し、対応するファクトリスクリプト sam_factory_xxx.php をコールします。 エントリが見つからなかった場合は、デフォルトは XMS となります。