blob: 2dcf06d61982212d782d6b4cc72fe506e3970d4a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.ignite.internal.client.impl;
import java.util.Collection;
import java.util.UUID;
import org.apache.ignite.internal.client.GridClientClosedException;
import org.apache.ignite.internal.client.GridClientClusterState;
import org.apache.ignite.internal.client.GridClientException;
import org.apache.ignite.internal.client.GridClientFuture;
import org.apache.ignite.internal.client.GridClientNode;
import org.apache.ignite.internal.client.GridClientPredicate;
import org.apache.ignite.internal.client.balancer.GridClientLoadBalancer;
import org.apache.ignite.internal.client.impl.connection.GridClientConnection;
import org.apache.ignite.internal.client.impl.connection.GridClientConnectionResetException;
/**
*
*/
public class GridClientClusterStateImpl extends GridClientAbstractProjection<GridClientClusterStateImpl>
implements GridClientClusterState {
/**
* Creates projection with specified client.
*
* @param client Client instance to use.
* @param nodes Collections of nodes included in this projection.
* @param filter Node filter to be applied.
* @param balancer Balancer to use.
*/
public GridClientClusterStateImpl(
GridClientImpl client,
Collection<GridClientNode> nodes,
GridClientPredicate<? super GridClientNode> filter,
GridClientLoadBalancer balancer
) {
super(client, nodes, filter, balancer);
}
/** {@inheritDoc} */
@Override public void active(final boolean active) throws GridClientException {
withReconnectHandling(new ClientProjectionClosure<Void>() {
@Override public GridClientFuture apply(
GridClientConnection conn, UUID nodeId
) throws GridClientConnectionResetException, GridClientClosedException {
return conn.changeState(active, nodeId);
}
}).get();
}
/** {@inheritDoc} */
@Override public boolean active() throws GridClientException {
return withReconnectHandling(new ClientProjectionClosure<Boolean>() {
@Override public GridClientFuture<Boolean> apply(
GridClientConnection conn, UUID nodeId
) throws GridClientConnectionResetException, GridClientClosedException {
return conn.currentState(nodeId);
}
}).get();
}
}