encode (MTTask to data) = "t" +++ to16bit to +++ to16bit (size data) +++ data +++ "\n"
encode (MTUpd i v) = "u" +++ to16bit i +++ v +++ "\n"
-
decode :: String -> MTaskMSGRecv
decode x
| size x == 0 = MTEmpty
= case x.[0] of
'\0' = MTEmpty
+ '\n' = MTEmpty
+ 'm' = MTMessage x
'u' = MTPub (from16bit (x % (1,3))) (x % (3,5))
_ = abort ("Didn't understand message: " +++ join " " [toString (toInt c)\\c<-: x] +++ "\n")