This is an old revision of the document!
Message serializer: MessagePack
class DWSCReq {
public $v = 1; // version
public $id = 0; // message ID
public $at = null; // auth token
public $s = ""; // source: <host>
public $t = ""; // target: edge | origin | "*" | <host>
public $vh = ""; // virtual host
public $a = ""; // application
public $c = 0; // command: DWSCCmd
public $p = null; // parameter array
public function DWSCReq() {
$this->p = array();
}
};
class DWSCRep {
public $v = 1; // version
public $eno = 0; // error code
public $estr = ""; // error string
public $d = null; // reply data
}
class DWSCCmd {
const LOAD = 1;
const SUSPEND = 2;
const STOP = 3;
const SUSPEND = 4;
const DISCONNECT_CLIENTS = 5;
}
$msg = new DWSCReq(); $msg->c = DWSCCmd::STOP; $msgpack = new MessagePack(false); // false = disable PHP_ONLY mode $smsg = $msgpack->pack($msg); echo var_export(msgpack_unserialize($smsg), true);
ZeroMQ context is registered as a service in the Admin system.
$socket = $this->get('docler_zero_mq.socket');
This creates a context and a socket object, then returns with an instance. The returned ZeroMQSocket contains the message pack module too, which is accessible through the getMessagePack() method. You can access the DWSC message formats classess in the Docler\ZeroMQBundle\Protocol namespace.
The default send() method packs the message (as recv() which unpacks it):
public function send(DWSCRequest $msg, $pack = true) { }
public function recv($unpack = true) { }
config.yml:
docler_zero_mq:
context_io_threads: 1
context_is_persistent: false
socket_type: SOCKET_REQ
socket_dsn: //this is the only required parameter//
socket_persistent_id: //null//
socket_opts:
SOCKOPT_SNDHWM: 100