Inheritance: implements Rx\SchedulerInterface
Example #1
0
 /**
  * @test
  */
 public function eventloop_schedule_recursive()
 {
     $loop = Factory::create();
     $scheduler = new EventLoopScheduler($loop);
     $actionCalled = false;
     $count = 0;
     $action = function ($reschedule) use(&$actionCalled, &$count) {
         $actionCalled = true;
         $count++;
         if ($count < 5) {
             $reschedule();
         }
     };
     $disposable = $scheduler->scheduleRecursive($action);
     $this->assertInstanceOf('Rx\\DisposableInterface', $disposable);
     $this->assertFalse($actionCalled);
     $this->assertEquals(0, $count);
     $loop->tick();
     $this->assertEquals(1, $count);
     $loop->tick();
     $this->assertEquals(2, $count);
     $loop->tick();
     $this->assertEquals(3, $count);
     $loop->tick();
     $this->assertEquals(4, $count);
     $loop->tick();
     $this->assertEquals(5, $count);
     $loop->tick();
     $this->assertTrue($actionCalled);
     $this->assertEquals(5, $count);
 }
 public function testSchedulerWorkedWithScheduledEventOutsideItself()
 {
     $loop = Factory::create();
     $scheduler = new EventLoopScheduler($loop);
     $scheduler->start();
     $start = microtime(true);
     $called = null;
     $loop->addTimer(0.1, function () use($scheduler, &$called) {
         $scheduler->schedule(function () use(&$called) {
             $called = microtime(true);
         }, 100);
     });
     $loop->run();
     $this->assertEquals(0.2, $called - $start, '', 0.02);
 }
 /**
  * @test
  */
 public function now_returns_the_time()
 {
     $loop = Factory::create();
     $scheduler = new EventLoopScheduler($loop);
     $this->assertTrue(abs(time() - $scheduler->now()) < 1, "time difference is less than or equal to 1");
 }
Example #4
0
use Rxnet\Thread\RxThread;
use Rxnet\Zmq\RxZmq;
use Rxnet\Zmq\SocketWrapper;
require __DIR__ . "/../vendor/autoload.php";
function asString($value)
{
    if (is_array($value)) {
        return json_encode($value);
    }
    return (string) $value;
}
$createStdoutObserver = function ($prefix = '') {
    return new Rx\Observer\CallbackObserver(function ($value) use($prefix) {
        echo $prefix . "Next value: " . asString($value) . " : " . memory_get_usage(true) . "\n";
    }, function ($error) use($prefix) {
        echo $prefix . "Exception: " . $error->getMessage() . "\n";
    }, function () use($prefix) {
        echo $prefix . "Complete!\n";
    });
};
$loop = Factory::create();
$scheduler = new EventLoopScheduler($loop);
$i = 0;
$mem = function () use(&$i) {
    echo memory_get_usage(true) . "\n";
};
$scheduler->schedulePeriodic($mem, 10 * 1000, 10 * 1000);
$scheduler->schedulePeriodic(function () use(&$i) {
    $i++;
}, 0, 10);
$loop->run();