View Javadoc

1   /***
2    * Jetrix TetriNET Server
3    * Copyright (C) 2001-2004  Emmanuel Bourg
4    *
5    * This program is free software; you can redistribute it and/or
6    * modify it under the terms of the GNU General Public License
7    * as published by the Free Software Foundation; either version 2
8    * of the License, or (at your option) any later version.
9    *
10   * This program is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU General Public License for more details.
14   *
15   * You should have received a copy of the GNU General Public License
16   * along with this program; if not, write to the Free Software
17   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18   */
19  
20  package net.jetrix;
21  
22  import java.io.*;
23  import java.net.*;
24  import java.util.*;
25  
26  /***
27   * Layer handling communication with a client. Incomming messages are turned
28   * into a server understandable format and forwarded to the apropriate
29   * destination for processing (player's channel or main server thread)
30   *
31   * @author Emmanuel Bourg
32   * @version $Revision: 857 $, $Date: 2010-05-04 19:55:19 +0200 (mar., 04 mai 2010) $
33   */
34  public interface Client extends Runnable, Destination
35  {
36      /***
37       * Return the protocol used by this client.
38       */
39      Protocol getProtocol();
40  
41      /***
42       * Return the channel this client subscribed to.
43       */
44      Channel getChannel();
45  
46      /***
47       * Set the channel.
48       */
49      void setChannel(Channel channel);
50  
51      /***
52       * Tell if the client supports multiple channels simultaneously.
53       *
54       * @since 0.2
55       */
56      boolean supportsMultipleChannels();
57  
58      /***
59       * Tell if the client can be affected automatically to a channel
60       * on connecting to the server.
61       *
62       * @since 0.2
63       */
64      boolean supportsAutoJoin();
65  
66      /***
67       * Return the user associated to this client.
68       */
69      User getUser();
70  
71      /***
72       * Returns the name of the user agent (GTetrinet, aTwin, Blocktrix...)
73       * 
74       * @since 0.3
75       */
76      String getAgent();
77  
78      /***
79       * Return the version of the user agent (1.13, 1.14, etc)
80       */
81      String getVersion();
82  
83      /***
84       * Return the Internet address of this client.
85       */
86      InetAddress getInetAddress();
87  
88      /***
89       * Return the time of the connection to the server.
90       */
91      Date getConnectionTime();
92  
93      /***
94       * Return the time in miliseconds of inactivity.
95       *
96       * @since 0.2
97       */
98      long getIdleTime();
99  
100     /***
101      * Returns the character encoding to be used for the messages sent to the client.
102      * 
103      * @since 0.3
104      */
105     String getEncoding();
106 
107     /***
108      * Send a message to the client. The raw message property must be set.
109      *
110      * @param message the message to send
111      */
112     void send(Message message);
113 
114     /***
115      * Receive a message sent by the client.
116      *
117      * @since 0.3
118      */
119     Message receive() throws IOException;
120 
121     /***
122      * Trigger the disconnection of this client.
123      */
124     void disconnect();
125 
126 }