LINUX.ORG.RU

История изменений

Исправление DRVTiny, (текущая версия) :

Взрыв мозга в виде реализации таймера наподобие AnyEvent->timer в Mojolicious:

Mojo::IOLoop->delay(
	sub {
		Mojo::IOLoop->timer($keepAliveTimings->[TIMER_OPT_AFTER] => $_[0]->begin);
	}, # <- set one-time alarm
	sub {
		sub {
			state $cntRun=0;
			$cntRun++ or 
				$aeh{'keep_alive_timer'}=
				Mojo::IOLoop->recurring($keepAliveTimings->[TIMER_OPT_INTERVAL] => __SUB__);
			$redCastObj->('redc')->ping(sub {
				my ($redO,$err,$res)=@_;
				if ($err || $res ne 'PONG') {
					$redCastObj->reconnect('(keep_alive) failed to re-animate Redis connection after ping lost');
				} else {
					$log->debug('(keep_alive) PING returned status: OK');
				}
			});
		}->()
	} # <- set recurring timer
); # <- $loop->delay()

Пришлось в одном модуле заменять AnyEvent на Mojo - столько всего насмотрелся...

Исправление DRVTiny, :

Взрыв мозга в виде реализации таймера наподобие AnyEvent->timer в Mojolicious:

Mojo::IOLoop->delay(
	sub {
		Mojo::IOLoop->timer($keepAliveTimings->[TIMER_OPT_AFTER] => $_[0]->begin);
	}, # <- set one-time alarm
	sub {
		sub {
			state $cntRun=0;
			$cntRun++ or 
				$aeh{'keep_alive_timer'}=
				Mojo::IOLoop->recurring($keepAliveTimings->[TIMER_OPT_INTERVAL] => __SUB__);
			$redCastObj->('redc')->ping(sub {
			   my ($redO,$err,$res)=@_;
			   if ($err || $res ne 'PONG') {
				   $redCastObj->reconnect('(keep_alive) failed to re-animate Redis connection after ping lost');
			   } else {
				   $log->debug('(keep_alive) PING returned status: OK');
			   }
			});
		}->()
	} # <- set recurring timer
); # <- $loop->delay()

Пришлось в одном модуле заменять AnyEvent на Mojo - столько всего насмотрелся...

Исправление DRVTiny, :

Взрыв мозга в виде реализации таймера наподобие AnyEvent->timer в Mojolicious:

                Mojo::IOLoop->delay(
                    sub {
                        Mojo::IOLoop->timer($keepAliveTimings->[TIMER_OPT_AFTER] => $_[0]->begin);
                    }, # <- set one-time alarm
                    sub {
                        sub {
                            state $cntRun=0;
                            $cntRun++ or 
                                $aeh{'keep_alive_timer'}=
                                Mojo::IOLoop->recurring($keepAliveTimings->[TIMER_OPT_INTERVAL] => __SUB__);
                            $redCastObj->('redc')->ping(sub {
                               my ($redO,$err,$res)=@_;
                               if ($err || $res ne 'PONG') {
                                   $redCastObj->reconnect('(keep_alive) failed to re-animate Redis connection after ping lost');
                               } else {
                                   $log->debug('(keep_alive) PING returned status: OK');
                               }
                            });
                        }->()
                    } # <- set recurring timer
                ); # <- $loop->delay()

Пришлось в одном модуле заменять AnyEvent на Mojo - столько всего насмотрелся...

Исходная версия DRVTiny, :

Взрыв мозга в виде реализации таймера наподобие AnyEvent->timer в Mojolicious:

 Mojo::IOLoop->delay(
                    sub {
                        Mojo::IOLoop->timer($keepAliveTimings->[TIMER_OPT_AFTER] => $_[0]->begin);
                    }, # <- set one-time alarm
                    sub {
                        sub {
                            state $cntRun=0;
                            $cntRun++ or 
                                $aeh{'keep_alive_timer'}=
                                Mojo::IOLoop->recurring($keepAliveTimings->[TIMER_OPT_INTERVAL] => __SUB__);
                            $redCastObj->('redc')->ping(sub {
                               my ($redO,$err,$res)=@_;
                               if ($err || $res ne 'PONG') {
                                   $redCastObj->reconnect('(keep_alive) failed to re-animate Redis connection after ping lost');
                               } else {
                                   $log->debug('(keep_alive) PING returned status: OK');
                               }
                            });
                        }->()
                    } # <- set recurring timer
                ); # <- $loop->delay()

Пришлось в одном модуле заменять AnyEvent на Mojo - столько всего насмотрелся...