com.esotericsoftware.kryonet
Class Server

java.lang.Object
  extended by com.esotericsoftware.kryonet.Server
All Implemented Interfaces:
EndPoint, java.lang.Runnable

public class Server
extends java.lang.Object
implements EndPoint

Manages TCP and optionally UDP connections from many Clients.

Author:
Nathan Sweet

Constructor Summary
Server()
          Creates a Server with a write buffer size of 16384 and an object buffer size of 2048.
Server(int writeBufferSize, int objectBufferSize)
           
Server(int writeBufferSize, int objectBufferSize, com.esotericsoftware.kryo.Kryo kryo)
           
 
Method Summary
 void addListener(Listener listener)
          If the listener already exists, it is not added again.
 void bind(int tcpPort)
          Opens a TCP only server.
 void bind(int tcpPort, int udpPort)
          Opens a TCP and UDP server.
 void close()
          Closes all open connections and the server port(s).
 Connection[] getConnections()
          Returns the current connections.
 com.esotericsoftware.kryo.Kryo getKryo()
          Gets the Kryo instance that will be used to serialize and deserialize objects.
 java.lang.Thread getUpdateThread()
          Returns the last thread that called EndPoint.update(int) for this end point.
 void removeListener(Listener listener)
           
 void run()
          Continually updates this end point until EndPoint.stop() is called.
 void sendToAllExceptTCP(int connectionID, java.lang.Object object)
           
 void sendToAllExceptUDP(int connectionID, java.lang.Object object)
           
 void sendToAllTCP(java.lang.Object object)
           
 void sendToAllUDP(java.lang.Object object)
           
 void sendToTCP(int connectionID, java.lang.Object object)
           
 void sendToUDP(int connectionID, java.lang.Object object)
           
 void start()
          Starts a new thread that calls EndPoint.run().
 void stop()
          Closes this end point and causes EndPoint.run() to return.
 void update(int timeout)
          Accepts any new connections and reads or writes any pending data for the current connections.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Server

public Server()
Creates a Server with a write buffer size of 16384 and an object buffer size of 2048.


Server

public Server(int writeBufferSize,
              int objectBufferSize)
Parameters:
writeBufferSize - One buffer of this size is allocated for each connected client. Objects are serialized to the write buffer where the bytes are queued until they can be written to the socket.

Normally the socket is writable and the bytes are written immediately. If the socket cannot be written to and enough serialized objects are queued to overflow the buffer, then the connection will be closed.

The write buffer should be sized at least as large as the largest object that will be sent, plus some head room to allow for some serialized objects to be queued in case the buffer is temporarily not writable. The amount of head room needed is dependent upon the size of objects being sent and how often they are sent.

objectBufferSize - Two (using only TCP) or four (using both TCP and UDP) buffers of this size are allocated. These buffers are used to hold the bytes for a single object graph until it can be sent over the network or deserialized.

The object buffers should be sized at least as large as the largest object that will be sent or received.


Server

public Server(int writeBufferSize,
              int objectBufferSize,
              com.esotericsoftware.kryo.Kryo kryo)
Method Detail

getKryo

public com.esotericsoftware.kryo.Kryo getKryo()
Description copied from interface: EndPoint
Gets the Kryo instance that will be used to serialize and deserialize objects.

Specified by:
getKryo in interface EndPoint

bind

public void bind(int tcpPort)
          throws java.io.IOException
Opens a TCP only server.

Throws:
java.io.IOException - if the server could not be opened.

bind

public void bind(int tcpPort,
                 int udpPort)
          throws java.io.IOException
Opens a TCP and UDP server.

Throws:
java.io.IOException - if the server could not be opened.

update

public void update(int timeout)
            throws java.io.IOException
Accepts any new connections and reads or writes any pending data for the current connections.

Specified by:
update in interface EndPoint
Parameters:
timeout - Wait for up to the specified milliseconds for a connection to be ready to process. May be zero to return immediately if there are no connections to process.
Throws:
java.io.IOException
See Also:
Client.update(int), update(int)

run

public void run()
Description copied from interface: EndPoint
Continually updates this end point until EndPoint.stop() is called.

Specified by:
run in interface EndPoint
Specified by:
run in interface java.lang.Runnable

start

public void start()
Description copied from interface: EndPoint
Starts a new thread that calls EndPoint.run().

Specified by:
start in interface EndPoint

stop

public void stop()
Description copied from interface: EndPoint
Closes this end point and causes EndPoint.run() to return.

Specified by:
stop in interface EndPoint

sendToAllTCP

public void sendToAllTCP(java.lang.Object object)

sendToAllExceptTCP

public void sendToAllExceptTCP(int connectionID,
                               java.lang.Object object)

sendToTCP

public void sendToTCP(int connectionID,
                      java.lang.Object object)

sendToAllUDP

public void sendToAllUDP(java.lang.Object object)

sendToAllExceptUDP

public void sendToAllExceptUDP(int connectionID,
                               java.lang.Object object)

sendToUDP

public void sendToUDP(int connectionID,
                      java.lang.Object object)

addListener

public void addListener(Listener listener)
Description copied from interface: EndPoint
If the listener already exists, it is not added again.

Specified by:
addListener in interface EndPoint

removeListener

public void removeListener(Listener listener)
Specified by:
removeListener in interface EndPoint

close

public void close()
Closes all open connections and the server port(s).

Specified by:
close in interface EndPoint
See Also:
Client, Server

getUpdateThread

public java.lang.Thread getUpdateThread()
Description copied from interface: EndPoint
Returns the last thread that called EndPoint.update(int) for this end point. This can be useful to detect when long running code will be run on the update thread.

Specified by:
getUpdateThread in interface EndPoint

getConnections

public Connection[] getConnections()
Returns the current connections. The array returned should not be modified.