sven should we do an update in zinc for 2.0?

Stef

On Aug 2, 2012, at 11:39 AM, Sven Van Caekenberghe wrote:

> Hi Chris,
> 
> On 21 Jul 2012, at 17:52, Chris <[email protected]> wrote:
> 
>> On 20/07/2012 18:30, Sven Van Caekenberghe wrote:
>>> On 20 Jul 2012, at 18:22, Chris wrote:
>>> 
>>>> Thanks for that. I'm actually still having a bit of trouble when the file 
>>>> is bigger than the chunk size. 
>>>> ZnChunkedReadStream>>#readInto:startingAt:count: uses a limit variable 
>>>> which is bigger than the collection and requestedCount.
>>> I won't be able to do anything until the beginning of August.
>>> 
>>> It would be really helpful if you could provide me with an actual test case 
>>> that fails.
>> 
>> Okay thanks Sven, I'll see what I can do. I am just working with a third 
>> party server which is sending chunks of 1mb (which I assume is valid) and I 
>> think Zinc just needs to support chunks bigger than the 16k in the above 
>> method
>> 
>> Regards,
>> Chris
> 
> The 16K buffer used in ZnUtils>>#streamFrom:to:[size:] is independent from 
> the chunk buffer used in ZnChunkedReadStream, BUT you did find a serious 
> problem. Actually the code of 
> ZnChunkedReadStream>>#readInto:startingAt:count: was embarrassingly bad and 
> wrong although it did work in all cases thrown to it up until now.
> 
> I added an extra test for the case where the buffer being used is smaller 
> than the chunk size:
> 
> ZnChunkedReadStream>>#testReadingBuffered
>       | data chunked plain buffer readStream |
>       data := String withAll: ($a to: $z), ($A to: $Z).
>       chunked := String streamContents: [ :stream |
>               ZnUtils nextPutAll: data on: stream chunked: 16 ].
>       readStream := ZnChunkedReadStream on: chunked readStream.
>       buffer := String new: 11.
>       plain := String streamContents: [ :output | | readCount |
>               [ readStream atEnd ] whileFalse: [
>                       readCount := readStream readInto: buffer startingAt: 1 
> count: buffer size.
>                       output next: readCount putAll: buffer ] ].
>       self assert: plain equals: data
> 
> As usual, load the latest code to get the fix. I hope it now works for your 
> particular case.
> 
> Thanks again for reporting this, being persistent about it and for pointing 
> me in the right direction !
> 
> Regards,
> 
> Sven
> 
> Here are the actual commits:
> 
> ===
> Name: Zinc-HTTP-SvenVanCaekenberghe.291
> Author: SvenVanCaekenberghe
> Time: 2 August 2012, 11:26:02 am
> UUID: 3d8c50cd-2d7b-459f-89f3-b77a23dccfdd
> Ancestors: Zinc-HTTP-SvenVanCaekenberghe.290
> 
> various fixes to ZnChunkedReadStream>>#readInto:startingAt:count: (thx Chris 
> Bailey for reporting the problem);
> added ZnLimitedReadStream>>#nextInto: as it is used by Fuel
> ===
> Name: Zinc-Tests-SvenVanCaekenberghe.151
> Author: SvenVanCaekenberghe
> Time: 2 August 2012, 11:27:58 am
> UUID: 3da15e83-c0ca-4066-a496-71d91393db01
> Ancestors: Zinc-Tests-SvenVanCaekenberghe.150
> 
> added new ZnChunkedReadStreamTests>>#testReadingBuffered to validate various 
> fixes to ZnChunkedReadStream>>#readInto:startingAt:count: (thx Chris Bailey 
> for reporting the problem)
> ===
> 
> --
> Sven Van Caekenberghe
> http://stfx.eu
> Smalltalk is the Red Pill
> 
> 
> 


Reply via email to