User Tools

Site Tools


dwsc:servercontrol:msg

DWSC control module

Message format

Message serializer: MessagePack

Request

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();
        }
};

Reply

class DWSCRep {
        public $v    = 1;       // version
        public $eno  = 0;       // error code
        public $estr = "";      // error string
        public $d    = null;    // reply data
}

Commands

class DWSCCmd {
        const LOAD                      = 1;
        const SUSPEND                   = 2;
        const STOP                      = 3;
        const SUSPEND                   = 4;
        const DISCONNECT_CLIENTS        = 5;
        const NOCLUSTER                 = 6;
        const ONLINE                    = 7;
        const RESULT                    = 8;
        const SRVSTATUS                 = 9;
        const VHOSTSLOAD                = 10;

}

msgpack

$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);

Admin

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) { }

ZeroMQSocket parameters

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
dwsc/servercontrol/msg.txt · Last modified: 2013/05/03 13:59 by efpe