View Javadoc

1   /***
2    * Jetrix TetriNET Server
3    * Copyright (C) 2001-2003  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.IOException;
23  import java.io.InputStream;
24  import java.util.Locale;
25  
26  /***
27   * A protocol to communicate with a client. A protocol is responsible for
28   * transforming the messages in string format comming for a client into the
29   * corresponding server {@link net.jetrix.Message}, as well as performing the
30   * reverse operation.
31   *
32   * @author Emmanuel Bourg
33   * @version $Revision: 848 $, $Date: 2010-05-03 22:51:32 +0200 (lun., 03 mai 2010) $
34   */
35  public interface Protocol
36  {
37      /***
38       * Return the name of this protocol.
39       *
40       * @return the name of this protocol
41       */
42      String getName();
43  
44      /***
45       * Parse the specified string and return the corresponding server
46       * message for this protocol.
47       *
48       * @param message the client message to parse
49       *
50       * @return the {@link net.jetrix.Message} equivalent of the specified
51       *     String or null if the protocol cannot understand the message.
52       */
53      Message getMessage(String message);
54  
55      /***
56       * Translate the specified message into a string that will be sent
57       * to a client using this protocol.
58       *
59       * @param m the message to translate
60       * @param locale the locale used for internationalized text messages
61       *
62       * @return the String equivalent in this protocol for the specified
63       *     {@link net.jetrix.Message} or null if it can't be translated.
64       */
65      String translate(Message m, Locale locale);
66  
67      /***
68       * Transform the style tags (<tt>&lt;blue&gt;</tt>, <tt>&lt;u&gt;</tt>,
69       * etc...) contained in the specified string into the style codes of this
70       * protocol.
71       *
72       * @param text the string to transform
73       *
74       * @return the stylized representation of the specified string for
75       *     this protocol.
76       */
77      String applyStyle(String text);
78  
79      /***
80       * Return the end of line character used by this protocol.
81       */
82      char getEOL();
83  
84      /***
85       * Read a line for this protocol. A line is ended by a \n or \r character,
86       * or by a protocol specific end of line as defined by the {@link #getEOL()}
87       * method.
88       *
89       * @since 0.3
90       *
91       * @param in       the stream to be read
92       * @param encoding the charset encoding used to read the message
93       * @throws IOException thrown if the stream is closed
94       */
95      String readLine(InputStream in, String encoding) throws IOException;
96  
97  }