/** * $Id: ConsumerData.java 1835 2013-05-16 02:00:50Z shijia.wxr $ */ package com.alibaba.rocketmq.common.protocol.heartbeat; import java.util.HashSet; import java.util.Set; import com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo; import com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo; import com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo; /** * @author vintage.wang@gmail.com shijia.wxr@taobao.com * */ public class ConsumerData { private String groupName; private ConsumeType consumeType; private MessageModel messageModel; private Set<SubscriptionData> subscriptionDataSet = new HashSet<SubscriptionData>(); public ConsumerInfo encode() { ConsumerInfo.Builder builder = ConsumerInfo.newBuilder(); builder.setGroupName(this.groupName); builder.setConsumeType(this.consumeType.name()); builder.setMessageModel(this.messageModel.name()); if (subscriptionDataSet != null) { int i = 0; for (SubscriptionData data : this.subscriptionDataSet) { builder.addSubscriptionInfos(i++, data.encode()); } } return builder.build(); } public static ConsumerData decode(ConsumerInfo info) { ConsumerData data = new ConsumerData(); data.setGroupName(info.getGroupName()); data.setConsumeType(ConsumeType.valueOf(info.getConsumeType())); data.setMessageModel(MessageModel.valueOf(info.getMessageModel())); // subscriptionDataSet for (SubscriptionInfo sub : info.getSubscriptionInfosList()) { data.getSubscriptionDataSet().add(SubscriptionData.decode(sub)); } return data; } public String getGroupName() { return groupName; } public void setGroupName(String groupName) { this.groupName = groupName; } public ConsumeType getConsumeType() { return consumeType; } public void setConsumeType(ConsumeType consumeType) { this.consumeType = consumeType; } public MessageModel getMessageModel() { return messageModel; } public void setMessageModel(MessageModel messageModel) { this.messageModel = messageModel; } public Set<SubscriptionData> getSubscriptionDataSet() { return subscriptionDataSet; } public void setSubscriptionDataSet(Set<SubscriptionData> subscriptionDataSet) { this.subscriptionDataSet = subscriptionDataSet; } @Override public String toString() { return "ConsumerData [groupName=" + groupName + ", consumeType=" + consumeType + ", messageModel=" + messageModel + ", subscriptionDataSet=" + subscriptionDataSet + "]"; } }