Package com.fasterxml.clustermate.client.operation

Source Code of com.fasterxml.clustermate.client.operation.InfoOperationResult

package com.fasterxml.clustermate.client.operation;

import java.util.*;

import com.fasterxml.clustermate.api.msg.ItemInfo;
import com.fasterxml.clustermate.client.ClusterServerNode;
import com.fasterxml.clustermate.client.NodeFailure;
import com.fasterxml.clustermate.client.call.ReadCallResult;

/**
* Result value produced by <code>EntryInspector</code>, contains information
* about success of individual call, as well as sequence of listed
* entries in case of successful call.
*/
public class InfoOperationResult<I extends ItemInfo>
    extends OperationResultImpl<InfoOperationResult<I>>
    implements Iterable<ReadCallResult<I>>
{
    protected List<ReadCallResult<I>> _info;

    protected int _successCount;

    protected int _missingCount;
   
    public InfoOperationResult(OperationConfig config, int approxSize)
    {
        super(config);
        _info = new ArrayList<ReadCallResult<I>>(Math.max(1, approxSize));
    }

    /*
    /**********************************************************************
    /* Building
    /**********************************************************************
     */

    public InfoOperationResult<I> withSuccess(ReadCallResult<I> callResult) {
        ++_successCount;
        _info.add(callResult);
        return this;
    }

    public InfoOperationResult<I> withFailed(ReadCallResult<I> callResult) {
        return withFailed(callResult, new NodeFailure(callResult.getServer(), callResult.getFailure()));
    }

    public InfoOperationResult<I> withFailed(ReadCallResult<I> callResult, NodeFailure fail) {
        _info.add(callResult);
        super.withFailed(fail);
        return this;
    }
   
    public InfoOperationResult<I> withMissing(ReadCallResult<I> callResult) {
        ++_missingCount;
        _info.add(callResult);
        return this;
    }
   
    @Override
    public InfoOperationResult<I> withFailed(Collection<NodeFailure> fails) {
        throw new UnsupportedOperationException();
    }

    @Override
    public InfoOperationResult<I> withIgnored(ClusterServerNode server) {
        throw new UnsupportedOperationException();
    }
   
    /*
    /**********************************************************************
    /* Accessors, default
    /**********************************************************************
     */

    @Override
    public int getSuccessCount() {
        return _successCount;
    }

    @Override
    public OperationConfig getConfig() {
        return _config;
    }

    /*
    /**********************************************************************
    /* Accessors, additional
    /**********************************************************************
     */

    @Override
    public Iterator<ReadCallResult<I>> iterator() {
        return _info.iterator();
    }

    public ReadCallResult<I> get(int index) {
        if (index < 0 || index >= _info.size()) {
            return null;
        }
        return _info.get(index);
    }
   
    public int getMissingCount() {
        return _missingCount;
    }
}
TOP

Related Classes of com.fasterxml.clustermate.client.operation.InfoOperationResult

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.