Acme-UPnP
view release on metacpan or search on metacpan
lib/Acme/UPnP.pm view on Meta::CPAN
$sock->send( $msg, 0, pack_sockaddr_in( 1900, inet_aton('239.255.255.250') ) );
my $rin = '';
vec( $rin, $sock->fileno, 1 ) = 1;
my $rout;
my $found_location;
my $end_time = time + 2.5;
while ( time < $end_time ) {
my $left = $end_time - time;
last if $left <= 0;
if ( select( $rout = $rin, undef, undef, $left ) ) {
my $data;
my $addr = $sock->recv( $data, 4096 );
if ( defined $data && $data =~ /Location:\s*(https?:\/\/[^\s\r\n]+)/i ) {
$found_location = $1;
last;
}
}
else {
last;
}
use v5.40;
use Test2::V1;
use lib '../lib';
use feature 'class';
# Mock Socket and HTTP::Tiny
my $socket_recv_data;
my $http_content;
BEGIN {
*CORE::GLOBAL::select = sub { return 1 }
}
no warnings qw[experimental::class redefine once];
#
*IO::Socket::INET::new = sub { return bless {}, 'MockSocket' };
package MockSocket {
sub send {1}
sub fileno {1}
sub sockdomain {2}
sub sockhost {'127.0.0.1'}
( run in 0.948 second using v1.01-cache-2.11-cpan-9581c071862 )