X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=scpubgit%2FObject-Remote.git;a=blobdiff_plain;f=lib%2FObject%2FRemote%2FConnection.pm;h=d64a8dd41959764da3841ea1bfff8c87604051b1;hp=090b9aa8a398553f34613f6f24138d1bec727072;hb=783105c4013747147c7195f043961af40b9908b7;hpb=55c0d0209fa9d9265ff178f54ae9fe5fdddef3c1 diff --git a/lib/Object/Remote/Connection.pm b/lib/Object/Remote/Connection.pm index 090b9aa..d64a8dd 100644 --- a/lib/Object/Remote/Connection.pm +++ b/lib/Object/Remote/Connection.pm @@ -15,8 +15,9 @@ use POSIX ":sys_wait_h"; use Module::Runtime qw(use_module); use Scalar::Util qw(weaken blessed refaddr openhandle); use JSON::PP qw(encode_json); -use Moo; +use Future; use Carp qw(croak); +use Moo; BEGIN { router()->exclude_forwarding } @@ -58,7 +59,7 @@ has read_channel => ( ); has on_close => ( - is => 'rw', default => sub { $_[0]->_install_future_handlers(CPS::Future->new) }, + is => 'rw', default => sub { $_[0]->_install_future_handlers(Future->new) }, trigger => sub { log_trace { "Installing handlers into future via trigger" }; $_[0]->_install_future_handlers($_[1]) @@ -212,7 +213,7 @@ sub _build__json { tie @tied_array, 'Object::Remote::Tied', $self->_id_to_remote_object(@_); return \@tied_array; } - ); + ); } sub _load_if_possible { @@ -324,7 +325,7 @@ sub send_free { sub send { my ($self, $type, @call) = @_; - my $future = CPS::Future->new; + my $future = Future->new; my $remote = $self->remote_objects_by_id->{$call[0]}; unshift @call, $type => $self->_local_object_to_id($future); @@ -514,14 +515,9 @@ Object::Remote::Connection - An underlying connection for L use Object::Remote; - my %opts = ( - nice => '10', ulimit => '-v 400000', - watchdog_timeout => 120, stderr => \*STDERR, - ); - my $local = Object::Remote->connect('-'); - my $remote = Object::Remote->connect('myserver', nice => 5); - my $remote_user = Object::Remote->connect('user@myserver', %opts); + my $remote = Object::Remote->connect('myserver'); + my $remote_user = Object::Remote->connect('user@myserver'); my $local_sudo = Object::Remote->connect('user@'); #$remote can be any other connection object @@ -529,63 +525,14 @@ Object::Remote::Connection - An underlying connection for L =head1 DESCRIPTION -This is the class that supports connections to a Perl interpreter that is executed in a -different process. The new Perl interpreter can be either on the local or a remote machine -and is configurable via arguments passed to the constructor. - -=head1 ARGUMENTS - -=over 4 - -=item nice - -If this value is defined then it will be used as the nice value of the Perl process when it -is started. The default is the undefined value and will not nice the process. - -=item stderr - -If this value is defined then it will be used as the file handle that receives the output -of STDERR from the Perl interpreter process and I/O will be performed by the run loop in a -non-blocking way. If the value is undefined then STDERR of the remote process will be connected -directly to STDERR of the local process with out the run loop managing I/O. The default value -is undefined. - -There are a few ways to use this feature. By default the behavior is to form one unified STDERR -across all of the Perl interpreters including the local one. For small scale and quick operation -this offers a predictable and easy to use way to get at error messages generated anywhere. If -the local Perl interpreter crashes then the remote Perl interpreters still have an active STDERR -and it is possible to still receive output from them. This is generally a good thing but can -cause issues. - -When using a file handle as the output for STDERR once the local Perl interpreter is no longer -running there is no longer a valid STDERR for the remote interpreters to send data to. This means -that it is no longer possible to receive error output from the remote interpreters and that the -shell will start to kill off the child processes. Passing a reference to STDERR for the local -interpreter (as the SYNOPSIS shows) causes the run loop to manage I/O, one unified STDERR for -all Perl interpreters that ends as soon as the local interpreter process does, and the shell will -start killing children when the local interpreter exits. - -It is also possible to pass in a file handle that has been opened for writing. This would be -useful for logging the output of the remote interpreter directly into a dedicated file. - -=item ulimit - -If this string is defined then it will be passed unmodified as the arguments to ulimit when -the Perl process is started. The default value is the undefined value and will not limit the -process in any way. - -=item watchdog_timeout - -If this value is defined then it will be used as the number of seconds the watchdog will wait -for an update before it terminates the Perl interpreter process. The default value is undefined -and will not use the watchdog. See C for more information. - -=back +This is the class that supports connections to remote objects. =head1 SEE ALSO =over 4 +=item C + =item C =back