1 package be
.nikiroo
.utils
.serial
.server
;
3 import java
.io
.IOException
;
4 import java
.net
.Socket
;
6 import be
.nikiroo
.utils
.Version
;
9 * This class implements a simple server that can listen for connections and
10 * send/receive objects.
12 * Note: this {@link ServerObject} has to be discarded after use (cannot be
17 abstract public class ServerObject
extends Server
{
19 * Create a new server that will start listening on the network when
20 * {@link ServerObject#start()} is called.
23 * the port to listen on, or 0 to assign any unallocated port
24 * found (which can later on be queried via
25 * {@link ServerObject#getPort()}
27 * use a SSL connection (or not)
30 * in case of I/O error
32 public ServerObject(int port
, boolean ssl
) throws IOException
{
37 * Create a new server that will start listening on the network when
38 * {@link ServerObject#start()} is called.
41 * the server name (only used for debug info and traces)
43 * the port to listen on
45 * use a SSL connection (or not)
48 * in case of I/O error
50 public ServerObject(String name
, int port
, boolean ssl
) throws IOException
{
51 super(name
, port
, ssl
);
55 protected ConnectActionServer
createConnectActionServer(Socket s
) {
56 return new ConnectActionServerObject(s
) {
58 public void action(Version clientVersion
) throws Exception
{
60 for (Object data
= rec(); true; data
= rec()) {
63 rep
= onRequest(this, clientVersion
, data
);
64 } catch (Exception e
) {
69 } catch (NullPointerException e
) {
70 // Client has no data any more, we quit
73 + ": client has data no more, stopping connection");
78 public void connect() {
89 * This is the method that is called on each client request.
91 * You are expected to react to it and return an answer (which can be NULL).
95 * @param clientVersion
98 * the data sent by the client (which can be NULL)
100 * @return the answer to return to the client (which can be NULL)
103 * in case of an exception, the error will only be logged
105 abstract protected Object
onRequest(ConnectActionServerObject action
,
106 Version clientVersion
, Object data
) throws Exception
;