/* * Copyright IBM Corporation, 2013. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.controller.samples.loadbalancer.entities; /** * This class represents the source host that sends any traffic to any existing virtual IP (VIP). * This source host is referred to as a 'Client'. Clients will be differentiated from each other * based on the following three properties: * 1. IP address of the client. * 2. Protocol of the traffic it is using for sending traffic * 3. Source port from which it is sending traffic. * e.g TCP traffic from two different ports from the same host to a given VIP will be considered * as two different clients by this service. Similarly, traffic using two different protocols * (TCP, UDP) from the same host will be considered as two different clients. * */ public class Client { /* * IP address of the client (source address) */ private String ip; /* * Network protocol of the traffic sent by client */ private String protocol; /* * Port used to send network traffic (source port) */ private short port; public Client(String ip, String protocol, short port){ this.ip = ip; this.protocol = protocol; this.port = port; } /** * @return the client IP */ public String getIp() { return ip; } /** * @param ip the IP to set */ public void setIp(String ip) { this.ip = ip; } /** * @return the client network protocol */ public String getProtocol() { return protocol; } /** * @param protocol the protocol to set */ public void setProtocol(String protocol) { this.protocol = protocol; } /** * @return the client port */ public short getPort() { return port; } /** * @param port the port to set */ public void setPort(short port) { this.port = port; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((ip == null) ? 0 : ip.hashCode()); result = prime * result + port; result = prime * result+ ((protocol == null) ? 0 : protocol.hashCode()); return result; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof Client)) { return false; } Client other = (Client) obj; if (ip == null) { if (other.ip != null) { return false; } }else if (!ip.equals(other.ip)) { return false; } if (port != other.port) { return false; } if (protocol == null) { if (other.protocol != null) { return false; } }else if (!protocol.equals(other.protocol)) { return false; } return true; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Client [ip=" + ip + ", protocol=" + protocol + ", port=" + port+ "]"; } }