2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-05-03 19:49:02 +00:00

TcpServerUtils.pm: use optimized removeFromNtfyHash (Forum #114627)

git-svn-id: https://svn.fhem.de/fhem/trunk@22894 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2020-10-01 19:49:32 +00:00
parent 16bb0ad22d
commit 29d37fd3ba
2 changed files with 19 additions and 3 deletions

View File

@ -213,7 +213,7 @@ TcpServer_Close($@)
delete($hash->{CD});
delete($selectlist{$name});
delete($hash->{FD}); # Avoid Read->Close->Write
%ntfyHash = ();
removeFromNtfyHash($name);
}
if(defined($hash->{SERVERSOCKET})) { # Server

View File

@ -2262,6 +2262,7 @@ CommandDelete($$)
next;
}
delete $defs{$sdev}->{CL};
removeFromNtfyHash($sdev);
# Delete releated hashes
@ -2391,7 +2392,6 @@ CommandDeleteReading($$)
eval { "" =~ m/$a[1]/ };
return "Bad regexp $a[1]: $@" if($@);
%ntfyHash = ();
my @rets;
foreach my $sdev (devspec2array($a[0],$cl)) {
@ -5399,6 +5399,22 @@ addToWritebuffer($$@)
return 1; # success
}
# Faster than createNtfyHash
sub
removeFromNtfyHash($)
{
my ($toDel) = @_;
return if(!$defs{$toDel} ||
!$defs{$toDel}{TYPE} ||
!$modules{$defs{$toDel}{TYPE}}{NotifyFn});
foreach my $d ( keys %ntfyHash) {
my @a = grep { $_ !~ m/^$toDel$/ } @{$ntfyHash{$d}};
$ntfyHash{$d} = \@a;
}
}
# Note: always executed after ntfyHash = (); slow for large installations!
sub
createNtfyHash()
{
@ -5488,7 +5504,7 @@ FileRead($)
$forceType = "" if(!defined($forceType));
if(ref($param) eq "HASH") {
$fileName = $param->{FileName};
$forceType = lc($param->{ForceType});
$forceType = lc($param->{ForceType}) if($param->{ForceType});
} else {
$fileName = $param;
}