package de.tum.in.www1.jReto.routing.packets; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; /** This enum represents the possible purposes of a direct connection - either to transmit routing information, or to be part of a user-requested routed connection. */ public enum ConnectionPurpose { UNKNOWN(0), /** Used for connections that are used to transmit routing metadata. */ ROUTING_DATA_EXCHANGE_CONNECTION(1), /** Used for user-requested connections that are routed. */ ROUTED_CONNECTION(2); private static final Map<Integer, ConnectionPurpose> intToTypeMap = new HashMap<Integer, ConnectionPurpose>(); static { for (ConnectionPurpose type : ConnectionPurpose.values()) { intToTypeMap.put(type.value, type); } } private final int value; ConnectionPurpose(int value) { this.value = value; } public static ConnectionPurpose fromRaw(int value) { ConnectionPurpose result = intToTypeMap.get(value); if (result == null) result = ConnectionPurpose.UNKNOWN; return result; } public static ConnectionPurpose fromData(ByteBuffer data) { if (data.remaining() < 4) return ConnectionPurpose.UNKNOWN; int value = data.getInt(); data.rewind(); return ConnectionPurpose.fromRaw(value); } public int toRaw() { return this.value; } }