/* * Engine Alpha ist eine anfängerorientierte 2D-Gaming Engine. * * Copyright (c) 2011 - 2014 Michael Andonie and contributors. * * This program 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 3 of the License, or * any later version. * * This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */ package ea; import ea.edu.net.NetzwerkInterpreter; import java.io.BufferedWriter; /** * Diese Klasse sammelt die beiden wesentlichen Objekte einer Netzverbindung * (<code>NetwerkInterpreter</code>, der die Informationen an alle angemeldeten * <code>Empfaenger</code> weitergibt sowie dem <code>Sender</code>, mit dem man Informationen an * die andere Seite schicken kann)und gibt dieser einen Namen. * * @author Michael Andonie, Niklas Keller <me@kelunik.com> */ public class NetzwerkVerbindung extends Sender { /** * Der Name der Verbindung. Dies ist der Name, den der Client dem Server mitgegeben hat. */ private final String name; /** * Der interpreter, der die Sendungen des Partners grob verarbeitet und weitterreicht. */ private final NetzwerkInterpreter interpreter; /** * IP des Remote-Geräts */ private final String ip; public NetzwerkVerbindung (String name, String ip, BufferedWriter bw, NetzwerkInterpreter interpreter) { super(bw); this.name = name; this.ip = ip; this.interpreter = interpreter; } /** * Gibt an, ob diese Verbindung aktiv ist, also derzeit eine Kommunikation über diese Sender / * Empfaenger denkbar ist. * * @return <code>true</code>, wenn man ueber diese Verbindung senden und empfangen kann. Sonst * <code>false</code>. */ public boolean istAktiv () { return super.verbindungAktiv() && interpreter.verbindungAktiv(); } /** * Gibt den Namen der Verbindung aus. * * @return Der Name der Verbindung. */ public String getName () { return name; } /** * Gibt den Interpreter der Verbindung aus. * * @return Der Interpreter der Verbindung. */ public NetzwerkInterpreter getInterpreter () { return interpreter; } /** * Fuegt dieser Verbindung einen Empfänger zu, der ab sofort bei allen * empfangenen Nachrichten informiert wird. * @param e ein neuer Empfänger, der ab sofort bei jeder gesendeten * Nachricht informiert wird. */ public void empfaengerHinzufuegen(Empfaenger e) { this.interpreter.empfaengerHinzufuegen(e); } /** * Beendet die Verbindung zum Kommunikationspartner. * Anschließend werden alle Ressourcen der Verbindung wieder freigegeben. */ @Override public void beendeVerbindung () { super.beendeVerbindung(); interpreter.quitCommunication(); } public String getRemoteIP () { return ip; } }