package com.asgow.ciel.references; import java.io.FileInputStream; import java.io.ObjectInputStream; import com.asgow.ciel.executor.Ciel; import com.asgow.ciel.rpc.ReferenceUnavailableException; public class CielFuture<T> extends FutureReference { private static final long serialVersionUID = -4656221550083314411L; public CielFuture(Reference ref) { super(ref.getId()); } @SuppressWarnings("unchecked") public T get() { try { String filename = Ciel.RPC.getFilenameForReference(this); FileInputStream fis = new FileInputStream(filename); ObjectInputStream ois = new ObjectInputStream(fis); return (T) ois.readObject(); } catch (ReferenceUnavailableException rue) { throw rue; } catch (Exception e) { System.err.println("Error getting value from future."); e.printStackTrace(); throw new RuntimeException(e); } } }