/** * $Id: RemotingServer.java 1831 2013-05-16 01:39:51Z shijia.wxr $ */ package com.alibaba.rocketmq.remoting; import io.netty.channel.Channel; import java.util.concurrent.Executor; import com.alibaba.rocketmq.remoting.exception.RemotingSendRequestException; import com.alibaba.rocketmq.remoting.exception.RemotingTimeoutException; import com.alibaba.rocketmq.remoting.exception.RemotingTooMuchRequestException; import com.alibaba.rocketmq.remoting.netty.NettyRequestProcessor; import com.alibaba.rocketmq.remoting.protocol.RemotingCommand; /** * Զ��ͨ�ţ�Server�ӿ� * * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public interface RemotingServer { public void start() throws InterruptedException; public void registerProcessor(final int requestCode, final NettyRequestProcessor processor, final Executor executor); public void registerDefaultProcessor(final NettyRequestProcessor processor, final Executor executor); public RemotingCommand invokeSync(final Channel channel, final RemotingCommand request, final long timeoutMillis) throws InterruptedException, RemotingSendRequestException, RemotingTimeoutException; public void invokeAsync(final Channel channel, final RemotingCommand request, final long timeoutMillis, final InvokeCallback invokeCallback) throws InterruptedException, RemotingTooMuchRequestException, RemotingTimeoutException, RemotingSendRequestException; public void invokeOneway(final Channel channel, final RemotingCommand request, final long timeoutMillis) throws InterruptedException, RemotingTooMuchRequestException, RemotingTimeoutException, RemotingSendRequestException; public void shutdown(); }