namespace Eva { public class Port : Object, Term { public string node {get; construct;} public uint id {get; construct;} public uint creation {get; construct;} internal Port(Erl.Port port) { this.create(binary_to_string(port.node, Erl.MAXATOMLEN), port.id, port.creation); } private Port.create(string node0, uint id0, uint creation0) { Object(node: node0, id: id0, creation: creation0); } public string to_string() { return "#Port"; } protected bool do_match(Term o, Gee.Map vars, Gee.Map aliases) { if(o is Var) { return o.do_match(this, vars, aliases); } if(!(o is Port)) return false; Port p = o as Port; return (node == p.node && id == p.id && creation == p.creation); } internal void encode(Buffer buffer) { Erl.Port port = Erl.Port(); char[]? nodedata = string_to_binary(node); assert(nodedata != null); Memory.copy(port.node, nodedata, int.min(Erl.MAXATOMLEN, nodedata.length)); port.node[int.min(Erl.MAXATOMLEN, nodedata.length)] = 0; port.id = id; port.creation = creation; buffer.buffer.encode_port(port); } } }