/**
* Dianping.com Inc.
* Copyright (c) 2003-2013 All Rights Reserved.
*/
package com.dianping.pigeon.remoting.common.util;
import java.util.regex.Pattern;
import com.dianping.pigeon.config.ConfigChangeListener;
import com.dianping.pigeon.config.ConfigManagerLoader;
public final class Constants {
public Constants() {
}
public static final Pattern COMMA_SPLIT_PATTERN = Pattern.compile("\\s*[,]+\\s*");
public static final int MESSAGE_TYPE_HEART = 1;
public static final int MESSAGE_TYPE_SERVICE = 2;
public static final int MESSAGE_TYPE_EXCEPTION = 3;
public static final int MESSAGE_TYPE_SERVICE_EXCEPTION = 4;
public static final int MESSAGE_TYPE_HEALTHCHECK = 5;
public static final int MESSAGE_TYPE_SCANNER_HEART = 6;
public static final int CALLTYPE_REPLY = 1;
public static final int CALLTYPE_NOREPLY = 2;
public static final int CALLTYPE_MANUAL = 3;
public static final int COMPRESS_TYPE_NONE = 0;
public static final int COMPRESS_TYPE_SNAPPY = 1;
public static final int COMPRESS_TYPE_GZIP = 2;
public static final String PROCESS_MODEL_DEFAULT = "default";
public static final String PROCESS_MODEL_THREAD = "thread";
public static final String PROCESS_MODEL_JACTOR = "jactor";
public static final String CALL_SYNC = "sync";
public static final String CALL_CALLBACK = "callback";
public static final String CALL_ONEWAY = "oneway";
public static final String CALL_FUTURE = "future";
public static final String CLUSTER_FAILFAST = "failfast";
public static final String CLUSTER_FAILOVER = "failover";
public static final String CLUSTER_FAILSAFE = "failsafe";
public static final String CLUSTER_FORKING = "forking";
public static final String SERIALIZE_JAVA = "java";
public static final String SERIALIZE_HESSIAN = "hessian";
public static final String SERIALIZE_HESSIAN1 = "hessian1";
public static final String SERIALIZE_PROTOBUF = "protobuf";
public static final String SERIALIZE_JSON = "json";
public static final byte MESSAGE_HEAD_FIRST = 57;
public static final byte MESSAGE_HEAD_SECOND = 58;
public static final byte EXPAND_FLAG_FIRST = 29;
public static final byte EXPAND_FLAG_SECOND = 30;
public static final byte EXPAND_FLAG_THIRD = 31;
public static final int ATTACHMENT_RETRY = 1;
public static final int ATTACHMENT_BYTEBUFFER = 2;
public static final int ATTACHMENT_REQUEST_SEQ = 11;
public static final String TRANSFER_NULL = "NULL";
public static final String REQ_ATTACH_WRITE_BUFF_LIMIT = "WRITE_BUFF_LIMIT";
public static final int VERSION_150 = 150;
public static final String REQUEST_CREATE_TIME = "requestCreateTime";
public static final String REQUEST_TIMEOUT = "requestTimeout";
public static final String REQUEST_FIRST_FLAG = "requestFirstFlag";
public static final String ECHO_METHOD = "$echo";
public static final int DEFAULT_FAILOVER_RETRY = 1;
public static final boolean DEFAULT_FAILOVER_TIMEOUT_RETRY = false;
public static final String CONFIG_CLUSTER_CLUSTER = "cluster";
public static final String CONFIG_CLUSTER_RETRY = "retry";
public static final String CONFIG_CLUSTER_TIMEOUT_RETRY = "timeout-retry";
public static final String CONTEXT_FUTURE = "Context-Future";
public static final String CONTEXT_SERVER_COST = "Context-Server-Cost";
// Deafult value for the above keys
public static final String DEFAULT_GROUP = "";
public static final String REQUEST_KEY_TOKEN = "@s";
public static final String REQUEST_KEY_TIMESTAMP = "@t";
public static final String REQUEST_KEY_VERSION = "@v";
public static final String HEART_TASK_SERVICE = "HeartbeatService/";
public static final String HEART_TASK_METHOD = "heartbeat";
public static final String KEY_LOADBALANCE = "pigeon.loadbalance.defaulttype";
public static final String KEY_RECONNECT_INTERVAL = "pigeon.reconnect.interval";
public static final String KEY_INVOKER_HEARTBEAT_ENABLE = "pigeon.invoker.heartbeat.enable";
public static final String KEY_HEARTBEAT_INTERVAL = "pigeon.heartbeat.interval";
public static final String KEY_HEARTBEAT_TIMEOUT = "pigeon.heartbeat.timeout";
public static final String KEY_HEARTBEAT_DEADTHRESHOLD = "pigeon.heartbeat.dead.threshold";
public static final String KEY_HEARTBEAT_HEALTHTHRESHOLD = "pigeon.heartbeat.health.threshold";
public static final String KEY_HEARTBEAT_AUTOPICKOFF = "pigeon.heartbeat.autopickoff";
public static final String KEY_SERVICE_NAMESPACE = "pigeon.service.namespace";
public static final String KEY_INVOKER_MAXREQUESTS = "pigeon.invoker.maxrequests";
public static final String KEY_PROVIDER_COREPOOLSIZE = "pigeon.provider.pool.coresize";
public static final String KEY_PROVIDER_MAXPOOLSIZE = "pigeon.provider.pool.maxsize";
public static final String KEY_PROVIDER_WORKQUEUESIZE = "pigeon.provider.pool.queuesize";
public static final String KEY_RESPONSE_COREPOOLSIZE = "pigeon.response.pool.coresize";
public static final String KEY_RESPONSE_MAXPOOLSIZE = "pigeon.response.pool.maxsize";
public static final String KEY_RESPONSE_WORKQUEUESIZE = "pigeon.response.pool.queuesize";
public static final String KEY_INVOKER_TIMEOUT = "pigeon.invoker.timeout";
public static final String KEY_DEFAULT_WRITE_BUFF_LIMIT = "pigeon.channel.writebuff.defaultlimit";
public static final String KEY_NETTY_CONNECTTIMEOUT = "pigeon.netty.connecttimeout";
public static final String KEY_CHANNEL_WRITEBUFFHIGH = "pigeon.channel.writebuff.high";
public static final String KEY_CHANNEL_WRITEBUFFLOW = "pigeon.channel.writebuff.low";
public static final String KEY_INVOKER_NETTYBOSSCOUNT = "pigeon.invoker.netty.bosscount";
public static final String KEY_INVOKER_NETTYWORKERCOUNT = "pigeon.invoker.netty.workercount";
public static final String KEY_CHANNEL_POOL_INITIAL_SIZE = "pigeon.channel.pool.initial.size";
public static final String KEY_CHANNEL_POOL_NORMAL_SIZE = "pigeon.channel.pool.normal.size";
public static final String KEY_CHANNEL_POOL_MAX_ACTIVE = "pigeon.channel.pool.max.active";
public static final String KEY_CHANNEL_POOL_MAX_WAIT = "pigeon.channel.pool.max.wait";
public static final String KEY_CHANNEL_POOL_TIME_BETWEEN_CHECKER_MILLIS = "pigeon.channel.pool.timeBetweenCheckerMillis";
public static final String KEY_NOTIFY_ENABLE = "pigeon.notify.enable";
public static final String KEY_HEARTBEAT_ENABLE = "pigeon.heartbeat.enable";
public static final String KEY_TEST_ENABLE = "pigeon.test.enable";
public static final String KEY_PROVIDER_HEARTBEAT_INTERNAL = "pigeon.provider.heartbeat.internal";
public static final String KEY_REGIONPOLICY = "pigeon.regionpolicy.defaulttype";
public static final String KEY_CODEC_COMPRESS_ENABLE = "pigeon.codec.compress.enable";
public static final String KEY_CODEC_COMPRESS_THRESHOLD = "pigeon.codec.compress.threshold";
public static final String KEY_CODEC_COMPRESS_TYPE = "pigeon.codec.compress.type";
public static final String KEY_CODEC_CHECKSUM_ENABLE = "pigeon.codec.checksum.enable";
public static final int DEFAULT_INVOKER_TIMEOUT = 1000;
public static final int DEFAULT_PROVIDER_COREPOOLSIZE = 60;
public static final int DEFAULT_PROVIDER_MAXPOOLSIZE = 500;
public static final int DEFAULT_PROVIDER_WORKQUEUESIZE = 1000;
public static final int DEFAULT_RESPONSE_COREPOOLSIZE = 10;
public static final int DEFAULT_RESPONSE_MAXPOOLSIZE = 100;
public static final int DEFAULT_RESPONSE_WORKQUEUESIZE = 800;
public static final boolean DEFAULT_INVOKER_HEARTBEAT_ENABLE = true;
public static final int DEFAULT_RECONNECT_INTERVAL = 5000;
public static final int DEFAULT_HEARTBEAT_INTERVAL = 3000;
public static final int DEFAULT_HEARTBEAT_TIMEOUT = 3000;
public static final int DEFAULT_HEARTBEAT_DEADTHRESHOLD = 5;
public static final int DEFAULT_HEARTBEAT_HEALTHTHRESHOLD = 5;
public static final boolean DEFAULT_HEARTBEAT_AUTOPICKOFF = true;
public static final int DEFAULT_NETTY_CONNECTTIMEOUT = 2000;
public static final int DEFAULT_CHANNEL_WRITEBUFFHIGH = 35 * 1024 * 1024;
public static final int DEFAULT_CHANNEL_WRITEBUFFLOW = 25 * 1024 * 1024;
public static final int DEFAULT_INVOKER_NETTYBOSSCOUNT = 1;
public static final int DEFAULT_INVOKER_NETTYWORKERCOUNT = Runtime.getRuntime().availableProcessors() * 2;
public static final boolean DEFAULT_WRITE_BUFF_LIMIT = false;
public static final int DEFAULT_CHANNEL_POOL_INITIAL_SIZE = 1;
public static final int DEFAULT_CHANNEL_POOL_NORMAL_SIZE = 1;
public static final int DEFAULT_CHANNEL_POOL_MAX_ACTIVE = 5;
public static final int DEFAULT_CHANNEL_POOL_MAX_WAIT = 2000;
public static final int DEFAULT_CHANNEL_POOL_TIME_BETWEEN_CHECKER_MILLIS = 2000;
public static final String DEFAULT_PROCESS_TYPE = "threadpool";
public static final boolean DEFAULT_NOTIFY_ENABLE = false;
public static final boolean DEFAULT_TEST_ENABLE = true;
public static final int DEFAULT_WEIGHT_STARTDELAY = 30000;
public static final int DEFAULT_PROVIDER_HEARTBEAT_INTERNAL = 60000;
public static final boolean DEFAULT_CODEC_COMPRESS_ENABLE = false;
public static final int DEFAULT_CODEC_COMPRESS_THRESHOLD = 5000;
public static final byte DEFAULT_CODEC_COMPRESS_TYPE = (byte) 1;
public static final boolean DEFAULT_CODEC_CHECKSUM_ENABLE = false;
public static final String PROTOCOL_HTTP = "http";
public static final String PROTOCOL_DEFAULT = "default";
public static final String KEY_UNPUBLISH_WAITTIME = "pigeon.unpublish.waittime";
public static final int DEFAULT_UNPUBLISH_WAITTIME = 5000;
public static final String KEY_ONLINE_WHILE_INITIALIZED = "pigeon.online.whileinitialized";
public static final boolean DEFAULT_ONLINE_WHILE_INITIALIZED = false;
public static final boolean DEFAULT_TIMEOUT_CANCEL = false;
public static final int DEFAULT_STRING_MAXLENGTH = 1000;
public static final String KEY_STRING_MAXLENGTH = "pigeon.string.maxlength";
public static final int DEFAULT_STRING_MAXITEMS = 500;
public static final String KEY_STRING_MAXITEMS = "pigeon.string.maxitems";
public static final boolean DEFAULT_ONLINE_AUTO = true;
public static final String KEY_ONLINE_AUTO = "pigeon.online.auto";
public static final String KEY_WEIGHT_INITIAL = "pigeon.weight.initial";
public static final int DEFAULT_WEIGHT_INITIAL = 0;
public static final String KEY_WEIGHT_DEFAULT = "pigeon.weight.default";
public static final int DEFAULT_WEIGHT_DEFAULT = 1;
public static final String KEY_AUTOREGISTER_ENABLE = "pigeon.autoregister.enable";
public static final String KEY_AUTOPUBLISH_ENABLE = "pigeon.autopublish.enable";
public static final String KEY_AUTOUNPUBLISH_ENABLE = "pigeon.autounpublish.enable";
public static final String KEY_INVOKER_TRACE_ENABLE = "pigeon.invoker.trace.enable";
public static final String KEY_PROVIDER_TRACE_ENABLE = "pigeon.provider.trace.enable";
public static final boolean DEFAULT_INVOKER_TRACE_ENABLE = true;
public static final boolean DEFAULT_PROVIDER_TRACE_ENABLE = true;
public static final String KEY_LOG_PARAMETER = "pigeon.log.parameters";
public static final String Key_REPLY_MANUAL = "pigeon.provider.reply.manual";
public static final String KEY_MONITOR_ENABLE = "pigeon.monitor.enabled";
public static final int WEIGHT_INITIAL = ConfigManagerLoader.getConfigManager()
.getIntValue(Constants.KEY_WEIGHT_INITIAL, Constants.DEFAULT_WEIGHT_INITIAL);
public static final int WEIGHT_DEFAULT = ConfigManagerLoader.getConfigManager()
.getIntValue(Constants.KEY_WEIGHT_DEFAULT, Constants.DEFAULT_WEIGHT_DEFAULT);
public static final boolean LOG_PARAMETERS = ConfigManagerLoader.getConfigManager()
.getBooleanValue(KEY_LOG_PARAMETER, false);
public volatile static boolean REPLY_MANUAL = ConfigManagerLoader.getConfigManager().getBooleanValue(Key_REPLY_MANUAL,
false);
public static final boolean MONITOR_ENABLE = ConfigManagerLoader.getConfigManager()
.getBooleanValue(KEY_MONITOR_ENABLE, true);
public static final int PROVIDER_POOL_CORE_SIZE = ConfigManagerLoader.getConfigManager()
.getIntValue(Constants.KEY_PROVIDER_COREPOOLSIZE, Constants.DEFAULT_PROVIDER_COREPOOLSIZE);
public static final int PROVIDER_POOL_MAX_SIZE = ConfigManagerLoader.getConfigManager()
.getIntValue(Constants.KEY_PROVIDER_MAXPOOLSIZE, Constants.DEFAULT_PROVIDER_MAXPOOLSIZE);
public static final int PROVIDER_POOL_QUEUE_SIZE = ConfigManagerLoader.getConfigManager()
.getIntValue(Constants.KEY_PROVIDER_WORKQUEUESIZE, Constants.DEFAULT_PROVIDER_WORKQUEUESIZE);
public static final String KEY_SERVICE_SHARED = "pigeon.provider.service.shared";
public static final boolean DEFAULT_SERVICE_SHARED = true;
public static final String CONTEXT_KEY_CLIENT_IP = "CLIENT_IP";
public static final String CONTEXT_KEY_CLIENT_APP = "CLIENT_APP";
public static final String CONTEXT_KEY_SOURCE_IP = "SOURCE_IP";
public static final String CONTEXT_KEY_SOURCE_APP = "SOURCE_APP";
public static final String CONTEXT_KEY_TIMEOUT_MILLIS = "TIMEOUT_MILLIS";
public static final String CONTEXT_KEY_CREATE_TIME_MILLIS = "CREATE_TIME_MILLIS";
public static final boolean isSupportedNewProtocol() {
return ConfigManagerLoader.getConfigManager().getBooleanValue("pigeon.mns.host.support.new.protocol", true);
}
static {
ConfigManagerLoader.getConfigManager().registerConfigChangeListener(new InnerConfigChangeListener());
}
private static class InnerConfigChangeListener implements ConfigChangeListener {
@Override
public void onKeyUpdated(String key, String value) {
if (key.endsWith("pigeon.provider.reply.manual")) {
try {
REPLY_MANUAL = Boolean.valueOf(value);
} catch (RuntimeException e) {
}
}
}
@Override
public void onKeyAdded(String key, String value) {
}
@Override
public void onKeyRemoved(String key) {
}
}
}