/* * ! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-2017 by Pentaho : http://www.pentaho.com * * ****************************************************************************** * * 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 org.pentaho.di.engine.api.reporting; import java.io.Serializable; /** * Created by hudak on 1/5/17. */ public class Metrics implements Serializable { private static final long serialVersionUID = -5354823227842967351L; private final long in, out, dropped, inFlight; public static Metrics empty() { return new Metrics( 0, 0, 0, 0 ); } public Metrics( long in, long out, long dropped, long inFlight ) { this.in = in; this.out = out; this.dropped = dropped; this.inFlight = inFlight; } /** * Get number of {@link PDIEvent}s into this component * * @return */ public long getIn() { return in; } /** * Get number of {@link PDIEvent}s out from this component * * @return */ public long getOut() { return out; } /** * Get number of {@link PDIEvent}s dropped (errorred) * * @return */ public long getDropped() { return dropped; } /** * Get number of {@link PDIEvent}s currently in-flight * * @return */ public long getInFlight() { return inFlight; } @Override public String toString() { return String.format( "Metrics{in=%d, out=%d, dropped=%d, inFlight=%d}", in, out, dropped, inFlight ); } public Metrics add( Metrics right ) { return new Metrics( getIn() + right.getIn(), getOut() + right.getOut(), getDropped() + right.getDropped(), getInFlight() + right.getInFlight() ); } @Override public boolean equals( Object o ) { if ( this == o ) { return true; } if ( !( o instanceof Metrics ) ) { return false; } Metrics metrics = (Metrics) o; if ( in != metrics.in ) { return false; } if ( out != metrics.out ) { return false; } if ( dropped != metrics.dropped ) { return false; } return inFlight == metrics.inFlight; } @Override public int hashCode() { int result = (int) ( in ^ ( in >>> 32 ) ); result = 31 * result + (int) ( out ^ ( out >>> 32 ) ); result = 31 * result + (int) ( dropped ^ ( dropped >>> 32 ) ); result = 31 * result + (int) ( inFlight ^ ( inFlight >>> 32 ) ); return result; } }