/******************************************************************************* * Copyright (c) 2014 Ericsson * * 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 * * Contributors: * Vincent Perot - Initial API and implementation *******************************************************************************/ package org.eclipse.tracecompass.internal.pcap.core.endpoint; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.tracecompass.internal.pcap.core.packet.Packet; /** * Abstract class that represents an endpoint. An endpoint is an address where a * packet is received or sent. Therefore, it is protocol dependent. For * instance, an Ethernet II endpoint is the MAC address. An Ipv4 endpoint is the * combination of the MAC address and the IP address. This is useful for * building packet streams. * * @author Vincent Perot */ public abstract class ProtocolEndpoint { /** * Empty string for child classes. */ protected static final String EMPTY_STRING = ""; //$NON-NLS-1$ /** * The encapsulating endpoint. Much like packets, endpoints are * encapsulated. The higher the layer of the packet protocol is, the more * parents an endpoint will have. */ private final @Nullable ProtocolEndpoint fParentEndpoint; /** * Constructor of the {@link ProtocolEndpoint} class. It takes a packet to * get its endpoint. Since every packet has two endpoints (source and * destination), the isSourceEndpoint parameter is used to specify which * endpoint to take. * * @param packet * The packet that contains the endpoints. * @param isSourceEndpoint * Whether to take the source or the destination endpoint of the * packet. */ public ProtocolEndpoint(Packet packet, boolean isSourceEndpoint) { Packet parentPacket = packet.getParentPacket(); if (parentPacket == null) { fParentEndpoint = null; } else { fParentEndpoint = isSourceEndpoint ? parentPacket.getSourceEndpoint() : parentPacket.getDestinationEndpoint(); } } /** * Getter method that returns the parent endpoint. * * @return The parent endpoint. */ public @Nullable ProtocolEndpoint getParentEndpoint() { return fParentEndpoint; } @Override public abstract int hashCode(); @Override public abstract boolean equals(@Nullable Object obj); @Override public abstract String toString(); }