Thanks Mariano, That's pretty much what I want, but... why to expose the visitor interface? ;) Just to give a little feedback of what I have in my mind: mySerializer setEngine: ExternalCompressor for: ( MyClass -> #myStringIVar ) or mySerializer setEngine: ExternalCompressor for: incomingStream Now with machines generating daily 6 TBytes of raw data, one of the keys will be data compression. 2011/10/10 Mariano Martinez Peck <marianopeck@gmail.com>:
On Mon, Oct 10, 2011 at 9:35 PM, Hernán Morales Durand <hernan.morales@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