DataPacker.java

package eu.javaexperience.datareprez;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

import eu.javaexperience.reflect.Mirror;

public class DataPacker
{
	protected ByteArrayOutputStream baos = new ByteArrayOutputStream();
	protected DataSender ds;
	
	public DataPacker(DataCommon prototype)
	{
		try
		{
			ds = prototype.newDataSender(baos);
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}
	
	public synchronized byte[] toSend(DataObject obj)
	{
		try
		{
			ds.send(obj);
		}
		catch (IOException e)
		{
			Mirror.throwSoftOrHardButAnyway(e);
		}
		
		byte[] ret = baos.toByteArray();
		baos.reset();
		return ret;
	}
}