    001/*******************************************************************************
    002 * Copyright (c) 2016 Diamond Light Source Ltd. and others.
    003 * All rights reserved. This program and the accompanying materials
    004 * are made available under the terms of the Eclipse Public License v1.0
    005 * which accompanies this distribution, and is available at
    006 * http://www.eclipse.org/legal/epl-v10.html
    007 *
    008 * Contributors:
    009 *     Diamond Light Source Ltd - initial API and implementation
    010 *******************************************************************************/
    011package org.eclipse.january.metadata;
    012
    013/**
    014 * This metadata is set by a remote dataset.
    015 *
    016 * It provides information about dropped data and
    017 * received data while the dataset is connected.
    018 *
    019 * Not all remote datasets are forced to provide this information.
    020 *
    021 * This class is set in bundle org.eclipse.dawnsci.remotedataset.client
    022 * as metadata on RemoteDatasets returned from the Data Server
    023 *
    024 */
    025public class DynamicConnectionInfo implements MetadataType {
    026
    027        /**
    028         *
    029         */
    030        private static final long serialVersionUID = -3982740822246879131L;
    031
    032        private long receivedCount;
    033        private long droppedCount;
    034        private boolean connected;
    035
    036
    037        public boolean isConnected() {
    038                return connected;
    039        }
    040
    041        public void setConnected(boolean connected) {
    042                this.connected = connected;
    043        }
    044
    045        @Override
    046        public int hashCode() {
    047                final int prime = 31;
    048                int result = 1;
    049                result = prime * result + (connected ? 1231 : 1237);
    050                result = prime * result + (int) (droppedCount ^ (droppedCount >>> 32));
    051                result = prime * result + (int) (receivedCount ^ (receivedCount >>> 32));
    052                return result;
    053        }
    054
    055        @Override
    056        public boolean equals(Object obj) {
    057                if (this == obj)
    058                        return true;
    059                if (obj == null)
    060                        return false;
    061                if (getClass() != obj.getClass())
    062                        return false;
    063                DynamicConnectionInfo other = (DynamicConnectionInfo) obj;
    064                if (connected != other.connected)
    065                        return false;
    066                if (droppedCount != other.droppedCount)
    067                        return false;
    068                if (receivedCount != other.receivedCount)
    069                        return false;
    070                return true;
    071        }
    072
    073        public long getReceivedCount() {
    074                return receivedCount;
    075        }
    076
    077        public void setReceivedCount(int receivedCount) {
    078                this.receivedCount = receivedCount;
    079        }
    080
    081        public long getDroppedCount() {
    082                return droppedCount;
    083        }
    084
    085        public void setDroppedCount(int droppedCount) {
    086                this.droppedCount = droppedCount;
    087        }
    088
    089        /**
    090         * Make a deep copy of metadata
    091         * @return clone
    092         */
    093        @Override
    094        public MetadataType clone() {
    095                DynamicConnectionInfo info = new DynamicConnectionInfo();
    096                info.receivedCount = this.receivedCount;
    097                info.droppedCount  = this.droppedCount;
    098                return info;
    099        }
    100
    101}