fix device deletion
[mTask.git] / Devices / mTaskTCP.icl
index 4e3aba6..52832d6 100644 (file)
@@ -5,6 +5,7 @@ import StdDebug
 import Devices.mTaskDevice
 import iTasks
 from Data.Tuple import appSnd
+from Data.Maybe import fromMaybe
 from Text import class Text(indexOf), instance Text String
 
 derive class iTask TCPSettings
@@ -27,20 +28,18 @@ instance MTaskDuplex TCPSettings where
                        whileConnected :: (Maybe String) String ([MTaskMSGRecv], [MTaskMSGSend],Bool) -> (MaybeErrorString String, Maybe ([MTaskMSGRecv],[MTaskMSGSend],Bool), [String], Bool)
                        //We stop
                        whileConnected _ _ (_,_,True) = (Ok "", Nothing, [], True)
-
                        //No new data and nothing to send
                        whileConnected Nothing acc (_,[],_) = (Ok acc, Nothing, [], False)
-
                        //New data and possibly something to send
-                       whileConnected (Just newdata) acc (msgs,send,sendStopped)
-                       # (acc, nd) = process (acc +++ newdata)
+                       whileConnected newdata acc (msgs,send,sendStopped)
+                       # (acc, nd) = process (acc +++ fromMaybe "" newdata)
                        | isEmpty nd && isEmpty send = (Ok acc, Nothing, [], False)
                        = (Ok acc, Just (msgs++map decode nd,[],sendStopped), map encode send, False)
 
                        process :: String -> (String, [String])
                        process s = case indexOf "\n" s of
                                -1 = (s, [])
-                               i = appSnd (\ss->[s % (0,i):ss]) (process (s % (i, size s)))
+                               i = appSnd (\ss->[s % (0,i):ss]) (process (s % (i+1, size s)))
                        
                        onDisconnect :: String ([MTaskMSGRecv],[MTaskMSGSend],Bool) -> (MaybeErrorString String, Maybe ([MTaskMSGRecv],[MTaskMSGSend],Bool))
                        onDisconnect _ (msgs,send,sendStopped) = (Ok "", Nothing)