class YarRpcProtocol extends AbstractProtocol {
    private ConcurrentHashMap<String, ProviderMessageRouter> ipPort2RequestRouter = new ConcurrentHashMap<String, ProviderMessageRouter>();

    @Override
    protected <T> Exporter<T> createExporter(Provider<T> provider, URL url) {
        
        return new YarExporter<T>(url, provider, this);
    }

    @Override
    protected <T> Referer<T> createReferer(Class<T> clz, URL url, URL serviceUrl) {
        //TODO
        throw new MotanFrameworkException("not yet implemented!");
    }

    public ProviderMessageRouter initRequestRouter(URL url, Provider<?> provider) {
        String ipPort = url.getServerPortStr();
        ProviderMessageRouter requestRouter = ipPort2RequestRouter.get(ipPort);
        if (requestRouter == null) {
            ipPort2RequestRouter.putIfAbsent(ipPort, new YarMessageRouter(url));
            requestRouter = ipPort2RequestRouter.get(ipPort);
        }
        requestRouter.addProvider(provider);
        return requestRouter;
    }
    
    public void unexport(URL url, Provider<?> provider){<FILL_FUNCTION_BODY>}

}

        String protocolKey = MotanFrameworkUtil.getProtocolKey(url);
        String ipPort = url.getServerPortStr();

        Exporter<?> exporter = (Exporter<?>) exporterMap.remove(protocolKey);

        if (exporter != null) {
            exporter.destroy();
        }

        synchronized (ipPort2RequestRouter) {
            ProviderMessageRouter requestRouter = ipPort2RequestRouter.get(ipPort);

            if (requestRouter != null) {
                requestRouter.removeProvider(provider);
            }
        }

        LoggerUtil.info("yarRpcExporter unexport Success: url={}", url);
    
<methods>public non-sealed void <init>() ,public void destroy() ,public Exporter<T> export(Provider<T>, com.weibo.api.motan.rpc.URL) ,public Map<java.lang.String,Exporter<?>> getExporterMap() ,public Referer<T> refer(Class<T>, com.weibo.api.motan.rpc.URL) ,public Referer<T> refer(Class<T>, com.weibo.api.motan.rpc.URL, com.weibo.api.motan.rpc.URL) <variables>protected ConcurrentHashMap<java.lang.String,Exporter<?>> exporterMap