% % hand task over to vms % empty ofxone "rdyofx" log)( empty % % stack: current-dir next-file pres-dir pres-seed % { "present_" nextext ? "preslock" log)( % % stack: current-dir next-file pres-dir pres-seed % /* { dup "_" 1 1 1 parse 1 left "D" eq$ { _dropout "droplock" log)( } { _dropout not "buildlock" log)( } ifelse { */ % % this vm is marked present % check for its ready marker waiting % dup noext "_" 1 1 1 parse "ready_" &2 text ofxone exists % % stack: current-dir next-file pres-dir pres-seed pres-locker ready-exists % { % % stack: current-dir next-file pres-dir pres-seed pres-locker % % ready flag is there % "busy_" &2 text ofxone exists "busylock" log)( % % stack: current-dir next-file pres-dir pres-seed pres-locker busy-exists % { % % this builder is still marked as busy % % stack: current-dir next-file pres-dir pres-seed pres-locker % pop false } { % % stack: pres-dir pres-seed pres-locker % % is anyone else assigned this xact % % stack: current-dir next-file pres-dir pres-seed pres-locker % true !allow empty ofxone empty { % % stack: current-dir next-file pres-dir pres-seed pres-locker xone xone-seed % "assign_?????_" &_Xact text !wilder nextfile ? "alreadyassign" log)( false !allow true ? } loop % % stack: current-dir next-file pres-dir pres-seed pres-locker xone xone-seed % filing) _allow % % stack: current-dir next-file pres-dir pres-seed pres-locker not-busy % "lockcan" log)( { % % builder can be assigned this xact % % stack: current-dir next-file pres-dir pres-seed pres-locker % _Xact &" !Build.Xact" catcr "busy_" &3 text ofxone "xonelock" log)( % % stack: current-dir next-file pres-dir pres-seed pres-locker lock-busy xone-file % write % % stack: current-dir next-file pres-dir pres-seed pres-locker % % copy the original phase.txt to vms state % "Anchor.txt" ofxact "Anchor_" &3 text ofxact copyfile "phase.txt" ofxact "phase_" &3 text ofxact copyfile "incoming.txt" ofxact "incoming_" &3 text ofxact copyfile "phase.txt" ofxact ".mov" overext "phase.txt" ofxact exists "stillex" log)( pop % % stack: current-dir next-file pres-dir pres-seed pres-locker % _Xact &" !Build.Xact" catcr "assign_" &3 &"_" &_Xact text ofxone "assignlock" log)( % % stack: current-dir next-file pres-dir pres-seed pres-locker lock-assign xone-file % write % % stack: current-dir next-file pres-dir pres-seed pres-locker % pop true } { % % stack: current-dir next-file pres-dir pres-seed pres-locker % % this builder cannot be assigned % pop false } ifelse } ifelse } { % % stack: current-dir next-file xone next-pres pres-locker % % no ready flag % pop false } ifelse % % stack: current-dir next-file pres-dir pres-seed assigned % /* } { % % stack: current-dir next-file pres-dir pres-seed % % this vm not present % false } ifelse */ "assigner" log)( ? % % stack: current-dir next-file pres-dir pres-seed % } loop filing) % % stack: current-dir next-file %