add sending and encoding options
[mTask.git] / miTask.icl
index 1fc0b2f..f8fa8ba 100644 (file)
@@ -7,18 +7,25 @@ from Text import class Text(concat,join,split), instance Text String
 import iTasks
 import mTask
 
+derive class iTask MTaskMessage
+
 Start :: *World -> *World
 Start world = startEngine (withShared ([], False, [], False) mTaskTask) world
 //Start world = startEngine mTaskTask world
 
-mTaskTask :: (Shared ([String],Bool,[String],Bool)) -> Task ()
+mTaskTask :: (Shared ([MTaskMessage],Bool,[MTaskMessage],Bool)) -> Task ()
 mTaskTask ch =
-       syncNetworkChannel "localhost" 8124 "\n" id id ch ||- 
-       viewSharedInformation "channels" [ViewWith lens] ch ||-
-       sendString (makemTask 500 bc) ch @! ()
+       syncNetworkChannel "localhost" 8124 "\n" decode encode ch ||-
+       (
+               sendMsg (hd msgs) ch >>= \_->
+               sendMsg (hd (tl msgs)) ch >>= \_->
+               viewSharedInformation "channels" [ViewWith lens] ch @! ()
+       )
        where
-               lens :: ([String],Bool,[String],Bool) -> String
-               lens (r,_,s,_) = "channels"
+               lens :: ([MTaskMessage],Bool,[MTaskMessage],Bool) -> ([String], [String])
+               lens (r,_,s,_) = (map toString r, map toString s)
+
+               msgs = toMessages 500 (toRealByteCode (unMain bc))
 
                bc :: Main (ByteCode Int Expr)
                bc = sds \x=0 In {main = x =. x +. lit 1}
@@ -29,8 +36,10 @@ makemTask to bc
 = "t" +++ toString (toChar (to / 265))
        +++ toString (toChar (to rem 265)) +++ toString bc +++ "\n"
 
-sendString :: String (Shared ([String],Bool,[String],Bool)) -> Task ()
-sendString m ch = upd (\(r,rs,s,ss)->(r,rs,s ++ [m],ss)) ch @! ()
+sendMsg :: MTaskMessage (Shared ([MTaskMessage],Bool,[MTaskMessage],Bool)) -> Task ()
+sendMsg m ch
+| not (trace_tn ("\'" +++ toString m +++ "\'")) = undef
+= upd (\(r,rs,s,ss)->(r,rs,s ++ [m],ss)) ch @! ()
 
 syncNetworkChannel :: String Int String (String -> m) (m -> String) (Shared ([m],Bool,[m],Bool)) -> Task () | iTask m
 syncNetworkChannel server port msgSeparator decodeFun encodeFun channel