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
>

Reply via email to