1package Net::Connection::Sort::pid; 2 3use 5.006; 4use strict; 5use warnings; 6 7=head1 NAME 8 9Net::Connection::Sort::pid - Sorts the connections via the PID. 10 11=head1 VERSION 12 13Version 0.0.0 14 15=cut 16 17our $VERSION = '0.0.0'; 18 19 20=head1 SYNOPSIS 21 22Please keep in mind that PID is not a requirement and if not specified is set to 0, 23meaning it will show up earlier. 24 25 use Net::Connection::Sort::host_f; 26 use Net::Connection; 27 use Data::Dumper; 28 29 my @objects=( 30 Net::Connection->new({ 31 'foreign_host' => '3.3.3.3', 32 'local_host' => '4.4.4.4', 33 'foreign_port' => '22', 34 'local_port' => '11132', 35 'sendq' => '1', 36 'recvq' => '0', 37 'state' => 'ESTABLISHED', 38 'proto' => 'tcp4', 39 'uid' => 22, 40 'pid' => 2, 41 }), 42 Net::Connection->new({ 43 'foreign_host' => '1.1.1.1', 44 'local_host' => '2.2.2.2', 45 'foreign_port' => '22', 46 'local_port' => '11132', 47 'sendq' => '1', 48 'recvq' => '0', 49 'state' => 'ESTABLISHED', 50 'proto' => 'tcp4', 51 'uid' => 1000, 52 'pid' => 0, 53 }), 54 Net::Connection->new({ 55 'foreign_host' => '5.5.5.5', 56 'local_host' => '6.6.6.6', 57 'foreign_port' => '22', 58 'local_port' => '11132', 59 'sendq' => '1', 60 'recvq' => '0', 61 'state' => 'ESTABLISHED', 62 'proto' => 'tcp4', 63 'uid' => 1, 64 'pid' => 44, 65 }), 66 # as no PID is specified, the value of 0 will just be used instead 67 Net::Connection->new({ 68 'foreign_host' => '3.3.3.3', 69 'local_host' => '4.4.4.4', 70 'foreign_port' => '22', 71 'local_port' => '11132', 72 'sendq' => '1', 73 'recvq' => '0', 74 'state' => 'ESTABLISHED', 75 'proto' => 'tcp4', 76 }), 77 ); 78 79 my $sorter=$sorter=Net::Connection::Sort::uid->new; 80 81 @objects=$sorter->sorter( \@objects ); 82 83 print Dumper( \@objects ); 84 85=head1 METHODS 86 87=head2 new 88 89This initiates the module. 90 91No arguments are taken and this will always succeed. 92 93 my $sorter=$sorter=Net::Connection::Sort::uid->new; 94 95=cut 96 97sub new{ 98 my %args; 99 if(defined($_[1])){ 100 %args= %{$_[1]}; 101 }; 102 103 104 my $self = { 105 }; 106 bless $self; 107 108 return $self; 109} 110 111=head2 sort 112 113This sorts the array of Net::Connection objects. 114 115One object is taken and that is a array of objects. 116 117 @objects=$sorter->sorter( \@objects ); 118 119 print Dumper( \@objects ); 120 121=cut 122 123sub sorter{ 124 my $self=$_[0]; 125 my @objects; 126 if ( 127 defined( $_[1] ) && 128 ( ref($_[1]) eq 'ARRAY' ) 129 ){ 130 @objects=@{ $_[1] }; 131 }else{ 132 die 'The passed item is either not a array or undefined'; 133 } 134 135 # whoops... just realized I forgot to create a method for this in Net::Connection... doing it this way foreign 136 # compatibility with Net::Connection 0.0.0 as of currently 137 @objects=sort { 138 &helper( $a->{pid} ) <=> &helper( $b->{pid} ) 139 } @objects; 140 141 return @objects; 142} 143 144=head2 helper 145 146This is a internal function. 147 148If no PID is defined, returns 0. 149 150=cut 151 152sub helper{ 153 if ( !defined($_[0]) ){ 154 return 0; 155 } 156 return $_[0]; 157} 158 159=head1 AUTHOR 160 161Zane C. Bowers-Hadley, C<< <vvelox at vvelox.net> >> 162 163=head1 BUGS 164 165Please report any bugs or feature requests to C<bug-net-connection-sort at rt.cpan.org>, or through 166the web interface at L<https://rt.cpan.org/NoAuth/ReportBug.html?Queue=Net-Connection-Sort>. I will be notified, and then you'll 167automatically be notified of progress on your bug as I make changes. 168 169 170 171 172=head1 SUPPORT 173 174You can find documentation for this module with the perldoc command. 175 176 perldoc Net::Connection::Sort 177 178 179You can also look for information at: 180 181=over 4 182 183=item * RT: CPAN's request tracker (report bugs here) 184 185L<https://rt.cpan.org/NoAuth/Bugs.html?Dist=Net-Connection-Sort> 186 187=item * AnnoCPAN: Annotated CPAN documentation 188 189L<http://annocpan.org/dist/Net-Connection-Sort> 190 191=item * CPAN Ratings 192 193L<https://cpanratings.perl.org/d/Net-Connection-Sort> 194 195=item * Search CPAN 196 197L<https://metacpan.org/release/Net-Connection-Sort> 198 199=item * Git Repo 200 201L<https://gitea.eesdp.org/vvelox/Net-Connection-Sort> 202 203=back 204 205 206=head1 ACKNOWLEDGEMENTS 207 208 209=head1 LICENSE AND COPYRIGHT 210 211This software is Copyright (c) 2019 by Zane C. Bowers-Hadley. 212 213This is free software, licensed under: 214 215 The Artistic License 2.0 (GPL Compatible) 216 217 218=cut 219 2201; # End of Net::Connection::Sort 221