001 // Copyright 2008 Waterken Inc. under the terms of the MIT X license 002 // found at http://www.opensource.org/licenses/mit-license.html 003 package org.ref_send.promise; 004 005 import java.io.Serializable; 006 007 import org.joe_e.Struct; 008 import org.ref_send.Record; 009 import org.ref_send.deserializer; 010 import org.ref_send.name; 011 012 /** 013 * A return from a {@linkplain Eventual#spawn vat creation}. 014 */ 015 public class 016 Vat<T> extends Struct implements Record, Serializable { 017 static private final long serialVersionUID = 1L; 018 019 /** 020 * object created by the vat's maker 021 */ 022 public final T top; 023 024 /** 025 * destruct the vat 026 * <p> 027 * call like: <code>destruct.apply(null)</code> 028 * </p> 029 */ 030 public final Receiver<?> destruct; 031 032 /** 033 * Constructs an instance. 034 * @param top {@link #top} 035 * @param destruct {@link #destruct} 036 */ 037 public @deserializer 038 Vat(@name("top") final T top, 039 @name("destruct") final Receiver<?> destruct) { 040 this.top = top; 041 this.destruct = destruct; 042 } 043 }