Lock-Socket
view release on metacpan or search on metacpan
lib/Lock/Socket.pm view on Meta::CPAN
package Lock::Socket::Mo;
#<<< Do not perltidy this
BEGIN {
# use Mo qw'builder default import is required';
# The following line of code was produced from the previous line by
# Mo::Inline version 0.39
no warnings;my$M=__PACKAGE__.'::';*{$M.Object::new}=sub{my$c=shift;my$s=bless{@_},$c;my%n=%{$c.::.':E'};map{$s->{$_}=$n{$_}->()if!exists$s->{$_}}keys%n;$s};*{$M.import}=sub{import warnings;$^H|=1538;my($P,%e,%o)=caller.'::';shift;eval"no Mo::$_",&{$M...
$INC{'Lock/Socket/Mo.pm'} = __FILE__;
}
1;
#>>>
package Lock::Socket::Error;
use Lock::Socket::Mo;
use overload '""' => sub { $_[0]->msg }, fallback => 1;
has msg => (
is => 'ro',
required => 1,
);
1;
package Lock::Socket;
use strict;
use warnings;
use Carp ();
use Lock::Socket::Mo;
use Socket;
our @VERSION = '0.0.6';
our @CARP_NOT;
@Lock::Socket::Error::Bind::ISA = ('Lock::Socket::Error');
@Lock::Socket::Error::Socket::ISA = ('Lock::Socket::Error');
@Lock::Socket::Error::Usage::ISA = ('Lock::Socket::Error');
@Lock::Socket::Error::Import::ISA = ('Lock::Socket::Error');
### Function Interface ###
sub _uid_ip {
return join( '.', 127, unpack( 'C2', pack( "n", $< ) ), 1 )
unless $^O =~ m/bsd$/ or $^O eq 'darwin';
return '127.0.0.1';
}
sub lock_socket {
my $port = shift
|| __PACKAGE__->err( 'Usage', 'usage: lock_socket($PORT)' );
my $addr = shift;
my $sock = Lock::Socket->new(
port => $port,
defined $addr ? ( addr => $addr ) : (),
);
$sock->lock;
return $sock;
}
sub lock_user_socket {
my $port = shift
|| __PACKAGE__->err( 'Usage', 'usage: lock_user_socket($PORT)' );
my $addr = shift;
my $sock = Lock::Socket->new(
port => $port + $<,
addr => $addr || _uid_ip,
( run in 1.245 second using v1.01-cache-2.11-cpan-97f6503c9c8 )