-syncNetworkChannel :: String Int String (String -> m) (m -> String) (Shared ([m],Bool,[m],Bool)) -> Task () | iTask m
-syncNetworkChannel server port msgSeparator decodeFun encodeFun channel
- = tcpconnect server port channel {ConnectionHandlers|onConnect=onConnect,whileConnected=whileConnected,onDisconnect=onDisconnect} @! ()
- where
- onConnect _ (received,receiveStopped,send,sendStopped)
- = (Ok "",if (not (isEmpty send)) (Just (received,False,[],sendStopped)) Nothing, map encodeFun send,False)
- whileConnected Nothing acc (received,receiveStopped,send,sendStopped)
- = (Ok acc, Nothing, [], False)
- whileConnected (Just newData) acc (received,receiveStopped,send,sendStopped)
- # [acc:msgs] = reverse (split msgSeparator (concat [acc,newData]))
- # write = if (not (isEmpty msgs && isEmpty send))
- (Just (received ++ map decodeFun (reverse msgs),receiveStopped,[],sendStopped))
- Nothing
- = (Ok acc,write,map encodeFun send,False)
-
- onDisconnect l (received,receiveStopped,send,sendStopped)
- = (Ok l,Just (received,True,send,sendStopped))
-
-consumeNetworkStream :: ([m] -> Task ()) (Shared ([m],Bool,[m],Bool)) -> Task () | iTask m
-consumeNetworkStream processTask channel
- = ((watch channel >>* [OnValue (ifValue ifProcess process)]) <! id) @! ()
+from Data.Func import $
+import Data.Tuple
+import Data.List
+import System.Directory
+
+import iTasks._Framework.Store
+import iTasks._Framework.Serialization
+
+import TTY, iTasksTTY
+
+Start world = startEngine [
+ publish "/manage" $ const $ mTaskManager
+ >>* [OnAction (Action "Shutdown") (always $ shutDown)],
+ publish "/" $ const demo
+ ] world
+
+demo = viewInformation "" [] "Hello world"
+
+mTaskManager :: Task ()
+mTaskManager = startupDevices >>| anyTask
+ [ viewmTasks @! ()
+ , whileUnchanged sdsStore manageShares @! ()
+ , whileUnchanged deviceStore $ manageDevices process
+ ] <<@ ApplyLayout (foldl1 sequenceLayouts
+ [arrangeWithSideBar 0 LeftSide 260 True
+ ,arrangeSplit Vertical True])