my $telltarget = undef; # undef to be silent
my @tell_intervals = (5, 20, 60, 120, 240, 480, 960); # after each move
my $uci_assume_full_compliance = 0; # dangerous :-)
my $telltarget = undef; # undef to be silent
my @tell_intervals = (5, 20, 60, 120, 240, 480, 960); # after each move
my $uci_assume_full_compliance = 0; # dangerous :-)
if ($nfound > 0 && vec($rout, fileno($engine->{'read'}), 1) == 1) {
my @lines = read_lines($engine);
for my $line (@lines) {
if ($nfound > 0 && vec($rout, fileno($engine->{'read'}), 1) == 1) {
my @lines = read_lines($engine);
for my $line (@lines) {
}
if ($nfound > 0 && vec($rout, fileno($engine2->{'read'}), 1) == 1) {
my @lines = read_lines($engine2);
for my $line (@lines) {
}
if ($nfound > 0 && vec($rout, fileno($engine2->{'read'}), 1) == 1) {
my @lines = read_lines($engine2);
for my $line (@lines) {
} else {
if (defined($move_calculating_second_engine)) {
my $move = $refutation_moves{$move_calculating_second_engine};
} else {
if (defined($move_calculating_second_engine)) {
my $move = $refutation_moves{$move_calculating_second_engine};
$move->{'score_cp'} = $engine->{'info'}{'score_cp'} // $engine->{'info'}{'score_cp1'} // 0;
$move->{'score_mate'} = $engine->{'info'}{'score_mate'} // $engine->{'info'}{'score_mate1'};
$move->{'toplay'} = $pos_calculating->{'toplay'};
$move->{'score_cp'} = $engine->{'info'}{'score_cp'} // $engine->{'info'}{'score_cp1'} // 0;
$move->{'score_mate'} = $engine->{'info'}{'score_mate'} // $engine->{'info'}{'score_mate1'};
$move->{'toplay'} = $pos_calculating->{'toplay'};
+ # Don't update too often.
+ my $age = Time::HiRes::tv_interval($latest_update);
+ if ($age < $update_max_interval) {
+ Time::HiRes::alarm($update_max_interval + 0.01 - $age);
+ return;
+ }
+ $latest_update = [Time::HiRes::gettimeofday];
+
#
if (exists($info->{'pv1'}) && !exists($info->{'pv2'})) {
for my $key (qw(pv score_cp score_mate nodes nps depth seldepth tbhits)) {
#
if (exists($info->{'pv1'}) && !exists($info->{'pv2'})) {
for my $key (qw(pv score_cp score_mate nodes nps depth seldepth tbhits)) {
my $pretty_move = join('', prettyprint_pv($pos_calculating->{'board'}, $move));
my @pretty_pv = prettyprint_pv($pos_calculating->{'board'}, $move, @{$m->{'pv'}});
if (scalar @pretty_pv > 5) {
my $pretty_move = join('', prettyprint_pv($pos_calculating->{'board'}, $move));
my @pretty_pv = prettyprint_pv($pos_calculating->{'board'}, $move, @{$m->{'pv'}});
if (scalar @pretty_pv > 5) {