X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;ds=sidebyside;f=cloudiTasks%2FcloudiTasks.icl;h=b80d5b02c5ca4b492bdac68ae97a6bf34f90a430;hb=9b5c1b2bb69cf3c13c1d2c9cdbd5f92464cc7312;hp=081848e329fb4d382e43ac32b6f1e490fa6ad660;hpb=319e21ea8c819a21c273ea286bad8781e000c332;p=clean-tests.git diff --git a/cloudiTasks/cloudiTasks.icl b/cloudiTasks/cloudiTasks.icl index 081848e..b80d5b0 100644 --- a/cloudiTasks/cloudiTasks.icl +++ b/cloudiTasks/cloudiTasks.icl @@ -1,29 +1,21 @@ module cloudiTasks +import Data.Func, Data.Functor, Data.Tuple import StdEnv import iTasks -import Data.Func -import iTasks.Extensions.Distributed -Start w = flip doTasksWithOptions w \args eo - # (eo, s) = case args of - [argv0,"--slave",p] = ({eo & sdsPort=toInt p}, onStartup o slave) - _ = (eo, onRequest "/" o master) - = Ok (s args, {eo & distributed=True}) +Start w = doTasks master w -slave :: [String] -> Task () -slave args - = get applicationOptions - >>- \eo->traceValue ("Slave started on port " +++ toString eo.sdsPort) - >-| asyncTaskListener - -master :: [String] -> Task () -master args +master :: Task () +master = get applicationOptions >>- \eo->traceValue ("Master started on port " +++ toString eo.serverPort) - >-| asyncTask (PrivateNode 9099 ["--slave", "9099"]) (blockWait 5) // >-| asyncTask (ExistingNode "localhost" 9099) (blockWait 5) - >>! \s->viewInformation [] s +// >-| asyncTask "localhost" 9090 (blockWait 5) +// >-| asyncTask (PrivateNode 9099) (traceValue 5 >-| traceValue 42) +// >-| asyncTaskSpawn 9099 (return 42) + >-| sleepSortPar [5,1,3,8] + >&^ viewSharedInformation [] @! () blockWait :: Int -> Task Int @@ -33,3 +25,17 @@ where sleep _ _ = code { ccall sleep "I:I:A" } + +sleepSortPar :: [Int] -> Task [Int] +sleepSortPar numbers = parallel + [ (Embedded, \stl-> + asyncTaskSpawn port (blockWait num) + >-| appendTask Embedded (\_->return num) stl + @? const NoValue) + \\ num <- numbers + & port <- [9092..9099] + ] [] @? \tv->case tv of + NoValue = NoValue + (Value ts _) + # r = [v\\(_, Value v True)<-ts] + = Value r (length r == length numbers)