{% import "parse.java" as parse %} {% import "emit.java" as emit %} package ch.ethz.syslab.telesto.common.protocol; import java.nio.ByteBuffer; {% if message.contains_type("TelestoMessage") -%} import ch.ethz.syslab.telesto.common.model.Message; {% endif -%} {% if message.contains_type("TelestoQueue") -%} import ch.ethz.syslab.telesto.common.model.Queue; {% endif -%} {% if message.contains_type("TelestoErrorType") -%} import ch.ethz.syslab.telesto.common.util.ErrorType; {% endif -%} import ch.ethz.syslab.telesto.common.protocol.handler.PacketProcessingException; import ch.ethz.syslab.telesto.common.protocol.handler.ProtocolHandler; {% set name = message.__name__ + superclass %} /* * Do not edit this file! {# Ignore this, you're in the right place. #} * * Edit the template at tools/protocol/telesto/templates/packet.java instead. */ public class {{ name }} extends {{ superclass }} { {%- for field in message._fields.itervalues() if field.name != "packet_id" %} public {{ field.java_type }} {{ field.java_name }}; {%- endfor %} public {{ name }}() { } {%- if message._fields.__len__() > 1 %} {% set args = [] -%} {%- for field in message._fields.itervalues() if field.name != "packet_id" -%} {%- do args.append("%s %s" % (field.java_type, field.java_name)) -%} {%- endfor -%} public {{ name }}({{ args|join(", ") }}) { {%- for field in message._fields.itervalues() if field.name != "packet_id" %} this.{{ field.java_name }} = {{ field.java_name }}; {%- endfor %} } {%- endif %} {% set args = [] -%} {%- for field in message._fields.itervalues() -%} {%- do args.append("%s %s" % (field.java_type, field.java_name)) -%} {%- endfor -%} public {{ name }}({{ args|join(", ") }}) { {%- for field in message._fields.itervalues() %} this.{{ field.java_name }} = {{ field.java_name }}; {%- endfor %} } @Override public byte methodId() { return {{ message.method_id }}; } @Override public void emit(ByteBuffer buffer) { int lengthIndex = buffer.position(); buffer.position(lengthIndex + 2); buffer.put(methodId()); {%- for field in message._fields.itervalues() %} {{ emit.emit(field) }} {%- endfor %} buffer.putShort(lengthIndex, (short) (buffer.position() - lengthIndex - 2)); } @Override public void parse(ByteBuffer buffer) { {%- for field in message._fields.itervalues() %} {{ parse.parse(field) }} {%- endfor %} } @Override public {{ name }} newInstance() { return new {{ name }}(); } public Packet getHandled(ProtocolHandler handler) throws PacketProcessingException { return handler.handle(({{ name }}) this); } public String toString() { return "{{ name }}"; } }