<?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';
Exemple #2
0
 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');
 }