package com.esotericsoftware.kryonet;
import java.io.IOException;
import com.esotericsoftware.kryo.Kryo;
/** Represents the local end point of a connection.
* @author Nathan Sweet <misc@n4te.com> */
public interface EndPoint extends Runnable {
/** Gets the serialization instance that will be used to serialize and deserialize objects. */
public Serialization getSerialization ();
/** If the listener already exists, it is not added again. */
public void addListener (Listener listener);
public void removeListener (Listener listener);
/** Continually updates this end point until {@link #stop()} is called. */
public void run ();
/** Starts a new thread that calls {@link #run()}. */
public void start ();
/** Closes this end point and causes {@link #run()} to return. */
public void stop ();
/** @see Client
* @see Server */
public void close ();
/** @see Client#update(int)
* @see Server#update(int) */
public void update (int timeout) throws IOException;
/** Returns the last thread that called {@link #update(int)} for this end point. This can be useful to detect when long running
* code will be run on the update thread. */
public Thread getUpdateThread ();
/** Gets the Kryo instance that will be used to serialize and deserialize objects. This is only valid if
* {@link KryoSerialization} is being used, which is the default. */
public Kryo getKryo ();
}