/*
* The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
* (the "License"). You may not use this work except in compliance with the License, which is
* available at www.apache.org/licenses/LICENSE-2.0
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied, as more fully set forth in the License.
*
* See the NOTICE file distributed with this work for information regarding copyright ownership.
*/
package alluxio.master;
import alluxio.Configuration;
import alluxio.Process;
import alluxio.PropertyKey;
import java.net.InetSocketAddress;
import javax.annotation.concurrent.ThreadSafe;
/**
* A master process in the Alluxio system.
*/
public interface MasterProcess extends Process {
/**
* Factory for creating {@link MasterProcess}.
*/
@ThreadSafe
final class Factory {
/**
* @return a new instance of {@link MasterProcess}
*/
public static MasterProcess create() {
if (Configuration.getBoolean(PropertyKey.ZOOKEEPER_ENABLED)) {
return new FaultTolerantAlluxioMasterProcess();
}
return new AlluxioMasterProcess();
}
private Factory() {} // prevent instantiation
}
/**
* @param clazz the class of the master to get
* @param <T> the type of the master to get
* @return the given master
*/
<T extends Master> T getMaster(Class<T> clazz);
/**
* @return this master's rpc address
*/
InetSocketAddress getRpcAddress();
/**
* @return the start time of the master in milliseconds
*/
long getStartTimeMs();
/**
* @return the uptime of the master in milliseconds
*/
long getUptimeMs();
/**
* @return the master's web address, or null if the web server hasn't been started yet
*/
InetSocketAddress getWebAddress();
/**
* @return true if the system is the leader (serving the rpc server), false otherwise
*/
boolean isServing();
}