/**
* $Id: AllRequestProcessor.java 1831 2013-05-16 01:39:51Z shijia.wxr $
*/
package com.alibaba.rocketmq.namesrv.processor;
import io.netty.channel.ChannelHandlerContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.rocketmq.common.MixAll;
import com.alibaba.rocketmq.common.protocol.MQProtos.MQRequestCode;
import com.alibaba.rocketmq.common.protocol.header.namesrv.GetRouteInfoRequestHeader;
import com.alibaba.rocketmq.common.protocol.header.namesrv.RegisterBrokerRequestHeader;
import com.alibaba.rocketmq.common.protocol.header.namesrv.RegisterOrderTopicRequestHeader;
import com.alibaba.rocketmq.common.protocol.header.namesrv.UnRegisterBrokerRequestHeader;
import com.alibaba.rocketmq.namesrv.NamesrvController;
import com.alibaba.rocketmq.namesrv.topic.TopicRuntimeDataManager;
import com.alibaba.rocketmq.remoting.exception.RemotingCommandException;
import com.alibaba.rocketmq.remoting.netty.NettyRequestProcessor;
import com.alibaba.rocketmq.remoting.protocol.RemotingCommand;
/**
* @author vintage.wang@gmail.com shijia.wxr@taobao.com
* @author lansheng.zj@taobao.com
*/
public class AllRequestProcessor implements NettyRequestProcessor {
private static final Logger log = LoggerFactory.getLogger(MixAll.NamesrvLoggerName);
private final NamesrvController namesrvController;
private TopicRuntimeDataManager topicInfoManager;
public AllRequestProcessor(final NamesrvController namesrvController, TopicRuntimeDataManager topicInfoManager) {
this.namesrvController = namesrvController;
this.topicInfoManager = topicInfoManager;
}
@Override
public RemotingCommand processRequest(ChannelHandlerContext ctx, RemotingCommand request)
throws RemotingCommandException {
MQRequestCode code = MQRequestCode.valueOf(request.getCode());
switch (code) {
case REGISTER_BROKER:
RegisterBrokerRequestHeader requestBrokerHeader =
(RegisterBrokerRequestHeader) request
.decodeCommandCustomHeader(RegisterBrokerRequestHeader.class);
return topicInfoManager.registerBroker(requestBrokerHeader.getBrokerAddr());
case REGISTER_BROKER_SINGLE:
RegisterBrokerRequestHeader requestBrokerSingleHeader =
(RegisterBrokerRequestHeader) request
.decodeCommandCustomHeader(RegisterBrokerRequestHeader.class);
return topicInfoManager.registerBrokerSingle(requestBrokerSingleHeader.getBrokerAddr());
case UNREGISTER_BROKER:
UnRegisterBrokerRequestHeader unRequestBrokerHeader =
(UnRegisterBrokerRequestHeader) request
.decodeCommandCustomHeader(UnRegisterBrokerRequestHeader.class);
return topicInfoManager.unRegisterBroker(unRequestBrokerHeader.getBrokerName());
case UNREGISTER_BROKER_SINGLE:
UnRegisterBrokerRequestHeader unRequestBrokerSingleHeader =
(UnRegisterBrokerRequestHeader) request
.decodeCommandCustomHeader(UnRegisterBrokerRequestHeader.class);
return topicInfoManager.unRegisterBrokerSingle(unRequestBrokerSingleHeader.getBrokerName());
case GET_BROKER_LIST:
break;
case REGISTER_ORDER_TOPIC:
RegisterOrderTopicRequestHeader registerOrderTopicHeader =
(RegisterOrderTopicRequestHeader) request
.decodeCommandCustomHeader(RegisterOrderTopicRequestHeader.class);
return topicInfoManager.registerOrderTopic(registerOrderTopicHeader.getTopic(),
registerOrderTopicHeader.getOrderTopicString());
case REGISTER_ORDER_TOPIC_SINGLE:
RegisterOrderTopicRequestHeader registerOrderTopicSingleHeader =
(RegisterOrderTopicRequestHeader) request
.decodeCommandCustomHeader(RegisterOrderTopicRequestHeader.class);
return topicInfoManager.registerOrderTopicSingle(registerOrderTopicSingleHeader.getTopic(),
registerOrderTopicSingleHeader.getOrderTopicString());
case UNREGISTER_ORDER_TOPIC:
break;
case GET_ORDER_TOPIC_LIST:
break;
case UPDATE_NAMESRV_CONFIG:
break;
case GET_NAMESRV_CONFIG:
break;
case GET_NAMESRV_RUNTIME_INFO:
break;
case GET_ROUTEINTO_BY_TOPIC:
GetRouteInfoRequestHeader getRouteInfoHeader =
(GetRouteInfoRequestHeader) request.decodeCommandCustomHeader(GetRouteInfoRequestHeader.class);
return topicInfoManager.getRouteInfoByTopic(getRouteInfoHeader.getTopic());
case SYNC_NAMESRV_RUNTIME_CONF:
return topicInfoManager.getTopicRuntimeData();
default:
break;
}
return null;
}
}