| package org.apache.commons.jcs.utils.discovery; |
| |
| /* |
| * 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. |
| */ |
| |
| import java.io.Serializable; |
| import java.util.ArrayList; |
| |
| /** |
| * This contains info about a discovered service. These objects are stored in a set in the |
| * UDPDiscoveryService. |
| * <p> |
| * @author Aaron Smuts |
| */ |
| public class DiscoveredService |
| implements Serializable |
| { |
| /** For serialization. Don't change. */ |
| private static final long serialVersionUID = -7810164772089509751L; |
| |
| /** region names */ |
| private ArrayList<String> cacheNames; |
| |
| /** service address */ |
| private String serviceAddress; |
| |
| /** service port */ |
| private int servicePort; |
| |
| /** last time we heard from this service? */ |
| private long lastHearFromTime = 0; |
| |
| /** |
| * @param cacheNames the cacheNames to set |
| */ |
| public void setCacheNames( ArrayList<String> cacheNames ) |
| { |
| this.cacheNames = cacheNames; |
| } |
| |
| /** |
| * @return the cacheNames |
| */ |
| public ArrayList<String> getCacheNames() |
| { |
| return cacheNames; |
| } |
| |
| /** |
| * @param serviceAddress The serviceAddress to set. |
| */ |
| public void setServiceAddress( String serviceAddress ) |
| { |
| this.serviceAddress = serviceAddress; |
| } |
| |
| /** |
| * @return Returns the serviceAddress. |
| */ |
| public String getServiceAddress() |
| { |
| return serviceAddress; |
| } |
| |
| /** |
| * @param servicePort The servicePort to set. |
| */ |
| public void setServicePort( int servicePort ) |
| { |
| this.servicePort = servicePort; |
| } |
| |
| /** |
| * @return Returns the servicePort. |
| */ |
| public int getServicePort() |
| { |
| return servicePort; |
| } |
| |
| /** |
| * @param lastHearFromTime The lastHearFromTime to set. |
| */ |
| public void setLastHearFromTime( long lastHearFromTime ) |
| { |
| this.lastHearFromTime = lastHearFromTime; |
| } |
| |
| /** |
| * @return Returns the lastHearFromTime. |
| */ |
| public long getLastHearFromTime() |
| { |
| return lastHearFromTime; |
| } |
| |
| /** @return hashcode based on address/port */ |
| @Override |
| public int hashCode() |
| { |
| final int prime = 31; |
| int result = 1; |
| result = prime * result |
| + ((serviceAddress == null) ? 0 : serviceAddress.hashCode()); |
| result = prime * result + servicePort; |
| return result; |
| } |
| |
| /** |
| * NOTE - this object is often put into sets, so equals needs to be overridden. |
| * <p> |
| * We can't use cache names as part of the equals unless we manually only use the address and |
| * port in a contains check. So that we can use normal set functionality, I've kept the cache |
| * names out. |
| * <p> |
| * @param otherArg other |
| * @return equality based on the address/port |
| */ |
| @Override |
| public boolean equals(Object otherArg) |
| { |
| if (this == otherArg) |
| { |
| return true; |
| } |
| if (otherArg == null) |
| { |
| return false; |
| } |
| if (!(otherArg instanceof DiscoveredService)) |
| { |
| return false; |
| } |
| DiscoveredService other = (DiscoveredService) otherArg; |
| if (serviceAddress == null) |
| { |
| if (other.serviceAddress != null) |
| { |
| return false; |
| } |
| } else if (!serviceAddress.equals(other.serviceAddress)) |
| { |
| return false; |
| } |
| if (servicePort != other.servicePort) |
| { |
| return false; |
| } |
| |
| return true; |
| } |
| |
| /** |
| * @return string for debugging purposes. |
| */ |
| @Override |
| public String toString() |
| { |
| StringBuilder buf = new StringBuilder(); |
| buf.append( "\n DiscoveredService" ); |
| buf.append( "\n CacheNames = [" + getCacheNames() + "]" ); |
| buf.append( "\n ServiceAddress = [" + getServiceAddress() + "]" ); |
| buf.append( "\n ServicePort = [" + getServicePort() + "]" ); |
| buf.append( "\n LastHearFromTime = [" + getLastHearFromTime() + "]" ); |
| return buf.toString(); |
| } |
| } |