/* ** This file is part of Filius, a network construction and simulation software. ** ** Originally created at the University of Siegen, Institute "Didactics of ** Informatics and E-Learning" by a students' project group: ** members (2006-2007): ** André Asschoff, Johannes Bade, Carsten Dittich, Thomas Gerding, ** Nadja Haßler, Ernst Johannes Klebert, Michell Weyer ** supervisors: ** Stefan Freischlad (maintainer until 2009), Peer Stechert ** Project is maintained since 2010 by Christian Eibl <filius@c.fameibl.de> ** and Stefan Freischlad ** Filius is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 2 of the License, or ** (at your option) version 3. ** ** Filius is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ** PURPOSE. See the GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with Filius. If not, see <http://www.gnu.org/licenses/>. */ package filius.hardware; import java.io.Serializable; import java.util.LinkedList; import filius.Main; import filius.exception.VerbindungsException; import filius.software.netzzugangsschicht.EthernetFrame; public class Port implements Serializable { /** * */ private static final long serialVersionUID = 1L; private LinkedList<EthernetFrame> eingangsPuffer = new LinkedList<EthernetFrame>(); private LinkedList<EthernetFrame> ausgangsPuffer = new LinkedList<EthernetFrame>(); private Verbindung verbindung = null; private NetzwerkInterface nic = null; // constructor with parameter for all other nodes with explicit NIC for each port public Port(NetzwerkInterface nic) { this.nic = nic; } // constructor without parameters for switches public Port() { } public NetzwerkInterface getNIC() { return nic; } public boolean isPortFrei(){ return (verbindung == null); } public boolean setVerbindung(Verbindung verbindung) { Main.debug.println("INVOKED ("+this.hashCode()+") "+getClass()+" (Port), setVerbindung("+verbindung+")"); if(isPortFrei()){ this.verbindung = verbindung; return true; } else{ //Main.debug.println("\tPort: Dieser Port ist schon belegt. Port "+this); return false; } } public void entferneVerbindung() throws VerbindungsException{ Main.debug.println("INVOKED ("+this.hashCode()+") "+getClass()+" (Port), entferneVerbindung()"); this.verbindung = null; } public LinkedList<EthernetFrame> holeAusgangsPuffer() { return ausgangsPuffer; } public LinkedList<EthernetFrame> holeEingangsPuffer() { return eingangsPuffer; } public void setzeEingangsPuffer(LinkedList<EthernetFrame> puffer) { this.eingangsPuffer = puffer; } public Verbindung getVerbindung() { return verbindung; } }