Viewing File: /opt/alt/tests/alt-php83-pecl-zmq_1.1.3-1.84f0720.el8/tests/030-xrepmanualqueue.phpt

--TEST--
Test send / recv with a manually created XREQ and XREP device
--SKIPIF--
<?php 
    require_once(dirname(__FILE__) . '/skipif.inc'); 
    if(!defined('ZMQ::SOCKOPT_RCVLABEL')) die('skip Only for in libzmq 3.3.0');
?>
--FILE--
<?php

$ctx = new ZMQContext();
$req = new ZMQSocket($ctx, ZMQ::SOCKET_REQ);
$xrep = new ZMQSocket($ctx, ZMQ::SOCKET_XREP);
$xreq = new ZMQSocket($ctx, ZMQ::SOCKET_XREQ);
$rep = new ZMQSocket($ctx, ZMQ::SOCKET_REP);
$xrep->bind('inproc://xrep');
$xreq->bind('inproc://xreq');
$req->connect('inproc://xrep');
$rep->connect('inproc://xreq');
$in = array('hi', 'there');
$req->sendMulti($in);

do {
	$message = $xrep->recv();
	$more = $xrep->getSockOpt(ZMQ::SOCKOPT_RCVMORE);
	if( $xrep->getSockOpt( ZMQ::SOCKOPT_RCVLABEL ) ) {
		$xreq->send( $message, ZMQ::MODE_SNDLABEL );
	} else {
		$xreq->send( $message, $more ? ZMQ::MODE_SNDMORE : 0 );
	}
} while( $more );

$out = $rep->recvMulti();
assert($in == $out);

$rep->sendMulti(array("oh", "hello!"));

do {
	$message = $xreq->recv();
	$more = $xreq->getSockOpt(ZMQ::SOCKOPT_RCVMORE);
	if( $xreq->getSockOpt( ZMQ::SOCKOPT_RCVLABEL ) ) {
		$xrep->send( $message, ZMQ::MODE_SNDLABEL );
	} else {
		$xrep->send( $message, $more ? ZMQ::MODE_SNDMORE : 0 );
	}
} while( $more );

var_dump($req->recvMulti());



--EXPECT--
array(2) {
  [0]=>
  string(2) "oh"
  [1]=>
  string(6) "hello!"
}
Back to Directory File Manager
<