mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
neww ndb automake
This commit is contained in:
84
ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeApi.pm
Normal file
84
ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeApi.pm
Normal file
@ -0,0 +1,84 @@
|
||||
package NDB::Net::NodeApi;
|
||||
|
||||
use strict;
|
||||
use Carp;
|
||||
use Symbol;
|
||||
|
||||
require NDB::Net::Node;
|
||||
|
||||
use vars qw(@ISA);
|
||||
@ISA = qw(NDB::Net::Node);
|
||||
|
||||
# constructors
|
||||
|
||||
my $log;
|
||||
|
||||
sub initmodule {
|
||||
$log = NDB::Util::Log->instance;
|
||||
}
|
||||
|
||||
NDB::Net::NodeApi->attributes();
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
@_ % 2 == 0 or confess 0+@_;
|
||||
my(%attr) = @_;
|
||||
my $node = $class->SUPER::new(%attr, type => 'api')
|
||||
or $log->push, return undef;
|
||||
return 1;
|
||||
}
|
||||
|
||||
# run methods
|
||||
|
||||
sub handleprepare {
|
||||
my $node = shift;
|
||||
@_ == 1 or confess 0+@_;
|
||||
my($opts) = @_;
|
||||
my $netenv = NDB::Net::Env->instance;
|
||||
my $envdefs = $node->getenvdefs($opts);
|
||||
defined($envdefs) or return undef;
|
||||
my $nodedir = $node->getnodedir;
|
||||
my $shellfile = $node->getshellfile;
|
||||
my $run;
|
||||
if ($node->hasrun) {
|
||||
$run = $node->getrun;
|
||||
}
|
||||
if (defined($opts->{run})) {
|
||||
$run = $opts->{run};
|
||||
}
|
||||
if (defined($run)) {
|
||||
$log->put("run: $run")->push($node)->user;
|
||||
}
|
||||
if ($^O ne 'MSWin32') {
|
||||
$shellfile->puttext(<<END) or $log->push, return undef;
|
||||
$envdefs
|
||||
cd @{[ $nodedir->getpath ]} || exit 1
|
||||
set -x
|
||||
exec \$DEBUGGER $run
|
||||
END
|
||||
} else {
|
||||
$shellfile->puttext(<<END) or $log->push, return undef;
|
||||
$envdefs
|
||||
cd @{[ $nodedir->getpath ]}
|
||||
call $run
|
||||
END
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub cmd_stopnode_fg {
|
||||
my($node, $cmd) = @_;
|
||||
my $pid = $node->getpid;
|
||||
unless ($pid > 1) {
|
||||
$log->put("bad pid=$pid")->push($node);
|
||||
return undef;
|
||||
}
|
||||
$log->put("kill -15 $pid")->push($node)->user;
|
||||
kill(15, $pid);
|
||||
$node->setstate('stop')
|
||||
or log->push($node), return undef;
|
||||
return 1;
|
||||
}
|
||||
|
||||
1;
|
||||
# vim:set sw=4:
|
Reference in New Issue
Block a user