added gracefull shutdown
[mTask.git] / Devices / mTaskDevice.icl
index 95c549e..e05d61b 100644 (file)
@@ -99,7 +99,9 @@ viewDevice pf d = forever $ traceValue "viewDevice" >>| anyTask
                dropEmpty (r,s,ss) = (filter ((=!=)MTEmpty) r,s,ss)
 
 deleteDevice :: MTaskDevice -> Task ()
-deleteDevice d = upd (\(r,s,ss)->(r,s,True)) (channels d)
+deleteDevice d = sendMessages [MTShutdown] d
+       >>| wait "Waiting for the channels to empty" (\(r,s,ss)->isEmpty s) (channels d)
+       >>| upd (\(r,s,ss)->(r,s,True)) (channels d)
        >>| maybe (treturn ()) (flip removeTask topLevelTasks) d.deviceTask
        >>| upd (filter ((<>)d)) deviceStore
        >>| cleanSharesDevice d.deviceName