// Path: network/netty/src/main/java/se/sics/gvod/common/msgs/MessageEncodingException.java
// public class MessageEncodingException extends Exception {
// 
// 	private static final long serialVersionUID = -3078825718180083408L;
// 
// 	public MessageEncodingException(String mesg) {
// 		super(mesg);
// 	}
// 
// }


import io.netty.buffer.ByteBuf;
import se.sics.gvod.common.hp.HPMechanism;
import se.sics.gvod.common.hp.HPRole;
import se.sics.gvod.common.msgs.MessageEncodingException;
import se.sics.gvod.net.BaseMsgFrameDecoder;
import se.sics.gvod.net.VodAddress;
import se.sics.gvod.net.msgs.RewriteableMsg;
import se.sics.gvod.net.util.UserTypesEncoderFactory;
import se.sics.gvod.timer.ScheduleTimeout;
import se.sics.gvod.timer.Timeout;
import se.sics.gvod.timer.TimeoutId;
        }

        public HPMechanism getHolePunchingMechanism()
        {
            return holePunchingMechanism;
        }

        public VodAddress getOpenedHole()
        {
            return openedHole;
        }

        @Override
	public int getSize()
	{
		return super.getHeaderSize()
                        + UserTypesEncoderFactory.ADDRESS_LEN
                        + 1 /* HPMechanism size */
                        + 2 /* HPRole size */
                        + 2 /* prp_prp_interleavedPort */
                        ;
	}


        @Override
        public byte getOpcode() {
            return BaseMsgFrameDecoder.GO_MSG;
        }

        @Override
// Path: network/netty/src/main/java/se/sics/gvod/common/msgs/MessageEncodingException.java
// public class MessageEncodingException extends Exception {
// 
// 	private static final long serialVersionUID = -3078825718180083408L;
// 
// 	public MessageEncodingException(String mesg) {
// 		super(mesg);
// 	}
// 
// }


// Path: network/netty/src/main/java/se/sics/gvod/hp/msgs/GoMsg.java
import io.netty.buffer.ByteBuf;
import se.sics.gvod.common.hp.HPMechanism;
import se.sics.gvod.common.hp.HPRole;
import se.sics.gvod.common.msgs.MessageEncodingException;
import se.sics.gvod.net.BaseMsgFrameDecoder;
import se.sics.gvod.net.VodAddress;
import se.sics.gvod.net.msgs.RewriteableMsg;
import se.sics.gvod.net.util.UserTypesEncoderFactory;
import se.sics.gvod.timer.ScheduleTimeout;
import se.sics.gvod.timer.Timeout;
import se.sics.gvod.timer.TimeoutId;

        }

        public HPMechanism getHolePunchingMechanism()
        {
            return holePunchingMechanism;
        }

        public VodAddress getOpenedHole()
        {
            return openedHole;
        }

        @Override
	public int getSize()
	{
		return super.getHeaderSize()
                        + UserTypesEncoderFactory.ADDRESS_LEN
                        + 1 /* HPMechanism size */
                        + 2 /* HPRole size */
                        + 2 /* prp_prp_interleavedPort */
                        ;
	}


        @Override
        public byte getOpcode() {
            return BaseMsgFrameDecoder.GO_MSG;
        }

        @Override
        public ByteBuf toByteArray() throws MessageEncodingException {