Configuración en tiempo de ejecución

Soporte del protocolo y mapeado

La framework SAM puede ser extendida para soportar otros protocolos de mensajería y mecanismos de conexión. Para añadir el soporte para una nueva librería de protocolo o conexión se debe definir una clase de soporte, ya sea como una extensión C o como un script PHP, y un script "factory" debe ser creado. La clase de soporte debe implementar todos los métodos de la clase SAMConnection aunque ésta no debe heredarlos de SAMConnection. El script de factory debe ser llamado por la framework SAM para crear una instancia de la clase implementada. La manera que SAM elige que factory llamar está basada en el protocolo especificado como el primer parámetro del método "connect".

Por defecto el soporte interno MQTT será utilizado si una llamada connect especifica un protocolo de SAM_MQTT ("mqtt"), para cualquier otro protocolo SAM intentará utilizar la extensión de soporte XMS. Para añadir soporte para protocolos adicionales o para modificar el comportamiento por defecto, las entradas deben añadirse a php.ini en la sección [sam]. El mapeado por defecto es equivalente a las siguientes entradas:

[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
Como se puede ver en estos ejemplos las entradas toman la forma "sam.factory.pppp=xxx" donde pppp es el string con el protocolo especificado en el método connect y xxx es un sufijo de factory. Nota: SAM define constantes para ese string con el protocolo como SAM_WMQ=wmq, SAM_WPM=wpm, SAM_RTT=rtt, SAM_MQTT=mqtt, etc.

Cuando se identifique el código de soporte a utilizar en un método connect SAM busca el nombre del protocolo en la entradas del fichero php.ini y entonces invoca un script de factory llamado sam_factory_xxx.php. Si no se encuentra la entrada, el soporte será por defecto XMS.