Ice.InputStream is = IceUtil.createSafeInputStream(ic, data); final ShareData[] shareData = new ShareData[1]; try {
public final byte[] parse(ShareData data) { Ice.OutputStream os = IceUtil.createSafeOutputStream(ic); byte[] bytes = null; try { os.writeObject(data); os.writePendingObjects(); bytes = os.finished(); } finally { os.destroy(); } return bytes; }
byte[] parse(JobParams params, Ice.Current current) { Ice.OutputStream os = IceUtil.createSafeOutputStream( current.adapter.getCommunicator()); byte[] bytes = null; try { os.writeObject(params); os.writePendingObjects(); bytes = os.finished(); } finally { os.destroy(); } return bytes; }
JobParams parse(byte[] data, Ice.Current current) { if (data == null) { return null; // EARLY EXIT! } Ice.InputStream is = IceUtil.createSafeInputStream( current.adapter.getCommunicator(), data); final JobParams[] params = new JobParams[1]; try { is.readObject(new ReadObjectCallback() { public void invoke(Ice.Object arg0) { params[0] = (JobParams) arg0; } }); is.readPendingObjects(); } catch (UnmarshalOutOfBoundsException oob) { // ok, returning null. } catch (Ice.MarshalException me) { // less specific than oob; not great, but returning null. #5662 log.error(String.format("MarshalException: %s (len=%s)", me.reason, data.length)); } catch (OutOfMemoryError oom) { // Not ok, but not much we can do. // This is caused by changes to slice files. // See: log.warn("http://www.zeroc.com/forums/bug-reports/4782-3-3-1-outofmemory-client-when-slice-definition-modified.html"); } finally { is.destroy(); } return params[0]; }