package com.dianping.pigeon.remoting.common.domain; /** * @author qi.yin * 2016/11/09 上午11:18. */ public enum CallMethod { SYNC((byte) 1, "sync"), CALLBACK((byte) 2, "callback"), FUTURE((byte) 3, "future"), ONEWAY((byte) 4, "oneway"); private byte code; private String name; private CallMethod(byte code, String name) { this.code = code; this.name = name; } public byte getCode() { return code; } public String getName() { return name; } public static CallMethod getCallMethod(byte code) { switch (code) { case 1: return SYNC; case 2: return CALLBACK; case 3: return FUTURE; case 4: return ONEWAY; default: throw new IllegalArgumentException("invalid callMethod code: " + code); } } public static CallMethod getCallMethod(String name) { if (SYNC.isSync(name)) { return SYNC; } else if (CALLBACK.isCallback(name)) { return CALLBACK; } else if (FUTURE.isFuture(name)) { return FUTURE; } else if (ONEWAY.isOneway(name)) { return ONEWAY; } else { throw new IllegalArgumentException("invalid callMethod name: " + name); } } public static boolean isSync(byte code) { return SYNC.getCode() == code; } public static boolean isSync(String name) { if (name == null) { return false; } return SYNC.getName().equals(name.toLowerCase()); } public static boolean isCallback(byte code) { return CALLBACK.getCode() == code; } public static boolean isCallback(String name) { if (name == null) { return false; } return CALLBACK.getName().equals(name.toLowerCase()); } public static boolean isFuture(byte code) { return FUTURE.getCode() == code; } public static boolean isFuture(String name) { if (name == null) { return false; } return FUTURE.getName().equals(name.toLowerCase()); } public static boolean isOneway(byte code) { return ONEWAY.getCode() == code; } public static boolean isOneway(String name) { if (name == null) { return false; } return ONEWAY.getName().equals(name.toLowerCase()); } }