/* * 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.Constants; import alluxio.RpcUtils; import alluxio.exception.AlluxioException; import alluxio.thrift.MasterInfo; import alluxio.thrift.MasterInfoField; import alluxio.thrift.MetaMasterClientService; import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Arrays; import java.util.Set; /** * This class is a Thrift handler for meta master RPCs. */ public final class MetaMasterClientServiceHandler implements MetaMasterClientService.Iface { private static final Logger LOG = LoggerFactory.getLogger(MetaMasterClientServiceHandler.class); private final MasterProcess mMasterProcess; /** * @param masterProcess the Alluxio master process */ public MetaMasterClientServiceHandler(MasterProcess masterProcess) { mMasterProcess = masterProcess; } @Override public long getServiceVersion() { return Constants.META_MASTER_CLIENT_SERVICE_VERSION; } @Override public MasterInfo getInfo(final Set<MasterInfoField> fields) throws TException { return RpcUtils.call(LOG, new RpcUtils.RpcCallable<MasterInfo>() { @Override public MasterInfo call() throws AlluxioException { MasterInfo info = new alluxio.thrift.MasterInfo(); for (MasterInfoField field : fields != null ? fields : Arrays.asList(MasterInfoField.values())) { switch (field) { case WEB_PORT: info.setWebPort(mMasterProcess.getWebAddress().getPort()); break; default: LOG.warn("Unrecognized master info field: " + field); } } return info; } }); } }