FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: DS_Starter am 26 September 2018, 16:20:03

Titel: Best-practice Kinder von TcpServer_Accept löschen
Beitrag von: DS_Starter am 26 September 2018, 16:20:03
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
Titel: Antw:Best-practice Kinder von TcpServer_Accept löschen
Beitrag von: rudolfkoenig am 26 September 2018, 18:10:36
Ich wuerde auch diese Methode verwenden.
Titel: Antw:Best-practice Kinder von TcpServer_Accept löschen
Beitrag von: DS_Starter am 26 September 2018, 22:11:00
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
Titel: Antw:Best-practice Kinder von TcpServer_Accept löschen
Beitrag von: rudolfkoenig am 26 September 2018, 22:14:09
Wenn du mir noch sagst, wozu die Funktion gut sein soll...
Btw. Kind vom "richtigen" Element wuerde ich anhand SNAME unterscheiden.
Titel: Antw:Best-practice Kinder von TcpServer_Accept löschen
Beitrag von: DS_Starter am 26 September 2018, 22:20:02
Stimmt, unter "normalen" Umständen braucht man die nicht. Macht wenig Sinn.