/**
* $Id: TopicConfig.java 1831 2013-05-16 01:39:51Z shijia.wxr $
*/
package com.alibaba.rocketmq.common;
/**
* Topic����
*
* @author vintage.wang@gmail.com shijia.wxr@taobao.com
*/
public class TopicConfig {
public static int DefaultReadQueueNums = 16;
public static int DefaultWriteQueueNums = 16;
private static final String SEPARATOR = " ";
private String topicName;
private int readQueueNums = DefaultReadQueueNums;
private int writeQueueNums = DefaultWriteQueueNums;
private int perm = MixAll.PERM_READ | MixAll.PERM_WRITE;
private TopicFilterType topicFilterType = TopicFilterType.MULTI_TAG;
public TopicConfig(String topicName) {
this.topicName = topicName;
}
public TopicConfig(String topicName, int readQueueNums, int writeQueueNums, int perm) {
this.topicName = topicName;
this.readQueueNums = readQueueNums;
this.writeQueueNums = writeQueueNums;
this.perm = perm;
}
public String encode() {
StringBuilder sb = new StringBuilder();
// 1
sb.append(this.topicName);
sb.append(SEPARATOR);
// 2
sb.append(this.readQueueNums);
sb.append(SEPARATOR);
// 3
sb.append(this.writeQueueNums);
sb.append(SEPARATOR);
// 4
sb.append(this.perm);
sb.append(SEPARATOR);
// 5
sb.append(this.topicFilterType);
return sb.toString();
}
public boolean decode(final String in) {
String[] strs = in.split(SEPARATOR);
if (strs != null && strs.length == 5) {
this.topicName = strs[0];
this.readQueueNums = Integer.parseInt(strs[1]);
this.writeQueueNums = Integer.parseInt(strs[2]);
this.perm = Integer.parseInt(strs[3]);
this.topicFilterType = TopicFilterType.valueOf(strs[4]);
return true;
}
return false;
}
public String getTopicName() {
return topicName;
}
public void setTopicName(String topicName) {
this.topicName = topicName;
}
public int getReadQueueNums() {
return readQueueNums;
}
public void setReadQueueNums(int readQueueNums) {
this.readQueueNums = readQueueNums;
}
public int getWriteQueueNums() {
return writeQueueNums;
}
public void setWriteQueueNums(int writeQueueNums) {
this.writeQueueNums = writeQueueNums;
}
public int getPerm() {
return perm;
}
public void setPerm(int perm) {
this.perm = perm;
}
public TopicFilterType getTopicFilterType() {
return topicFilterType;
}
public void setTopicFilterType(TopicFilterType topicFilterType) {
this.topicFilterType = topicFilterType;
}
@Override
public boolean equals(Object obj) {
TopicConfig other = (TopicConfig) obj;
if (other != null) {
return this.topicName.equals(other.topicName) && this.readQueueNums == other.readQueueNums
&& this.writeQueueNums == other.writeQueueNums && this.perm == other.perm
&& this.topicFilterType == other.topicFilterType;
}
return false;
}
@Override
public String toString() {
return "TopicConfig [topicName=" + topicName + ", readQueueNums=" + readQueueNums + ", writeQueueNums="
+ writeQueueNums + ", perm=" + MixAll.perm2String(perm) + ", topicFilterType=" + topicFilterType
+ "]";
}
}