/* ** 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.software.netzzugangsschicht; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.OutputStream; import filius.Main; import filius.hardware.knoten.Modem; import filius.software.ProtokollThread; import filius.software.system.ModemFirmware; /** * Diese Klasse dient dazu, die Verbindung zu einer zweiten Instanz eines Modems * ueber eine TCP/IP-Verbindung herzustellen. Hiermit wird die Verbindung zu dem * virtuellen Rechnernetz ueberwacht. */ public class ModemAnschlussBeobachterIntern extends ProtokollThread { /** * Die Modem-Firmware zur Verbindung von Rechnernetzen ueber eine * TCP/IP-Verbindung */ private ModemFirmware firmware; /** * Der Stream zur Uebertragung der Frames ueber den TCP/IP-Socket */ private ObjectOutputStream out; /** * Der Konstruktor, in dem der zu beobachtendende Puffer an den Konstruktor * der Oberklasse weitergibt und die Firmware und Socket initialisiert. */ public ModemAnschlussBeobachterIntern(ModemFirmware firmware, OutputStream out) { super(((Modem) firmware.getKnoten()).getErstenAnschluss() .holeEingangsPuffer()); Main.debug.println("INVOKED-2 ("+this.hashCode()+", T"+this.getId()+") "+getClass()+" (ModemAnschlussBeobachterIntern), constr: ModemAnschlussBeobachterIntern("+firmware+","+out+")"); this.firmware = firmware; try { this.out = new ObjectOutputStream(out); } catch (IOException e) { e.printStackTrace(Main.debug); } } /** * Methode zur Verarbeitung von Frames aus dem angeschlossenen virtuellen * Rechnernetzes. <br /> * Hier werden eingehende Frames lediglich in den Stream geschrieben. */ protected void verarbeiteDatenEinheit(Object datenEinheit) { Main.debug.println("INVOKED ("+this.hashCode()+", T"+this.getId()+") "+getClass()+" (ModemAnschlussBeobachterIntern), verarbeiteDatenEinheit("+datenEinheit.toString()+")"); EthernetFrame frame; if (datenEinheit instanceof EthernetFrame) { frame = (EthernetFrame) datenEinheit; } try { out.writeObject(datenEinheit); out.flush(); } catch (IOException e) { e.printStackTrace(Main.debug); } } }