Wenn ich einen TCP-Socket mit TcpServer_Close($hash) geschlossen habe, lösche ich danach eventuell noch vorhandene Kinder mit diesem Code:
my @children = devspec2array($name."_.*");
foreach (@children) {
my $child = $_;
if($child ne $name."_.*") {
CommandDelete(undef, $child);
Log2Syslog_Log3slog ($hash, 3, "Log2Syslog $name - child instance $child deleted.");
}
}
Das funktioniert auch. $name ist dabei das Eltern-Device.
Gibt es noch eine andere best-practice Methode die ihr für diesen Zweck verwendet ?
LG,
Heiko
Ich wuerde auch diese Methode verwenden.
Danke Rudi.
Wäre es denn nicht sinnvoll, diese Funktionalität als sub in TcpServerUtils.pm zur Verfügung zu stellen ?
Dann könnte man sie nutzen wenn man ohnehin die TcpServerUtils.pm einbindet.
Zum Beispiel so:
sub
TcpServer_DelChild($)
{
my ($hash) = @_;
my $name = $hash->{NAME};
my @children = devspec2array($name."_.*");
foreach (@children) {
my $child = $_;
if($child ne $name."_.*") {
CommandDelete(undef, $child);
Log3 $hash, 3, "child instance $child deleted";
}
}
return undef;
}
LG,
Heiko
Wenn du mir noch sagst, wozu die Funktion gut sein soll...
Btw. Kind vom "richtigen" Element wuerde ich anhand SNAME unterscheiden.
Stimmt, unter "normalen" Umständen braucht man die nicht. Macht wenig Sinn.