[Pharo-project] Fuel serialization - feature/bug

Mariano Martinez Peck marianopeck at gmail.com
Tue Jun 14 03:35:55 EDT 2011


On Tue, Jun 14, 2011 at 12:56 AM, Yanni Chiu <yanni at rogers.com> wrote:

> On 13/06/11 5:49 PM, Mariano Martinez Peck wrote:
>
>>
>> Why the following is not enought?
>>
>> (FLSerializer on: myStream) serialize: myPRKernel.
>>
>> and
>>
>> (FLMaterializer on: myStream) materialize
>>
>
> Yes, that's pretty much the code. Except that it's in a test case that uses
> FSMemoryStore. The tests run a lot faster when writing to memory, instead of
> to disk.


Yes, but if you want to serialize in memory you can also use for example:

myStream := (MultiByteBinaryOrTextStream on: '').
(FLSerializer on: myStream) serialize: myPRKernel.

...

myStream reset.
(FLMaterializer on: myStream) materialize


That would use a stream in memory.

And even more, you can serialize in memory with Fuel this way:

testSerializationAndMaterializationInMemory
    | byteArray materializedObject |
    byteArray := FLSerializer serializeInMemory: 'mariano'.
    materializedObject := FLMaterializer materializeFromByteArray:
byteArray.
    self assert: materializedObject equals: 'mariano'.



>
>
>     The FSMemoryStore holds the "file" bytes in a ByteArray. During
>>    serialization, I got a stack trace with KeyNotFound due to
>>    FLSerializer>>nextPutReferenceTo: when the object is the "file"
>>    ByteArray.
>>
>>    Since this ByteArray is where the serialization is being written to,
>>
>>
>> mmmmmm so you are using a stream to serialize and such stream is also
>> being refenced from the object to serialize?
>>
>
> Yes, that's it - except that the stream is an FSWriteStream on a
> FSMemoryStore "file", which I think is an issue here. The PRKernel is
> holding an instance of PRFuelPersistency, which holds an FSReference. That
> FSReference happens to refer to a memory-based "file".
>
>
>


-- 
Mariano
http://marianopeck.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20110614/ca29cf4c/attachment-0001.html>


More information about the Pharo-dev mailing list