[Moscow.pm] Sync networking w timeouts

Mons Anderson mons на cpan.org
Ср Окт 3 02:20:48 PDT 2012


Пока-что рабочая версия такая:

DNS через Net::ADNS с собственным вызовом select'а (со своими timeout'ами)
(хотя у adns нет поддержки ipv6, так что пока только ipv4. Чую, что
придется запиливать самому, если понадобится :)
Синтаксис практически везде стараюсь повторить AE'шный, только вместо $cb -
$timeout;

напр:

my $till = time + $timeout;

my $fh = IO::Sync::Socket4::tcp_connect( "google.com", 80, $till - time )
or die "connect failed: $!";

my @srv = IO::Sync::DNS::srv $service, $proto, $node, $till - time;

my @a = IO::Sync::DNS::a $node, $till - time;


2012/10/2 Vladimir Timofeev <vovkasm на gmail.com>

> Привет!
>
> 2 октября 2012 г., 12:07 пользователь Mons Anderson <mons на cpan.org>
> написал:
> > Всем привет. Я так давно работаю исключительно с AE, что совсем выпал из
> > темы синхронных библиотек )
> > Есть простейшая задача: tcp connect / host resolution / socket rw.
> > Но! С жестко заданным таймаутом.
>
> Если alarm не подходит. То далее, как я понимаю проблема только в
> резолвинге?
> Тогда можно его отдельно сделать, через Net::DNS (не знаю насколько
> это быстро получится).
>
> >
> > Всяческие IO::Socket* могут легко заблокироваться на неограниченное
> время,
> > например на ресолве.
> >
> > Есть мысль написать что-то синхронное, аналогичное AnyEvent::Socket и
> > AnyEvent::DNS, но с жестким контролем таймаутов.
> > т.е. типа:
> >
> > my $fh = tcp_connect $host,$port, $timeout or die "connect failed: $!";
> > my $rr = resolve in => A => "google.com", $timeout or die "resolution
> > failed: $!";
> >
> > И аналогичное AE::Handle:
> > my $data = $h->read( chunk => 42, $timeout ) or die "read failed: $!";
> >
> > Возможно кто-то может подсказать что-то готовое и без использования
> AE/EV?
> >
> > --
> > Best wishes,
> > Vladimir V. Perepelitsa aka Mons Anderson
> > <inthrax на gmail.com>, <mons на cpan.org>
> > http://github.com/Mons
> >
> >
> > --
> > Moscow.pm mailing list
> > moscow-pm на pm.org | http://moscow.pm.org
> >
>
>
>
> --
> Vladimir Timofeev <vovkasm на gmail.com>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
> --
> Best wishes,
> Vladimir V. Perepelitsa aka Mons Anderson
> <inthrax на gmail.com>, <mons на cpan.org>
> http://github.com/Mons
>
>  <http://moscow.pm.org>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20121003/9a1d334e/attachment.html>


Подробная информация о списке рассылки Moscow-pm