Пока-что рабочая версия такая: 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 <[email protected]> > Привет! > > 2 октября 2012 г., 12:07 пользователь Mons Anderson <[email protected]> > написал: > > Всем привет. Я так давно работаю исключительно с 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 > > <[email protected]>, <[email protected]> > > http://github.com/Mons > > > > > > -- > > Moscow.pm mailing list > > [email protected] | http://moscow.pm.org > > > > > > -- > Vladimir Timofeev <[email protected]> > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > -- > Best wishes, > Vladimir V. Perepelitsa aka Mons Anderson > <[email protected]>, <[email protected]> > http://github.com/Mons > > <http://moscow.pm.org> >
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
