<?php use PEAR2\Net\RouterOS; require_once 'PEAR2/Autoload.php'; $client = new RouterOS\Client('192.168.0.1', 'admin'); $addRequest = new RouterOS\Request('/ip/arp/add'); $addRequest->setArgument('address', '192.168.0.100'); $addRequest->setArgument('mac-address', '00:00:00:00:00:01'); $addRequest->setTag('arp1'); $client->sendAsync($addRequest); $addRequest->setArgument('address', '192.168.0.101'); $addRequest->setArgument('mac-address', '00:00:00:00:00:02'); $addRequest->setTag('arp2'); $client->sendAsync($addRequest); foreach ($client->completeRequest('arp1') as $response) { if ($response->getType() === Response::TYPE_ERROR) { echo "Error response for 'arp1'!\n"; } } foreach ($client->completeRequest('arp2') as $response) { if ($response->getType() === Response::TYPE_ERROR) { echo "Error response for 'arp2'!\n"; } } echo 'OK';
public function testSendAsyncWithoutCallbackAndLoop() { $arpPrint = new Request('/ip/arp/print'); $arpPrint->setTag('arp'); $this->object->sendAsync($arpPrint); $this->object->loop(); $list = $this->object->extractNewResponses('arp'); $this->assertInstanceOf(ROS_NAMESPACE . '\\ResponseCollection', $list, 'The list is not a collection'); $this->assertGreaterThan(0, count($list), 'No responses.'); $ping = new Request('/ping'); $ping->setArgument('address', HOSTNAME)->setArgument('interval', '0.5')->setTag('ping'); $this->object->sendAsync($ping); $this->object->loop(2); $list = $this->object->extractNewResponses('ping'); $this->assertInstanceOf(ROS_NAMESPACE . '\\ResponseCollection', $list, 'The list is not a collection'); $this->assertGreaterThan(0, count($list), 'No responses.'); $this->assertEquals(0, count($list->getAllOfType(Response::TYPE_FINAL)), 'The command should not be finished yet.'); $this->assertEquals(count($list), count($list->getAllOfType(Response::TYPE_DATA)), 'There should be only data responses.'); $this->object->cancelRequest('ping'); }