Best-practice Kinder von TcpServer_Accept löschen

Begonnen von DS_Starter, 26 September 2018, 16:20:03

Vorheriges Thema - Nächstes Thema

DS_Starter

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
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rudolfkoenig


DS_Starter

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@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rudolfkoenig

Wenn du mir noch sagst, wozu die Funktion gut sein soll...
Btw. Kind vom "richtigen" Element wuerde ich anhand SNAME unterscheiden.

DS_Starter

Stimmt, unter "normalen" Umständen braucht man die nicht. Macht wenig Sinn.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter