Autor Thema: Best-practice Kinder von TcpServer_Accept löschen  (Gelesen 398 mal)

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3159
Best-practice Kinder von TcpServer_Accept löschen
« 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
« Letzte Änderung: 26 September 2018, 16:45:55 von DS_Starter »
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19536
Antw:Best-practice Kinder von TcpServer_Accept löschen
« Antwort #1 am: 26 September 2018, 18:10:36 »
Ich wuerde auch diese Methode verwenden.

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3159
Antw:Best-practice Kinder von TcpServer_Accept löschen
« Antwort #2 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
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19536
Antw:Best-practice Kinder von TcpServer_Accept löschen
« Antwort #3 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.

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3159
Antw:Best-practice Kinder von TcpServer_Accept löschen
« Antwort #4 am: 26 September 2018, 22:20:02 »
Stimmt, unter "normalen" Umständen braucht man die nicht. Macht wenig Sinn.
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

 

decade-submarginal