blob: b901beddd99634ff2fa873722a346d929cdb5321 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.dubbo.config;
import com.alibaba.dubbo.common.extension.ExtensionLoader;
import com.alibaba.dubbo.common.serialize.Serialization;
import com.alibaba.dubbo.common.status.StatusChecker;
import com.alibaba.dubbo.common.threadpool.ThreadPool;
import com.alibaba.dubbo.config.support.Parameter;
import com.alibaba.dubbo.remoting.Codec;
import com.alibaba.dubbo.remoting.Dispatcher;
import com.alibaba.dubbo.remoting.Transporter;
import com.alibaba.dubbo.remoting.exchange.Exchanger;
import com.alibaba.dubbo.remoting.telnet.TelnetHandler;
import com.alibaba.dubbo.rpc.Protocol;
import java.util.Map;
/**
* ProtocolConfig
*
* @export
*/
public class ProtocolConfig extends AbstractConfig {
private static final long serialVersionUID = 6913423882496634749L;
// protocol name
private String name;
// service IP address (when there are multiple network cards available)
private String host;
// service port
private Integer port;
// context path
private String contextpath;
// thread pool
private String threadpool;
// thread pool size (fixed size)
private Integer threads;
// IO thread pool size (fixed size)
private Integer iothreads;
// thread pool's queue length
private Integer queues;
// max acceptable connections
private Integer accepts;
// protocol codec
private String codec;
// serialization
private String serialization;
// charset
private String charset;
// payload max length
private Integer payload;
// buffer size
private Integer buffer;
// heartbeat interval
private Integer heartbeat;
// access log
private String accesslog;
// transfort
private String transporter;
// how information is exchanged
private String exchanger;
// thread dispatch mode
private String dispatcher;
// networker
private String networker;
// sever impl
private String server;
// client impl
private String client;
// supported telnet commands, separated with comma.
private String telnet;
// command line prompt
private String prompt;
// status check
private String status;
// whether to register
private Boolean register;
// parameters
// 是否长连接
// TODO add this to provider config
private Boolean keepAlive;
// TODO add this to provider config
private String optimizer;
private String extension;
// parameters
private Map<String, String> parameters;
// if it's default
private Boolean isDefault;
public ProtocolConfig() {
}
public ProtocolConfig(String name) {
setName(name);
}
public ProtocolConfig(String name, int port) {
setName(name);
setPort(port);
}
@Parameter(excluded = true)
public String getName() {
return name;
}
public void setName(String name) {
checkName("name", name);
this.name = name;
if (id == null || id.length() == 0) {
id = name;
}
}
@Parameter(excluded = true)
public String getHost() {
return host;
}
public void setHost(String host) {
checkName("host", host);
this.host = host;
}
@Parameter(excluded = true)
public Integer getPort() {
return port;
}
public void setPort(Integer port) {
this.port = port;
}
@Deprecated
@Parameter(excluded = true)
public String getPath() {
return getContextpath();
}
@Deprecated
public void setPath(String path) {
setContextpath(path);
}
@Parameter(excluded = true)
public String getContextpath() {
return contextpath;
}
public void setContextpath(String contextpath) {
checkPathName("contextpath", contextpath);
this.contextpath = contextpath;
}
public String getThreadpool() {
return threadpool;
}
public void setThreadpool(String threadpool) {
checkExtension(ThreadPool.class, "threadpool", threadpool);
this.threadpool = threadpool;
}
public Integer getThreads() {
return threads;
}
public void setThreads(Integer threads) {
this.threads = threads;
}
public Integer getIothreads() {
return iothreads;
}
public void setIothreads(Integer iothreads) {
this.iothreads = iothreads;
}
public Integer getQueues() {
return queues;
}
public void setQueues(Integer queues) {
this.queues = queues;
}
public Integer getAccepts() {
return accepts;
}
public void setAccepts(Integer accepts) {
this.accepts = accepts;
}
public String getCodec() {
return codec;
}
public void setCodec(String codec) {
if ("dubbo".equals(name)) {
checkMultiExtension(Codec.class, "codec", codec);
}
this.codec = codec;
}
public String getSerialization() {
return serialization;
}
public void setSerialization(String serialization) {
if ("dubbo".equals(name)) {
checkMultiExtension(Serialization.class, "serialization", serialization);
}
this.serialization = serialization;
}
public String getCharset() {
return charset;
}
public void setCharset(String charset) {
this.charset = charset;
}
public Integer getPayload() {
return payload;
}
public void setPayload(Integer payload) {
this.payload = payload;
}
public Integer getBuffer() {
return buffer;
}
public void setBuffer(Integer buffer) {
this.buffer = buffer;
}
public Integer getHeartbeat() {
return heartbeat;
}
public void setHeartbeat(Integer heartbeat) {
this.heartbeat = heartbeat;
}
public String getServer() {
return server;
}
public void setServer(String server) {
if ("dubbo".equals(name)) {
checkMultiExtension(Transporter.class, "server", server);
}
this.server = server;
}
public String getClient() {
return client;
}
public void setClient(String client) {
if ("dubbo".equals(name)) {
checkMultiExtension(Transporter.class, "client", client);
}
this.client = client;
}
public String getAccesslog() {
return accesslog;
}
public void setAccesslog(String accesslog) {
this.accesslog = accesslog;
}
public String getTelnet() {
return telnet;
}
public void setTelnet(String telnet) {
checkMultiExtension(TelnetHandler.class, "telnet", telnet);
this.telnet = telnet;
}
@Parameter(escaped = true)
public String getPrompt() {
return prompt;
}
public void setPrompt(String prompt) {
this.prompt = prompt;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
checkMultiExtension(StatusChecker.class, "status", status);
this.status = status;
}
public Boolean isRegister() {
return register;
}
public void setRegister(Boolean register) {
this.register = register;
}
public String getTransporter() {
return transporter;
}
public void setTransporter(String transporter) {
checkExtension(Transporter.class, "transporter", transporter);
this.transporter = transporter;
}
public String getExchanger() {
return exchanger;
}
public void setExchanger(String exchanger) {
checkExtension(Exchanger.class, "exchanger", exchanger);
this.exchanger = exchanger;
}
/**
* typo, switch to use {@link #getDispatcher()}
*
* @deprecated {@link #getDispatcher()}
*/
@Deprecated
@Parameter(excluded = true)
public String getDispather() {
return getDispatcher();
}
/**
* typo, switch to use {@link #getDispatcher()}
*
* @deprecated {@link #setDispatcher(String)}
*/
@Deprecated
public void setDispather(String dispather) {
setDispatcher(dispather);
}
public String getDispatcher() {
return dispatcher;
}
public void setDispatcher(String dispatcher) {
checkExtension(Dispatcher.class, "dispacther", dispatcher);
this.dispatcher = dispatcher;
}
public String getNetworker() {
return networker;
}
public void setNetworker(String networker) {
this.networker = networker;
}
public Map<String, String> getParameters() {
return parameters;
}
public void setParameters(Map<String, String> parameters) {
this.parameters = parameters;
}
public Boolean isDefault() {
return isDefault;
}
public void setDefault(Boolean isDefault) {
this.isDefault = isDefault;
}
public Boolean getKeepAlive() {
return keepAlive;
}
public void setKeepAlive(Boolean keepAlive) {
this.keepAlive = keepAlive;
}
public String getOptimizer() {
return optimizer;
}
public void setOptimizer(String optimizer) {
this.optimizer = optimizer;
}
public String getExtension() {
return extension;
}
public void setExtension(String extension) {
this.extension = extension;
}
public void destroy() {
if (name != null) {
ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(name).destroy();
}
}
/**
* Just for compatibility.
* It should be deleted in the next major version, say 2.7.x.
*/
@Deprecated
public static void destroyAll() {
DubboShutdownHook.getDubboShutdownHook().destroyAll();
}
}