summaryrefslogtreecommitdiffstats
path: root/upstream/mageia-cauldron/man3pm/CPAN::Mirrors.3pm
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/mageia-cauldron/man3pm/CPAN::Mirrors.3pm')
-rw-r--r--upstream/mageia-cauldron/man3pm/CPAN::Mirrors.3pm209
1 files changed, 209 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man3pm/CPAN::Mirrors.3pm b/upstream/mageia-cauldron/man3pm/CPAN::Mirrors.3pm
new file mode 100644
index 00000000..18340e61
--- /dev/null
+++ b/upstream/mageia-cauldron/man3pm/CPAN::Mirrors.3pm
@@ -0,0 +1,209 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
+.ie n \{\
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\" ========================================================================
+.\"
+.IX Title "CPAN::Mirrors 3pm"
+.TH CPAN::Mirrors 3pm 2023-11-28 "perl v5.38.2" "Perl Programmers Reference Guide"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH NAME
+CPAN::Mirrors \- Get CPAN mirror information and select a fast one
+.SH SYNOPSIS
+.IX Header "SYNOPSIS"
+.Vb 1
+\& use CPAN::Mirrors;
+\&
+\& my $mirrors = CPAN::Mirrors\->new( $mirrored_by_file );
+\&
+\& my $seen = {};
+\&
+\& my $best_continent = $mirrors\->find_best_continents( { seen => $seen } );
+\& my @mirrors = $mirrors\->get_mirrors_by_continents( $best_continent );
+\&
+\& my $callback = sub {
+\& my( $m ) = @_;
+\& printf "%s = %s\en", $m\->hostname, $m\->rtt
+\& };
+\& $mirrors\->get_mirrors_timings( \e@mirrors, $seen, $callback, %args );
+\&
+\& @mirrors = sort { $a\->rtt <=> $b\->rtt } @mirrors;
+\&
+\& print "Best mirrors are ", map( { $_\->rtt } @mirrors[0..3] ), "\en";
+.Ve
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+.IP "new( LOCAL_FILE_NAME )" 4
+.IX Item "new( LOCAL_FILE_NAME )"
+Create a new CPAN::Mirrors object from LOCAL_FILE_NAME. This file
+should look like that in http://www.cpan.org/MIRRORED.BY .
+.IP \fBcontinents()\fR 4
+.IX Item "continents()"
+Return a list of continents based on those defined in \fIMIRRORED.BY\fR.
+.IP "countries( [CONTINENTS] )" 4
+.IX Item "countries( [CONTINENTS] )"
+Return a list of countries based on those defined in \fIMIRRORED.BY\fR.
+It only returns countries for the continents you specify (as defined
+in \f(CW\*(C`continents\*(C'\fR). If you don't specify any continents, it returns all
+of the countries listed in \fIMIRRORED.BY\fR.
+.IP "mirrors( [COUNTRIES] )" 4
+.IX Item "mirrors( [COUNTRIES] )"
+Return a list of mirrors based on those defined in \fIMIRRORED.BY\fR.
+It only returns mirrors for the countries you specify (as defined
+in \f(CW\*(C`countries\*(C'\fR). If you don't specify any countries, it returns all
+of the mirrors listed in \fIMIRRORED.BY\fR.
+.IP "get_mirrors_by_countries( [COUNTRIES] )" 4
+.IX Item "get_mirrors_by_countries( [COUNTRIES] )"
+A more sensible synonym for mirrors.
+.IP "get_mirrors_by_continents( [CONTINENTS] )" 4
+.IX Item "get_mirrors_by_continents( [CONTINENTS] )"
+Return a list of mirrors for all of continents you specify. If you don't
+specify any continents, it returns all of the mirrors.
+.Sp
+You can specify a single continent or an array reference of continents.
+.IP "get_countries_by_continents( [CONTINENTS] )" 4
+.IX Item "get_countries_by_continents( [CONTINENTS] )"
+A more sensible synonym for countries.
+.IP default_mirror 4
+.IX Item "default_mirror"
+Returns the default mirror, http://www.cpan.org/ . This mirror uses
+dynamic DNS to give a close mirror.
+.IP best_mirrors 4
+.IX Item "best_mirrors"
+\&\f(CW\*(C`best_mirrors\*(C'\fR checks for the best mirrors based on the list of
+continents you pass, or, without that, all continents, as defined
+by \f(CW\*(C`CPAN::Mirrored::By\*(C'\fR. It pings each mirror, up to the value of
+\&\f(CW\*(C`how_many\*(C'\fR. In list context, it returns up to \f(CW\*(C`how_many\*(C'\fR mirrors.
+In scalar context, it returns the single best mirror.
+.Sp
+Arguments
+.Sp
+.Vb 5
+\& how_many \- the number of mirrors to return. Default: 1
+\& callback \- a callback for find_best_continents
+\& verbose \- true or false on all the whining and moaning. Default: false
+\& continents \- an array ref of the continents to check
+\& external_ping \- if true, use external ping via Net::Ping::External. Default: false
+.Ve
+.Sp
+If you don't specify the continents, \f(CW\*(C`best_mirrors\*(C'\fR calls
+\&\f(CW\*(C`find_best_continents\*(C'\fR to get the list of continents to check.
+.Sp
+If you don't have Net::Ping v2.13 or later, needed for timings,
+this returns the default mirror.
+.Sp
+\&\f(CW\*(C`external_ping\*(C'\fR should be set and then \f(CW\*(C`Net::Ping::External\*(C'\fR needs
+to be installed, if the local network has a transparent proxy.
+.IP "get_n_random_mirrors_by_continents( N, [CONTINENTS] )" 4
+.IX Item "get_n_random_mirrors_by_continents( N, [CONTINENTS] )"
+Returns up to N random mirrors for the specified continents. Specify the
+continents as an array reference.
+.ie n .IP "get_mirrors_timings( MIRROR_LIST, SEEN, CALLBACK, %ARGS );" 4
+.el .IP "get_mirrors_timings( MIRROR_LIST, SEEN, CALLBACK, \f(CW%ARGS\fR );" 4
+.IX Item "get_mirrors_timings( MIRROR_LIST, SEEN, CALLBACK, %ARGS );"
+Pings the listed mirrors and returns a list of mirrors sorted in
+ascending ping times.
+.Sp
+\&\f(CW\*(C`MIRROR_LIST\*(C'\fR is an anonymous array of \f(CW\*(C`CPAN::Mirrored::By\*(C'\fR objects to
+ping.
+.Sp
+The optional argument \f(CW\*(C`SEEN\*(C'\fR is a hash reference used to track the
+mirrors you've already pinged.
+.Sp
+The optional argument \f(CW\*(C`CALLBACK\*(C'\fR is a subroutine reference to call
+after each ping. It gets the \f(CW\*(C`CPAN::Mirrored::By\*(C'\fR object after each
+ping.
+.IP "find_best_continents( HASH_REF );" 4
+.IX Item "find_best_continents( HASH_REF );"
+\&\f(CW\*(C`find_best_continents\*(C'\fR goes through each continent and pings \f(CW\*(C`N\*(C'\fR
+random mirrors on that continent. It then orders the continents by
+ascending median ping time. In list context, it returns the ordered list
+of continent. In scalar context, it returns the same list as an
+anonymous array.
+.Sp
+Arguments:
+.Sp
+.Vb 6
+\& n \- the number of hosts to ping for each continent. Default: 3
+\& seen \- a hashref of cached hostname ping times
+\& verbose \- true or false for noisy or quiet. Default: false
+\& callback \- a subroutine to run after each ping.
+\& ping_cache_limit \- how long, in seconds, to reuse previous ping times.
+\& Default: 1 day
+.Ve
+.Sp
+The \f(CW\*(C`seen\*(C'\fR hash has hostnames as keys and anonymous arrays as values.
+The anonymous array is a triplet of a \f(CW\*(C`CPAN::Mirrored::By\*(C'\fR object, a
+ping time, and the epoch time for the measurement.
+.Sp
+The callback subroutine gets the \f(CW\*(C`CPAN::Mirrored::By\*(C'\fR object, the ping
+time, and measurement time (the same things in the \f(CW\*(C`seen\*(C'\fR hashref) as
+arguments. \f(CW\*(C`find_best_continents\*(C'\fR doesn't care what the callback does
+and ignores the return value.
+.Sp
+With a low value for \f(CW\*(C`N\*(C'\fR, a single mirror might skew the results enough
+to choose a worse continent. If you have that problem, try a larger
+value.
+.SH AUTHOR
+.IX Header "AUTHOR"
+Andreas Koenig \f(CW\*(C`<andk@cpan.org>\*(C'\fR, David Golden \f(CW\*(C`<dagolden@cpan.org>\*(C'\fR,
+brian d foy \f(CW\*(C`<bdfoy@cpan.org>\*(C'\fR
+.SH LICENSE
+.IX Header "LICENSE"
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+.PP
+See <http://www.perl.com/perl/misc/Artistic.html>