de.tud.dvs1.mmpgp2p
Class ConnectionWorkerThread

java.lang.Object
  extended by java.lang.Thread
      extended by de.tud.dvs1.mmpgp2p.ConnectionWorkerThread
All Implemented Interfaces:
java.lang.Runnable

public class ConnectionWorkerThread
extends java.lang.Thread

Die Klasse hält Verbindungen aufrecht, bearbeitet sie und reicht Daten an den Vater-Prozess zur Verarbeitung weiter, indem sie dessen "incomingData(...)" Methode aufruft.
Beim Empfang von zu sendenden Daten werden diese beim nächsten Zyklus über den Socket zur Gegenseite versand.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
 boolean gzip
           
protected  long lastChangeRegion
           
 long status
           
static long STATUS_PAUSEING
           
static long STATUS_PLAYING
           
static long STATUS_UNDEFINED
           
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
ConnectionWorkerThread(java.net.Socket s, MmpgP2PServiceThread t)
          Standard Konstruktor
ConnectionWorkerThread(java.lang.String host, int port, MmpgP2PServiceThread t)
           
 
Method Summary
 void close()
           
 int getID()
           
 java.io.InputStream getInputStream()
           
 int getLocalPort()
           
 java.io.ObjectInputStream getObjectInputStream()
           
 java.io.ObjectOutputStream getObjectOutputStream()
           
 java.io.ObjectOutputStream getObjectOutputStream(boolean reset)
           
 java.io.OutputStream getOutputStream()
           
 int getSessionID()
           
 java.net.Socket getSocket()
           
 boolean isFirstTime()
           
 boolean isRunning()
           
 void resetObjectOutputStream()
           
 void run()
          In einer Schleife auf Daten Warten.
 void sendAccCommand(MmpgP2PCommand accC)
          Acc-Kommando senden.
 void sendCommand(MmpgP2PCommand c)
           
 void sendDataNow(java.lang.Object o)
          Sende Daten über die Netzwerkverbindung.
 void setDebug(boolean b)
           
 void setGZIP(boolean b)
           
 void setID(int id)
           
 void setSessionID(int id)
           
 java.lang.String toString()
           
 java.lang.String toString(boolean detail)
           
 boolean waitFor(long timeout)
           
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

lastChangeRegion

protected long lastChangeRegion

gzip

public boolean gzip

status

public long status

STATUS_UNDEFINED

public static final long STATUS_UNDEFINED
See Also:
Constant Field Values

STATUS_PLAYING

public static final long STATUS_PLAYING
See Also:
Constant Field Values

STATUS_PAUSEING

public static final long STATUS_PAUSEING
See Also:
Constant Field Values
Constructor Detail

ConnectionWorkerThread

public ConnectionWorkerThread(java.lang.String host,
                              int port,
                              MmpgP2PServiceThread t)
                       throws java.net.UnknownHostException,
                              java.io.IOException,
                              java.lang.InterruptedException
Throws:
java.net.UnknownHostException
java.io.IOException
java.lang.InterruptedException

ConnectionWorkerThread

public ConnectionWorkerThread(java.net.Socket s,
                              MmpgP2PServiceThread t)
Standard Konstruktor

Parameters:
s - Der Socket, auf dem Daten ein und ausgehen.
t - Der Vaterprozess, dessen IncomingData-Methode bei anliegenden Daten aufgerufen wird.
Method Detail

isRunning

public boolean isRunning()

setGZIP

public void setGZIP(boolean b)

setID

public void setID(int id)

getID

public int getID()

setSessionID

public void setSessionID(int id)

getSessionID

public int getSessionID()

setDebug

public void setDebug(boolean b)

sendDataNow

public void sendDataNow(java.lang.Object o)
                 throws MmpgP2PException
Sende Daten über die Netzwerkverbindung. Ohne Empfangsbestätigung.

Throws:
MmpgP2PException

sendAccCommand

public void sendAccCommand(MmpgP2PCommand accC)
                    throws MmpgP2PException
Acc-Kommando senden. Bestätigt die korrekte Ausführung eines vorherigen Befehls

Throws:
MmpgP2PException

sendCommand

public void sendCommand(MmpgP2PCommand c)
                 throws MmpgP2PException
Throws:
MmpgP2PException

getInputStream

public java.io.InputStream getInputStream()

getOutputStream

public java.io.OutputStream getOutputStream()

getObjectInputStream

public java.io.ObjectInputStream getObjectInputStream()

getObjectOutputStream

public java.io.ObjectOutputStream getObjectOutputStream()

getObjectOutputStream

public java.io.ObjectOutputStream getObjectOutputStream(boolean reset)

resetObjectOutputStream

public void resetObjectOutputStream()

getSocket

public java.net.Socket getSocket()

isFirstTime

public boolean isFirstTime()

getLocalPort

public int getLocalPort()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Thread

toString

public java.lang.String toString(boolean detail)

run

public void run()
In einer Schleife auf Daten Warten. Falls die Verbindung geschlossen wurde, dann kann der Worker sich selbst beenden.

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread

waitFor

public boolean waitFor(long timeout)

close

public void close()