[ https://issues.jboss.org/browse/JGRP-2122?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bela Ban resolved JGRP-2122.
----------------------------
Resolution: Done
> Streamable class might implement SizeStreamable
> -----------------------------------------------
>
> Key: JGRP-2122
> URL: https://issues.jboss.org/browse/JGRP-2122
> Project: JGroups
> Issue Type: Enhancement
> Reporter: Bela Ban
> Assignee: Bela Ban
> Fix For: 4.0
>
>
> Many classes implement Streamable, but also provide a serializedSize() method which returns the number of bytes needed for the serialized form.
> Methods like Util.streamableToBuffer() could benefit from this: instead of allocating a 512 byte buffer, which is either too big or needs to be resized later, we can allocate a buffer of the exact size.
> We should therefore make all classes implementing Streamable instead implement SizeStreamable.
> Code that makes use of this:
> {code:java|title=Util.streamableToBuffer()|borderStyle=solid}
> public static Buffer streamableToBuffer(Streamable obj) {
> int expected_size=obj instanceof SizeStreamable?
> ((SizeStreamable)obj).serializedSize() +1 : 512;
> final ByteArrayDataOutputStream out=new ByteArrayDataOutputStream(expected_size);
> try {
> Util.writeStreamable(obj,out);
> return out.getBuffer();
> }
> catch(Exception ex) {
> return null;
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)