You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@daffodil.apache.org by "Dave Thompson (JIRA)" <ji...@apache.org> on 2018/09/24 12:14:00 UTC

[jira] [Commented] (DAFFODIL-1065) parser: API needs to enable repeated calls to parser - not treat unconsumed data as 'left over'

    [ https://issues.apache.org/jira/browse/DAFFODIL-1065?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16625726#comment-16625726 ] 

Dave Thompson commented on DAFFODIL-1065:
-----------------------------------------

Also ran manual parse/unparse streaming tests using VMF and PCAP formats.

> parser: API needs to enable repeated calls to parser - not treat unconsumed data as 'left over'
> -----------------------------------------------------------------------------------------------
>
>                 Key: DAFFODIL-1065
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-1065
>             Project: Daffodil
>          Issue Type: Improvement
>          Components: API
>    Affects Versions: s14
>            Reporter: Michael Beckerle
>            Assignee: Steve Lawrence
>            Priority: Major
>             Fix For: 2.2.0
>
>
> From an Email thread with James Garriss:
> While I got the workaround working, I definitely think this is an improvement opportunity for your API.  It should have simple methods that:
> ��       Detect a ���leftover data��� condition.
> ��       Return some sort of pointer to the location of the leftover data.
> ��       Return the entirety of the leftover data.
> This would be super helpful for anyone trying to use Daffodil in a filter.
> -----Original Message-----
> From: Steve Lawrence [mailto:slawrence@tresys.com]
> Sent: Wednesday, October 08, 2014 10:05 AM
> ...
> Subject: Re: Daffodil 0.14 - warning about extra, unprocessed data
> Yep, it looks like our CLI has two ways we determine if there is left
> over data.
> The first is the isAtEnd method. The problem with this is that I think
> it only works if you provide the size of your data to the parse()
> method. Otherwise, it will always return false. This is a bug. However,
> the workaround is to get the size of your input data, and pass it to the
> parse function, e.g.:
>   ParseResult pr = processorFactory.parse(input, lengthOfInput)
> The second way is to read the internal state to determine the length of
> the data and compare that with the resulting data location. This is what
> the Scala CLI does when the length isn't known. The problem with this
> method is that it is internal information that is not available via the
> Java API, so while it works for our CLI written in Scala, it can't be
> used in your GUI. I'm not sure this information should be available via
> the API, I think we just need to fix the first bug.
> So the short of it, pass in the length of your data and I think isAtEnd
> will work.
> - Steve



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)