content: /*
   * Copyright 1999-2012 Alibaba Group.
   *  
   * 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.cobar.manager.dao;
  
  import java.util.List;
  
  import com.alibaba.cobar.manager.dataobject.cobarnode.CommandStatus;
  import com.alibaba.cobar.manager.dataobject.cobarnode.ConnectionStatus;
  import com.alibaba.cobar.manager.dataobject.cobarnode.DataNodesStatus;
  import com.alibaba.cobar.manager.dataobject.cobarnode.DataSources;
  import com.alibaba.cobar.manager.dataobject.cobarnode.ProcessorStatus;
  import com.alibaba.cobar.manager.dataobject.cobarnode.ServerStatus;
  import com.alibaba.cobar.manager.dataobject.cobarnode.ThreadPoolStatus;
  import com.alibaba.cobar.manager.dataobject.cobarnode.TimeStamp;
  import com.alibaba.cobar.manager.util.Pair;
  
  /**
   * (created at 2010-7-26)
   * 
   * @author <a href="mailto:shuo.qius@alibaba-inc.com">QIU Shuo</a>
   * @author haiqing.zhuhq 2011-9-1
   */
  public interface CobarAdapterDAO {
  
      /**
       * @return true if success. never throw Exception
       */
      boolean setCobarStatus(boolean status);
  
      TimeStamp getCurrentTime(); //show @@time.current
  
      TimeStamp getStartUpTime(); //show @@time.startup
  
      String getVersion(); //show @@version;
  
      ServerStatus getServerStatus(); // show @@server;
  
      List<ProcessorStatus> listProccessorStatus(); // show @@processor
  
      List<ThreadPoolStatus> listThreadPoolStatus(); // show @@threadpool
  
      List<String> listDataBases(); //show @@databases
  
      List<DataNodesStatus> listDataNodes(); // show @@dataNodes
  
      List<DataSources> listDataSources(); // show @@dataSources
  
      List<ConnectionStatus> listConnectionStatus(); // show @@connection
  
      List<CommandStatus> listCommandStatus(); // show @@command
  
      Pair<Long, Long> getCurrentTimeMillis();
  
      int switchDataNode(String datanodes, int index); //switch @@datasource datanodes:index
  
      int stopHeartbeat(String datanodes, int hour_time); //stop @@heartbeat datanodes:hour_time*3600
  
      int killConnection(long id); //kill @@connection id
  
      boolean reloadConfig();// reload @@config
  
      boolean rollbackConfig();// rollback @@config
  
      boolean checkConnection(); //use show @@version to check cobar connection
  
  }
  