// >-| asyncTask (ExistingNode "localhost" 9099) (blockWait 5)
// >-| asyncTask "localhost" 9090 (blockWait 5)
// >-| asyncTask (PrivateNode 9099) (traceValue 5 >-| traceValue 42)
-// >-| asyncTaskSpawn 9099 (return 42)
- >-| sleepSortPar [5,1,3,8]
+ >-| asyncTaskSpawn 9099 (return 42)
+ >-| asyncTaskSpawn 9099 (updateInformation [] 42)
+// >-| (updateInformation [] 42 -&&- updateInformation [] 22) @. ("localhost", 9099)
+// >-| asyncTaskSpawn 9099 (updateInformation [] 42 -&&- updateInformation [] 22)
+// >-| sleepSortPar [5,1,3,8]
>&^ viewSharedInformation []
@! ()
+asyncTaskChannel :: !String !Int !((sds () (Queue r) w) -> Task a) !((sds () (Queue w) r) -> Task b) -> Task (a, b)
+asyncTaskChannel host port remote local
+ = asyncTask host port (remote shareTo)
+ -&&-
+where
+ shareTo :: (sds () (Queue r) (Queue r))
+ shareTo = sdsFocus ("to-" +++ host +++ toString port) $ memoryStore "asyncITasks-channels" (Just newQueue)
+
+ shareFro :: (sds () (Queue w) (Queue w))
+ shareFro = sdsFocus ("fro-" +++ host +++ toString port) $ memoryStore "asyncITasks-channels" (Just newQueue)
+
blockWait :: Int -> Task Int
blockWait i = accWorld (sleep i)
where