Since the whole point of the pipe is to trap the query response and process it (and secondarily to complete as soon as the end of response is seen, or 5 seconds max if not), totarget seemed the logical choice. I'm not sure I see how to achieve the same thing in as clear a way in the fashion you suggest. -- bc
On Sat, Nov 1, 2014 at 5:39 PM, Glenn Knickerbocker <[email protected]> wrote: > On 10/31/2014 2:50 PM, Bob Cronin wrote: > > I have a pipeline using starmsg to issue a structured query to an rscs > > machine. It is supposed to terminate after the last line of the response > or > > 5 seconds have elapsed. Yet, it never terminated. > > > pipe (end ?) strliteral /+5/ > > | delay > > | a: faninany > > | b: gate > > ? starmsg cp smsg rscs the-query-command > > | c: totarget pick w-4;* == /End of command response/ > > | b: > > <stuff to process the response> > > ? c: > > | a: > > Your culprit is TOTARGET, not GATE. TOTARGET adds PICK in a subroutine > pipeline, and EOF is failing to propagate from one pipeline to the other > when GATE terminates. I'm not adept enough at tracing this stuff to see > if PICK is still running, but STARMSG doesn't seem to get the message > that FANINANY has terminated. > > TOTARGET|GATE is belt and suspenders--splitting the file twice at the > same place based on the same criterion. Just remove TOTARGET (you can > replace it with NOT and then you don't have to rearrange anything) and > the pipeline works as you expected. > > ¬R >
