/*
* Copyright(C) 2010-2011 Alibaba Group Holding Limited All rights reserved. Licensed under the Apache License, Version
* 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the
* License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the specific language governing permissions and limitations
* under the License.
*/
package com.alibaba.doris.common.route;
import java.util.List;
import com.alibaba.doris.algorithm.RouteAlgorithm;
import com.alibaba.doris.common.StoreNode;
import com.alibaba.doris.common.config.Configurable;
import com.alibaba.doris.common.event.RouteConfigListener;
import com.alibaba.doris.common.operation.OperationEnum;
/**
* RouteStrategy
*
* @author Kun He (Raymond He), kun.hek@alibaba-inc.com
* @since 1.0 2011-5-5
*/
public interface RouteStrategy extends RouteConfigListener, Configurable {
/**
* Set route table.
*
* @param routeTable
*/
void setRouteTable(RouteTable routeTable);
/**
* find operation node.
*
* @param type
* @param copyCount
* @param key
* @return
* @throws DorisRouterException
*/
List<StoreNode> findNodes(OperationEnum type, int copyCount, String key) throws DorisRouterException;
StoreNode findFailoverNode(OperationEnum type, int copyCount, String key, StoreNode sn) throws DorisRouterException;
/**
* Set algorithm
*
* @param routeAlgorithm
*/
public void setRouteAlgorithm(RouteAlgorithm routeAlgorithm);
RouteTable getRouteTable();
}