This shows you the differences between two versions of the page.
|
dwsc:servercontrol:msg [2013/03/28 00:20] ivan created |
dwsc:servercontrol:msg [2013/05/03 13:59] (current) efpe |
||
|---|---|---|---|
| Line 6: | Line 6: | ||
| Message serializer: MessagePack | Message serializer: MessagePack | ||
| - | Request: | + | ==== Request ==== |
| <code> | <code> | ||
| class DWSCReq { | class DWSCReq { | ||
| Line 13: | Line 13: | ||
| public $at = null; // auth token | public $at = null; // auth token | ||
| public $s = ""; // source: <host> | public $s = ""; // source: <host> | ||
| - | public $t = ""; // target: edge | origin | <host> | + | public $t = ""; // target: edge | origin | "*" | <host> |
| public $vh = ""; // virtual host | public $vh = ""; // virtual host | ||
| public $a = ""; // application | public $a = ""; // application | ||
| Line 25: | Line 25: | ||
| </code> | </code> | ||
| - | Reply: | + | ==== Reply ==== |
| <code> | <code> | ||
| class DWSCRep { | class DWSCRep { | ||
| Line 35: | Line 35: | ||
| </code> | </code> | ||
| - | Commands: | + | ==== Commands ==== |
| <code> | <code> | ||
| class DWSCCmd { | class DWSCCmd { | ||
| Line 41: | Line 41: | ||
| const SUSPEND = 2; | const SUSPEND = 2; | ||
| const STOP = 3; | const STOP = 3; | ||
| - | const DISABLE_CONNECTION = 4; | + | const SUSPEND = 4; |
| const DISCONNECT_CLIENTS = 5; | const DISCONNECT_CLIENTS = 5; | ||
| + | const NOCLUSTER = 6; | ||
| + | const ONLINE = 7; | ||
| + | const RESULT = 8; | ||
| + | const SRVSTATUS = 9; | ||
| + | const VHOSTSLOAD = 10; | ||
| + | |||
| } | } | ||
| </code> | </code> | ||
| - | + | ==== msgpack ==== | |
| - | msgpack example: | + | |
| <code> | <code> | ||
| $msg = new DWSCReq(); | $msg = new DWSCReq(); | ||
| $msg->c = DWSCCmd::STOP; | $msg->c = DWSCCmd::STOP; | ||
| - | $smsg = msgpack_serialize($msg); | + | $msgpack = new MessagePack(false); // false = disable PHP_ONLY mode |
| + | $smsg = $msgpack->pack($msg); | ||
| echo var_export(msgpack_unserialize($smsg), true); | echo var_export(msgpack_unserialize($smsg), true); | ||
| + | </code> | ||
| + | |||
| + | ====== Admin ====== | ||
| + | ZeroMQ context is registered as a service in the Admin system. | ||
| + | <code> | ||
| + | $socket = $this->get('docler_zero_mq.socket'); | ||
| + | </code> | ||
| + | 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): | ||
| + | <code>public function send(DWSCRequest $msg, $pack = true) { } | ||
| + | public function recv($unpack = true) { } | ||
| + | </code> | ||
| + | ==== ZeroMQSocket parameters ==== | ||
| + | config.yml: | ||
| + | <code> | ||
| + | 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 | ||
| </code> | </code> | ||