USING: kernel continuations namespaces threads match bake concurrency builder ; IN: builder.server ! : build-server ( -- ) ! receive ! { ! { ! "start" ! [ [ build ] in-thread ] ! } ! { ! { ?from ?tag "status" } ! [ `{ ?tag ,[ build-status get ] } ?from send ] ! } ! } ! match-cond ! build-server ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! : build-server ( -- ) ! receive ! { ! { ! "start" ! [ ! [ [ build ] [ drop ] recover "idle" build-status set-global ] in-thread ! ] ! } ! { ! { ?from ?tag "status" } ! [ `{ ?tag ,[ build-status get ] } ?from send ] ! } ! } ! match-cond ! build-server ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! : build-server ( -- ) receive { { "start" [ build-status get "idle" = build-status get f = or [ [ [ build ] [ drop ] recover "idle" build-status set-global ] in-thread ] when ] } { { ?from ?tag "status" } [ `{ ?tag ,[ build-status get ] } ?from send ] } } match-cond build-server ;