On Tue, Oct 11, 2011 at 12:56 AM, Hernán Morales Durand <
hernan.mora...@gmail.com> wrote:

> Thanks Mariano,
>
> That's pretty much what I want, but... why to expose the visitor interface?
> ;)
>

Good question. Honesty, it was the only way we have found to do it with
Fuel. I think (but I am not sure) that one of the drawbacks of the pickle
format is that it analysis phase (as we call it in Fuel) make some hooks
more complicated to implement than a classic serializer.


> Just to give a little feedback of what I have in my mind:
>
> mySerializer setEngine: ExternalCompressor for: ( MyClass -> #myStringIVar
> )
>
>
Well, you can also create an specific Fuel cluster for MyClass that does
exactly that. Basically you have to create FLMyClassCluster, implement
methods like #serializeWith: and #materializeFrom:  and there you
serialize/materialize the specific #myStringIVar with a special way and the
rest as normal. Then you subclass the FLDefaultMapper, say YourMapper and
you implement #visitXXX
Then you have to implement MyClass >> visitXXX.
Of course, you should be able to generalize such cluster and be able to
reuse it for different classes or instVars.

I am not saying this is the best way. I am just telling you one possible
solution you can do by extending Fuel for your needs. Of course, you may
need to understand how Fuel works first. But of course, we can help if you
want.


> or
>
> mySerializer setEngine: ExternalCompressor for: incomingStream
>
> Now with machines generating daily 6 TBytes of raw data, one of the
> keys will be data compression.
>


it looks like ;)



> 2011/10/10 Mariano Martinez Peck <marianop...@gmail.com>:
> >
> >
> > On Mon, Oct 10, 2011 at 9:35 PM, Hernán Morales Durand
> > <hernan.mora...@gmail.com> wrote:
> >>
> >> Is there any serializer (Fuel/StOMP/Ma object
> >> serialization/BOSS/SRP/SIXX??) which let me attach an external
> >> compressor/decompressor for specific Strings to the
> >> serialization/deserialization process?
> >
> > In Fuel you can do:
> >
> > String >> fuelSubstitution
> >       ^ ExternalCompressor compress: self
> >
> > String >> fuelAccept: aVisitor
> >    ^ (ExternalCompressor shouldCompressString: self)
> >    ifTrue: [aVisitor visitSubstitution: self]
> >    ifFalse: [super fuelAccept: aVisitor]
> >
> > But the problem is that if #compress: answers an instance of String, you
> > should be careful that if #shouldCompressString:  asnwers true to the
> > compressed string, then you will end up in an infinitive loop.
> >
> > See: http://rmod.lille.inria.fr/web/pier/software/Fuel/Hooks and
> > FLHookedSubstitutionTest
> >
> > I think StOMP should support this as well:
> > http://stomp.smalltalk-users.jp/home/how-to-use-stomp/hook-methods
> >
> > The previous hook you let you replace the original String with its
> > compression during serialization. Which make sense because if you are
> going
> > to compress it is better to do it during serialization.
> >
> >> With external I mean it could
> >> be in a separate binary (I could arrange the binding though).
> >
> > I am not sure if I understood.
> >
> >
> >
> >>
> >> Thanks
> >>
> >> Hernán
> >>
> >
> >
> >
> > --
> > Mariano
> > http://marianopeck.wordpress.com
> >
> >
>
>


-- 
Mariano
http://marianopeck.wordpress.com

Reply via email to