Thread: [jetrix-cvs] SF.net SVN: jetrix:[717] jetrix/trunk/src
Brought to you by:
smanux
From: <sm...@us...> - 2008-08-06 17:26:27
|
Revision: 717 http://jetrix.svn.sourceforge.net/jetrix/?rev=717&view=rev Author: smanux Date: 2008-08-06 17:26:24 +0000 (Wed, 06 Aug 2008) Log Message: ----------- Renamed the datasource element in server.xml Fixed the file generated by ServerConfig Modified Paths: -------------- jetrix/trunk/src/etc/server.xml jetrix/trunk/src/etc/tetrinet-server.dtd jetrix/trunk/src/java/net/jetrix/config/ServerConfig.java jetrix/trunk/src/java/net/jetrix/config/ServerRuleSet.java Modified: jetrix/trunk/src/etc/server.xml =================================================================== --- jetrix/trunk/src/etc/server.xml 2008-08-06 14:39:20 UTC (rev 716) +++ jetrix/trunk/src/etc/server.xml 2008-08-06 17:26:24 UTC (rev 717) @@ -105,7 +105,7 @@ </ban> <!-- Database connection parameters --> - <data-source> + <datasource> <!-- The class of the JDBC driver used --> <driver>com.mysql.jdbc.Driver</driver> @@ -117,6 +117,6 @@ <!-- The password of the user --> <password>jetrixpass</password> - </data-source> + </datasource> </tetrinet-server> Modified: jetrix/trunk/src/etc/tetrinet-server.dtd =================================================================== --- jetrix/trunk/src/etc/tetrinet-server.dtd 2008-08-06 14:39:20 UTC (rev 716) +++ jetrix/trunk/src/etc/tetrinet-server.dtd 2008-08-06 17:26:24 UTC (rev 717) @@ -23,7 +23,7 @@ <!ELEMENT tetrinet-server (name?, language?, timeout?, max-channels?, max-players?, max-connections?, op-password, admin-password, access-log, - error-log, listeners, services?, commands, ban?, data-source?)> + error-log, listeners, services?, commands, ban?, datasource?)> <!ATTLIST tetrinet-server host CDATA #IMPLIED> <!ELEMENT name (#PCDATA)> @@ -67,7 +67,7 @@ <!ELEMENT nick (#PCDATA)> <!ELEMENT team (#PCDATA)> -<!ELEMENT data-source (driver, url, username, password?)> +<!ELEMENT datasource (driver, url, username, password?)> <!ELEMENT driver (#PCDATA)> <!ELEMENT url (#PCDATA)> <!ELEMENT username (#PCDATA)> Modified: jetrix/trunk/src/java/net/jetrix/config/ServerConfig.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/config/ServerConfig.java 2008-08-06 14:39:20 UTC (rev 716) +++ jetrix/trunk/src/java/net/jetrix/config/ServerConfig.java 2008-08-06 17:26:24 UTC (rev 717) @@ -286,7 +286,7 @@ out.println(); out.println(" <!-- The password of the user -->"); out.println(" <password>" + dataSourcePassword + "</password>"); - out.println(" <datasource>"); + out.println(" </datasource>"); out.println(); out.println("</tetrinet-server>"); Modified: jetrix/trunk/src/java/net/jetrix/config/ServerRuleSet.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/config/ServerRuleSet.java 2008-08-06 14:39:20 UTC (rev 716) +++ jetrix/trunk/src/java/net/jetrix/config/ServerRuleSet.java 2008-08-06 17:26:24 UTC (rev 717) @@ -74,10 +74,10 @@ digester.addCallMethod("tetrinet-server/ban/host", "addBannedHost", 0); // datasource - digester.addCallMethod("*/data-source/driver", "setDataSourceDriver", 0); - digester.addCallMethod("*/data-source/url", "setDataSourceURL", 0); - digester.addCallMethod("*/data-source/username", "setDataSourceUsername", 0); - digester.addCallMethod("*/data-source/password", "setDataSourcePassword", 0); + digester.addCallMethod("*/datasource/driver", "setDataSourceDriver", 0); + digester.addCallMethod("*/datasource/url", "setDataSourceURL", 0); + digester.addCallMethod("*/datasource/username", "setDataSourceUsername", 0); + digester.addCallMethod("*/datasource/password", "setDataSourcePassword", 0); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2008-08-27 14:39:20
|
Revision: 745 http://jetrix.svn.sourceforge.net/jetrix/?rev=745&view=rev Author: smanux Date: 2008-08-27 14:39:18 +0000 (Wed, 27 Aug 2008) Log Message: ----------- Fixed the format of team messages (trailing space required when no team is specified) Implemented the parsing of the noconnecting message for the agents Modified Paths: -------------- jetrix/trunk/src/java/net/jetrix/messages/TeamMessage.java jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java Modified: jetrix/trunk/src/java/net/jetrix/messages/TeamMessage.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/messages/TeamMessage.java 2008-08-27 14:36:45 UTC (rev 744) +++ jetrix/trunk/src/java/net/jetrix/messages/TeamMessage.java 2008-08-27 14:39:18 UTC (rev 745) @@ -30,6 +30,15 @@ /** the name of the team */ private String name; + public TeamMessage() + { + } + + public TeamMessage(String name) + { + this.name = name; + } + public String getName() { return name; Modified: jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java 2008-08-27 14:36:45 UTC (rev 744) +++ jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java 2008-08-27 14:39:18 UTC (rev 745) @@ -309,6 +309,12 @@ leave.setRawMessage(this, line); m = leave; } + else if ("noconnecting".equals(cmd)) + { + NoConnectingMessage noconnecting = new NoConnectingMessage(); + noconnecting.setText(line.substring(cmd.length() + 1)); + m = noconnecting; + } return m; } @@ -412,9 +418,9 @@ StringBuilder message = new StringBuilder(); message.append("team "); message.append(m.getSlot()); + message.append(" "); if (m.getName() != null) { - message.append(" "); message.append(m.getName()); } return message.toString(); @@ -827,7 +833,7 @@ // check the size of the init string if (initString.length() % 2 != 0) { - throw new IllegalArgumentException("Invalid initialization string, the length is not even"); + throw new IllegalArgumentException("Invalid initialization string, the length is not even (" + initString + ")"); } // parse the hex values from the init string @@ -842,7 +848,7 @@ } catch (NumberFormatException e) { - throw new IllegalArgumentException("Invalid initialization string, illegal characters found", e); + throw new IllegalArgumentException("Invalid initialization string, illegal characters found (" + initString + ")", e); } // find the hash pattern for a tetrinet client @@ -857,7 +863,7 @@ // check the size of the pattern found if (pattern.length() == 0) { - throw new IllegalArgumentException("Invalid initialization string, unable to find the pattern"); + throw new IllegalArgumentException("Invalid initialization string, unable to find the pattern (" + initString + ")"); } // decode the string Modified: jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java 2008-08-27 14:36:45 UTC (rev 744) +++ jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java 2008-08-27 14:39:18 UTC (rev 745) @@ -155,7 +155,7 @@ { TeamMessage msg2 = new TeamMessage(); msg2.setSlot(1); - assertEquals("team 1", protocol.translate(msg2, locale)); + assertEquals("team 1 ", protocol.translate(msg2, locale)); } public void testGetMessageTeam1() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2008-08-27 14:44:50
|
Revision: 746 http://jetrix.svn.sourceforge.net/jetrix/?rev=746&view=rev Author: smanux Date: 2008-08-27 14:44:44 +0000 (Wed, 27 Aug 2008) Log Message: ----------- Added TetrinetAgent to write tetrinet bots or clients Modified Paths: -------------- jetrix/trunk/src/java/net/jetrix/agent/TSpecAgent.java jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java jetrix/trunk/src/test/net/jetrix/agent/QueryAgentTest.java jetrix/trunk/src/test/net/jetrix/agent/TSpecAgentTest.java Added Paths: ----------- jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java jetrix/trunk/src/test/net/jetrix/agent/TetrinetAgentTest.java Modified: jetrix/trunk/src/java/net/jetrix/agent/TSpecAgent.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/agent/TSpecAgent.java 2008-08-27 14:39:18 UTC (rev 745) +++ jetrix/trunk/src/java/net/jetrix/agent/TSpecAgent.java 2008-08-27 14:44:44 UTC (rev 746) @@ -19,216 +19,49 @@ package net.jetrix.agent; -import net.jetrix.*; -import net.jetrix.messages.*; -import net.jetrix.protocols.*; +import java.io.IOException; -import java.io.*; -import java.net.*; -import java.util.*; +import net.jetrix.messages.PlayerNumMessage; +import net.jetrix.messages.TeamMessage; +import net.jetrix.protocols.TspecProtocol; /** - * A TSpec agent to log on a TetriNET server as a spectator. + * TSpec agent to log on a TetriNET server as a spectator. * * @author Emmanuel Bourg * @version $Revision$, $Date$ */ -public class TSpecAgent implements Agent +public class TSpecAgent extends TetrinetAgent { - private String name; private String password; - private Socket socket; - private BufferedReader in; - private Writer out; - private TspecProtocol protocol = new TspecProtocol(); - private boolean running; public TSpecAgent(String name, String password) { - this.name = name; + super(name); this.password = password; + this.protocol = new TspecProtocol(); } public void connect(String hostname) throws IOException { - socket = new Socket(hostname, 31458); - in = new BufferedReader(new InputStreamReader(socket.getInputStream())); - out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); - - send(TetrinetProtocol.encode(name, password, socket.getInetAddress().getAddress(), false)); - running = true; - - Thread t = new Thread() - { - public void run() - { - try - { - while (running) - { - String line = protocol.readLine(in); - Message message = protocol.getMessage(line); - - receive(message); - } - } - catch (IOException e) - { - e.printStackTrace(); - running = false; - } - } - }; - - t.start(); + connect(hostname, 31458, password); } - public void disconnect() throws IOException + public void onMessage(PlayerNumMessage m) { - if (socket != null) + super.onMessage(m); + + // send the tspec password as the team name + TeamMessage team = new TeamMessage(); + team.setSlot(m.getSlot()); + team.setName(password); + try { - running = false; - socket.close(); + send(team); } - } - - private void send(String message) throws IOException - { - out.write(message); - out.write(protocol.getEOL()); - out.flush(); - } - - public void send(Message message) throws IOException - { - send(protocol.translate(message, Locale.getDefault())); - } - - public final void receive(Message m) - { - // overwritable pre processing - onMessage(m); - - // message dispatching - if (m instanceof SpecialMessage) { onMessage((SpecialMessage) m); } - else if (m instanceof FieldMessage) { onMessage((FieldMessage) m); } - else if (m instanceof CommandMessage) { onMessage((CommandMessage) m); } - else if (m instanceof PlineMessage) { onMessage((PlineMessage) m); } - else if (m instanceof LevelMessage) { onMessage((LevelMessage) m); } - else if (m instanceof PlayerLostMessage) { onMessage((PlayerLostMessage) m); } - else if (m instanceof PlineActMessage) { onMessage((PlineActMessage) m); } - else if (m instanceof TeamMessage) { onMessage((TeamMessage) m); } - else if (m instanceof JoinMessage) { onMessage((JoinMessage) m); } - else if (m instanceof LeaveMessage) { onMessage((LeaveMessage) m); } - else if (m instanceof PlayerNumMessage) { onMessage((PlayerNumMessage) m); } - else if (m instanceof StartGameMessage) { onMessage((StartGameMessage) m); } - else if (m instanceof StopGameMessage) { onMessage((StopGameMessage) m); } - else if (m instanceof NewGameMessage) { onMessage((NewGameMessage) m); } - else if (m instanceof EndGameMessage) { onMessage((EndGameMessage) m); } - else if (m instanceof PauseMessage) { onMessage((PauseMessage) m); } - else if (m instanceof ResumeMessage) { onMessage((ResumeMessage) m); } - else if (m instanceof GmsgMessage) { onMessage((GmsgMessage) m); } - else if (m instanceof PlayerWonMessage) { onMessage((PlayerWonMessage) m); } - else + catch (IOException e) { - // nothing, log an error ? + e.printStackTrace(); } - - // todo add onMessage(DisconnectedMessage) } - - /** - * Message pre-processing. This method is called at the beginning of the - * <tt>process(Message m, List out)</tt> method and allow custom - * processing for all filtered messages. - */ - public void onMessage(Message m) { } - - public void onMessage(PlineMessage m) { } - - public void onMessage(PlineActMessage m) { } - - public void onMessage(TeamMessage m) { } - - public void onMessage(JoinMessage m) { } - - public void onMessage(LeaveMessage m) { } - - public void onMessage(PlayerNumMessage m) { } - - public void onMessage(StartGameMessage m) { } - - public void onMessage(StopGameMessage m) { } - - public void onMessage(NewGameMessage m) { } - - public void onMessage(EndGameMessage m) { } - - public void onMessage(PauseMessage m) { } - - public void onMessage(ResumeMessage m) { } - - public void onMessage(GmsgMessage m) { } - - private void onMessage(SpecialMessage m) - { - // message pre-processing - onSpecial(m); - - // message dispatching - if (m instanceof OneLineAddedMessage) { onMessage((OneLineAddedMessage) m); } - else if (m instanceof TwoLinesAddedMessage) { onMessage((TwoLinesAddedMessage) m); } - else if (m instanceof FourLinesAddedMessage) { onMessage((FourLinesAddedMessage) m); } - else if (m instanceof AddLineMessage) { onMessage((AddLineMessage) m); } - else if (m instanceof ClearLineMessage) { onMessage((ClearLineMessage) m); } - else if (m instanceof ClearSpecialsMessage) { onMessage((ClearSpecialsMessage) m); } - else if (m instanceof RandomClearMessage) { onMessage((RandomClearMessage) m); } - else if (m instanceof BlockQuakeMessage) { onMessage((BlockQuakeMessage) m); } - else if (m instanceof BlockBombMessage) { onMessage((BlockBombMessage) m); } - else if (m instanceof GravityMessage) { onMessage((GravityMessage) m); } - else if (m instanceof NukeFieldMessage) { onMessage((NukeFieldMessage) m); } - else if (m instanceof SwitchFieldsMessage) { onMessage((SwitchFieldsMessage) m); } - } - - /** - * Special block message pre-processing. This method is called for all - * specials filtered and allow custom processing for all specials - * (lines added, blockbomb switchs, etc...). - */ - public void onSpecial(SpecialMessage m) { } - - public void onMessage(LevelMessage m) { } - - public void onMessage(FieldMessage m) { } - - public void onMessage(PlayerLostMessage m) { } - - public void onMessage(PlayerWonMessage m) { } - - public void onMessage(CommandMessage m) { } - - public void onMessage(OneLineAddedMessage m) { } - - public void onMessage(TwoLinesAddedMessage m) { } - - public void onMessage(FourLinesAddedMessage m) { } - - public void onMessage(AddLineMessage m) { } - - public void onMessage(ClearLineMessage m) { } - - public void onMessage(NukeFieldMessage m) { } - - public void onMessage(RandomClearMessage m) { } - - public void onMessage(SwitchFieldsMessage m) { } - - public void onMessage(ClearSpecialsMessage m) { } - - public void onMessage(GravityMessage m) { } - - public void onMessage(BlockQuakeMessage m) { } - - public void onMessage(BlockBombMessage m) { } - } Added: jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java (rev 0) +++ jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java 2008-08-27 14:44:44 UTC (rev 746) @@ -0,0 +1,302 @@ +/** + * Jetrix TetriNET Server + * Copyright (C) 2008 Emmanuel Bourg + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package net.jetrix.agent; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.net.Socket; +import java.util.Locale; + +import net.jetrix.Message; +import net.jetrix.Protocol; +import net.jetrix.protocols.TetrinetProtocol; +import net.jetrix.messages.*; + +/** + * Tetrinet agent to log on a server as a player. + * + * @author Emmanuel Bourg + * @version $Revision$, $Date$ + */ +public class TetrinetAgent implements Agent +{ + private String name; + private String hostname; + + private int slot; + + private Socket socket; + private BufferedReader in; + private Writer out; + + protected Protocol protocol = new TetrinetProtocol(); + private boolean running; + + public TetrinetAgent(String name) + { + this.name = name; + } + + public String getHostname() + { + return hostname; + } + + public void connect(String hostname) throws IOException + { + connect(hostname, 31457, "1.13"); + } + + protected void connect(String hostname, int port, String version) throws IOException + { + if (running) + { + return; + } + + socket = new Socket(hostname, port); + this.hostname = hostname; + in = new BufferedReader(new InputStreamReader(socket.getInputStream())); + out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); + + send(TetrinetProtocol.encode(name, version, socket.getInetAddress().getAddress(), false)); + + // block until the playernum message is received + String line = protocol.readLine(in); + Message message = protocol.getMessage(line); + receive(message); + + if (message instanceof NoConnectingMessage) + { + throw new IOException("Connexion rejected (noconnecting) : " + ((NoConnectingMessage) message).getText()); + } + + running = true; + + // start the message listener + new MessageListener().start(); + } + + private class MessageListener extends Thread + { + private MessageListener() + { + setName("listener"); + } + + public void run() + { + try + { + while (running) + { + String line = protocol.readLine(in); + + Message message = protocol.getMessage(line); + + receive(message); + } + } + catch (IOException e) + { + if (running) + { + e.printStackTrace(); + running = false; + } + } + } + } + + public void disconnect() throws IOException + { + if (socket != null) + { + running = false; + socket.close(); + } + } + + protected void send(String message) throws IOException + { + out.write(message); + out.write(protocol.getEOL()); + out.flush(); + } + + public void send(Message message) throws IOException + { + // set the slot for channel messages + if (message instanceof ChannelMessage) + { + ((ChannelMessage) message).setSlot(slot); + } + + send(protocol.translate(message, Locale.getDefault())); + } + + /** + * Join the specified channel + * + * @param channel + */ + public void join(String channel) throws IOException + { + send(new PlineMessage("/join " + channel)); + } + + public final void receive(Message m) + { + // overwritable pre processing + onMessage(m); + + // message dispatching + if (m instanceof SpecialMessage) { onMessage((SpecialMessage) m); } + else if (m instanceof FieldMessage) { onMessage((FieldMessage) m); } + else if (m instanceof CommandMessage) { onMessage((CommandMessage) m); } + else if (m instanceof PlineMessage) { onMessage((PlineMessage) m); } + else if (m instanceof LevelMessage) { onMessage((LevelMessage) m); } + else if (m instanceof PlayerLostMessage) { onMessage((PlayerLostMessage) m); } + else if (m instanceof PlineActMessage) { onMessage((PlineActMessage) m); } + else if (m instanceof TeamMessage) { onMessage((TeamMessage) m); } + else if (m instanceof JoinMessage) { onMessage((JoinMessage) m); } + else if (m instanceof LeaveMessage) { onMessage((LeaveMessage) m); } + else if (m instanceof PlayerNumMessage) { onMessage((PlayerNumMessage) m); } + else if (m instanceof StartGameMessage) { onMessage((StartGameMessage) m); } + else if (m instanceof StopGameMessage) { onMessage((StopGameMessage) m); } + else if (m instanceof NewGameMessage) { onMessage((NewGameMessage) m); } + else if (m instanceof EndGameMessage) { onMessage((EndGameMessage) m); } + else if (m instanceof PauseMessage) { onMessage((PauseMessage) m); } + else if (m instanceof ResumeMessage) { onMessage((ResumeMessage) m); } + else if (m instanceof GmsgMessage) { onMessage((GmsgMessage) m); } + else if (m instanceof PlayerWonMessage) { onMessage((PlayerWonMessage) m); } + else if (m instanceof NoConnectingMessage) { onMessage((NoConnectingMessage) m); } + else + { + // nothing, log an error ? + } + + // todo add onMessage(DisconnectedMessage) + } + + /** + * Message pre-processing. This method is called at the beginning of the + * <tt>process(Message m, List out)</tt> method and allow custom + * processing for all filtered messages. + */ + public void onMessage(Message m) { } + + public void onMessage(PlineMessage m) { } + + public void onMessage(PlineActMessage m) { } + + public void onMessage(NoConnectingMessage m) { } + + public void onMessage(TeamMessage m) { } + + public void onMessage(JoinMessage m) { } + + public void onMessage(LeaveMessage m) { } + + public void onMessage(PlayerNumMessage m) + { + this.slot = m.getSlot(); + } + + public void onMessage(StartGameMessage m) { } + + public void onMessage(StopGameMessage m) { } + + public void onMessage(NewGameMessage m) { } + + public void onMessage(EndGameMessage m) { } + + public void onMessage(PauseMessage m) { } + + public void onMessage(ResumeMessage m) { } + + public void onMessage(GmsgMessage m) { } + + private void onMessage(SpecialMessage m) + { + // message pre-processing + onSpecial(m); + + // message dispatching + if (m instanceof OneLineAddedMessage) { onMessage((OneLineAddedMessage) m); } + else if (m instanceof TwoLinesAddedMessage) { onMessage((TwoLinesAddedMessage) m); } + else if (m instanceof FourLinesAddedMessage) { onMessage((FourLinesAddedMessage) m); } + else if (m instanceof AddLineMessage) { onMessage((AddLineMessage) m); } + else if (m instanceof ClearLineMessage) { onMessage((ClearLineMessage) m); } + else if (m instanceof ClearSpecialsMessage) { onMessage((ClearSpecialsMessage) m); } + else if (m instanceof RandomClearMessage) { onMessage((RandomClearMessage) m); } + else if (m instanceof BlockQuakeMessage) { onMessage((BlockQuakeMessage) m); } + else if (m instanceof BlockBombMessage) { onMessage((BlockBombMessage) m); } + else if (m instanceof GravityMessage) { onMessage((GravityMessage) m); } + else if (m instanceof NukeFieldMessage) { onMessage((NukeFieldMessage) m); } + else if (m instanceof SwitchFieldsMessage) { onMessage((SwitchFieldsMessage) m); } + } + + /** + * Special block message pre-processing. This method is called for all + * specials filtered and allow custom processing for all specials + * (lines added, blockbomb switchs, etc...). + */ + public void onSpecial(SpecialMessage m) { } + + public void onMessage(LevelMessage m) { } + + public void onMessage(FieldMessage m) { } + + public void onMessage(PlayerLostMessage m) { } + + public void onMessage(PlayerWonMessage m) { } + + public void onMessage(CommandMessage m) { } + + public void onMessage(OneLineAddedMessage m) { } + + public void onMessage(TwoLinesAddedMessage m) { } + + public void onMessage(FourLinesAddedMessage m) { } + + public void onMessage(AddLineMessage m) { } + + public void onMessage(ClearLineMessage m) { } + + public void onMessage(NukeFieldMessage m) { } + + public void onMessage(RandomClearMessage m) { } + + public void onMessage(SwitchFieldsMessage m) { } + + public void onMessage(ClearSpecialsMessage m) { } + + public void onMessage(GravityMessage m) { } + + public void onMessage(BlockQuakeMessage m) { } + + public void onMessage(BlockBombMessage m) { } + +} Property changes on: jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java ___________________________________________________________________ Added: svn:keywords + Date Author Id Revision HeadURL Added: svn:eol-style + native Modified: jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java 2008-08-27 14:39:18 UTC (rev 745) +++ jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java 2008-08-27 14:44:44 UTC (rev 746) @@ -26,7 +26,6 @@ import java.util.logging.*; import net.jetrix.*; -import net.jetrix.protocols.AbstractProtocol; import net.jetrix.config.*; import net.jetrix.messages.*; @@ -132,6 +131,8 @@ // discard unknown messages if (message == null) continue; + // todo check the slot on channel messages + if (message.getDestination() != null) { message.getDestination().send(message); @@ -249,7 +250,7 @@ public Message receive() throws IOException { // read raw message from socket - String line = ((AbstractProtocol) protocol).readLine(in); + String line = protocol.readLine(in); lastMessageTime = System.currentTimeMillis(); if (log.isLoggable(Level.FINER)) { Modified: jetrix/trunk/src/test/net/jetrix/agent/QueryAgentTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/agent/QueryAgentTest.java 2008-08-27 14:39:18 UTC (rev 745) +++ jetrix/trunk/src/test/net/jetrix/agent/QueryAgentTest.java 2008-08-27 14:44:44 UTC (rev 746) @@ -19,13 +19,9 @@ package net.jetrix.agent; -import junit.framework.TestCase; - import java.util.List; -import net.jetrix.agent.ChannelInfo; -import net.jetrix.agent.PlayerInfo; -import net.jetrix.agent.QueryAgent; +import junit.framework.TestCase; /** * @author Emmanuel Bourg Modified: jetrix/trunk/src/test/net/jetrix/agent/TSpecAgentTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/agent/TSpecAgentTest.java 2008-08-27 14:39:18 UTC (rev 745) +++ jetrix/trunk/src/test/net/jetrix/agent/TSpecAgentTest.java 2008-08-27 14:44:44 UTC (rev 746) @@ -30,11 +30,14 @@ { public void testConnect() throws Exception { - TSpecAgent agent = new TSpecAgent("SmanuxBot", "none"); + TSpecAgent agent = new TSpecAgent("JetrixSpec", "rien"); agent.connect("tetrinet.fr"); - agent.send(new PlineMessage("// Waza !!!")); + agent.send(new PlineMessage("// Hi!")); + agent.send(new PlineMessage("Hello there!")); + Thread.sleep(1000); + agent.disconnect(); } } Added: jetrix/trunk/src/test/net/jetrix/agent/TetrinetAgentTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/agent/TetrinetAgentTest.java (rev 0) +++ jetrix/trunk/src/test/net/jetrix/agent/TetrinetAgentTest.java 2008-08-27 14:44:44 UTC (rev 746) @@ -0,0 +1,43 @@ +/** + * Jetrix TetriNET Server + * Copyright (C) 2008 Emmanuel Bourg + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package net.jetrix.agent; + +import junit.framework.TestCase; + +import net.jetrix.messages.PlineMessage; +import net.jetrix.messages.TeamMessage; + +/** + * @author Emmanuel Bourg + * @version $Revision$, $Date$ + */ +public class TetrinetAgentTest extends TestCase +{ + public void testConnect() throws Exception + { + TetrinetAgent agent = new TetrinetAgent("JetrixBot"); + agent.connect("tetrinet.fr"); + + agent.send(new TeamMessage()); + agent.send(new PlineMessage("Hi there!")); + + agent.disconnect(); + } +} Property changes on: jetrix/trunk/src/test/net/jetrix/agent/TetrinetAgentTest.java ___________________________________________________________________ Added: svn:keywords + Date Author Id Revision HeadURL Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2008-08-27 17:44:15
|
Revision: 748 http://jetrix.svn.sourceforge.net/jetrix/?rev=748&view=rev Author: smanux Date: 2008-08-27 17:44:12 +0000 (Wed, 27 Aug 2008) Log Message: ----------- Implemented the parsing of winlist messages for tetrinet agents Modified Paths: -------------- jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java jetrix/trunk/src/java/net/jetrix/winlist/Score.java jetrix/trunk/src/test/net/jetrix/winlist/ScoreTest.java jetrix/trunk/src/test/net/jetrix/winlist/SimpleWinlistTest.java jetrix/trunk/src/test/net/jetrix/winlist/TetrixWinlistTest.java Modified: jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java 2008-08-27 15:07:12 UTC (rev 747) +++ jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java 2008-08-27 17:44:12 UTC (rev 748) @@ -315,7 +315,29 @@ noconnecting.setText(line.substring(cmd.length() + 1)); m = noconnecting; } + else if ("winlist".equals(cmd)) + { + WinlistMessage winlist = new WinlistMessage(); + winlist.setRawMessage(this, line); + List<Score> scores = new ArrayList<Score>(); + String[] tokens = line.split(" "); + for (int i = 1; i < tokens.length; i++) + { + String token = tokens[i]; + String[] values = token.split(";"); + Score score = new Score(); + score.setName(values[0].substring(1)); + score.setType(values[0].charAt(0) == 'p' ? Score.TYPE_PLAYER : Score.TYPE_TEAM); + score.setScore(Long.parseLong(values[1])); + + scores.add(score); + } + winlist.setScores(scores); + + m = winlist; + } + return m; } Modified: jetrix/trunk/src/java/net/jetrix/winlist/Score.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/winlist/Score.java 2008-08-27 15:07:12 UTC (rev 747) +++ jetrix/trunk/src/java/net/jetrix/winlist/Score.java 2008-08-27 17:44:12 UTC (rev 748) @@ -34,6 +34,17 @@ public static final int TYPE_PLAYER = 0; public static final int TYPE_TEAM = 1; + public Score() + { + } + + public Score(String name, int type, long score) + { + this.name = name; + this.type = type; + this.score = score; + } + public String getName() { return name; Modified: jetrix/trunk/src/test/net/jetrix/winlist/ScoreTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/winlist/ScoreTest.java 2008-08-27 15:07:12 UTC (rev 747) +++ jetrix/trunk/src/test/net/jetrix/winlist/ScoreTest.java 2008-08-27 17:44:12 UTC (rev 748) @@ -31,21 +31,10 @@ { public void testEquals() { - Score score1 = new Score(); - score1.setName("user1"); - score1.setType(Score.TYPE_PLAYER); - score1.setScore(1000); + Score score1 = new Score("user1", Score.TYPE_PLAYER, 1000); + Score score2 = new Score("user1", Score.TYPE_PLAYER, 2000); + Score score3 = new Score("user1", Score.TYPE_TEAM, 2000); - Score score2 = new Score(); - score2.setName("user1"); - score2.setType(Score.TYPE_PLAYER); - score2.setScore(2000); - - Score score3 = new Score(); - score3.setName("user1"); - score3.setType(Score.TYPE_TEAM); - score3.setScore(2000); - assertTrue("score value not ignored", score1.equals(score2) && score2.equals(score1)); assertFalse("score type ignored", score2.equals(score3) || score3.equals(score2)); } Modified: jetrix/trunk/src/test/net/jetrix/winlist/SimpleWinlistTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/winlist/SimpleWinlistTest.java 2008-08-27 15:07:12 UTC (rev 747) +++ jetrix/trunk/src/test/net/jetrix/winlist/SimpleWinlistTest.java 2008-08-27 17:44:12 UTC (rev 748) @@ -140,15 +140,9 @@ winlist.init(config); // add two scores to the list - Score score1 = new Score(); - score1.setName("LFJR"); - score1.setScore(4321); - score1.setType(Score.TYPE_TEAM); + Score score1 = new Score("LFJR", Score.TYPE_TEAM, 4321); - Score score2 = new Score(); - score2.setName("Smanux"); - score2.setScore(1234); - score2.setType(Score.TYPE_PLAYER); + Score score2 = new Score("Smanux", Score.TYPE_PLAYER, 1234); winlist.scores.add(score1); winlist.scores.add(score2); @@ -174,10 +168,7 @@ winlist.init(new WinlistConfig()); // add two scores to the list - Score score = new Score(); - score.setName("LFJR"); - score.setScore(4321); - score.setType(Score.TYPE_TEAM); + Score score = new Score("LFJR", Score.TYPE_TEAM, 4321); winlist.scores.add(score); @@ -193,10 +184,7 @@ SimpleWinlist winlist = getWinlist(); // add two scores to the list - Score score = new Score(); - score.setName("LFJR"); - score.setScore(4321); - score.setType(Score.TYPE_TEAM); + Score score = new Score("LFJR", Score.TYPE_TEAM, 4321); winlist.scores.add(score); Modified: jetrix/trunk/src/test/net/jetrix/winlist/TetrixWinlistTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/winlist/TetrixWinlistTest.java 2008-08-27 15:07:12 UTC (rev 747) +++ jetrix/trunk/src/test/net/jetrix/winlist/TetrixWinlistTest.java 2008-08-27 17:44:12 UTC (rev 748) @@ -37,10 +37,7 @@ public void setUp() { super.setUp(); - score = new Score(); - score.setScore(1418); - score.setName("hell's_players\x86"); - score.setType(Score.TYPE_TEAM); + score = new Score("hell's_players\x86", Score.TYPE_TEAM, 1418); } public void testBuildScore() throws Exception This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2008-08-28 07:41:57
|
Revision: 750 http://jetrix.svn.sourceforge.net/jetrix/?rev=750&view=rev Author: smanux Date: 2008-08-28 07:41:53 +0000 (Thu, 28 Aug 2008) Log Message: ----------- Fixed a bug in TetrinetProtocol.encode() with some IP addresses like 195.139.204.206 (tetrinet.no) Modified Paths: -------------- jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java Modified: jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java 2008-08-27 17:45:22 UTC (rev 749) +++ jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java 2008-08-28 07:41:53 UTC (rev 750) @@ -940,7 +940,7 @@ public static String encode(String nickname, String version, byte[] ip, boolean tetrifast) { // compute the pattern - int p = 54 * ip[0] + 41 * ip[1] + 29 * ip[2] + 17 * ip[3]; + int p = 54 * (ip[0] & 0xFF) + 41 * (ip[1] & 0xFF) + 29 * (ip[2] & 0xFF) + 17 * (ip[3] & 0xFF); char[] pattern = String.valueOf(p).toCharArray(); // build the string to encode Modified: jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java 2008-08-27 17:45:22 UTC (rev 749) +++ jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java 2008-08-28 07:41:53 UTC (rev 750) @@ -279,4 +279,18 @@ assertEquals("decoded string", "tetrisstart Smanux 1.13", decode(init)); } + + public void testEncodeDecode() + { + byte[] ip = {(byte) 195, (byte) 139, (byte) 204, (byte) 206}; + + String nickname = "Smanux"; + String version = "1.13"; + + String init = encode(nickname, version, ip, false); + + assertNotNull(init); + + assertEquals("decoded", "tetrisstart Smanux 1.13", decode(init)); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2008-09-02 09:49:37
|
Revision: 757 http://jetrix.svn.sourceforge.net/jetrix/?rev=757&view=rev Author: smanux Date: 2008-09-02 09:49:34 +0000 (Tue, 02 Sep 2008) Log Message: ----------- Jetrix can now be stopped from the command line with "jetrix stop" Modified Paths: -------------- jetrix/trunk/src/bin/jetrix jetrix/trunk/src/bin/jetrix.bat jetrix/trunk/src/java/net/jetrix/Launcher.java jetrix/trunk/src/java/net/jetrix/Server.java Added Paths: ----------- jetrix/trunk/src/java/net/jetrix/listeners/ShutdownListener.java Removed Paths: ------------- jetrix/trunk/src/etc/log/.cvsignore Modified: jetrix/trunk/src/bin/jetrix =================================================================== --- jetrix/trunk/src/bin/jetrix 2008-09-02 09:45:45 UTC (rev 756) +++ jetrix/trunk/src/bin/jetrix 2008-09-02 09:49:34 UTC (rev 757) @@ -7,4 +7,4 @@ JAVA_PATH="java"; fi -$JAVA_PATH -jar lib/jetrix-launcher-@version@.jar +$JAVA_PATH -jar lib/jetrix-launcher-@version@.jar $1 Modified: jetrix/trunk/src/bin/jetrix.bat =================================================================== --- jetrix/trunk/src/bin/jetrix.bat 2008-09-02 09:45:45 UTC (rev 756) +++ jetrix/trunk/src/bin/jetrix.bat 2008-09-02 09:49:34 UTC (rev 757) @@ -5,4 +5,4 @@ IF NOT JAVA_HOME == "" SET JAVA_EXE="%JAVA_HOME%\bin\java" IF JAVA_HOME == "" SET JAVA_EXE=java -%JAVA_EXE% -Djava.library.path=lib -jar lib/jetrix-launcher-@version@.jar +%JAVA_EXE% -Djava.library.path=lib -jar lib/jetrix-launcher-@version@.jar %1 Deleted: jetrix/trunk/src/etc/log/.cvsignore =================================================================== --- jetrix/trunk/src/etc/log/.cvsignore 2008-09-02 09:45:45 UTC (rev 756) +++ jetrix/trunk/src/etc/log/.cvsignore 2008-09-02 09:49:34 UTC (rev 757) @@ -1 +0,0 @@ -*.log Modified: jetrix/trunk/src/java/net/jetrix/Launcher.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/Launcher.java 2008-09-02 09:45:45 UTC (rev 756) +++ jetrix/trunk/src/java/net/jetrix/Launcher.java 2008-09-02 09:49:34 UTC (rev 757) @@ -21,11 +21,16 @@ import java.io.File; import java.io.FileOutputStream; -import java.util.List; -import java.util.ArrayList; +import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; -import java.util.jar.*; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.util.ArrayList; +import java.util.List; +import java.util.jar.JarOutputStream; +import java.util.jar.Pack200; /** * An application launcher executing a specified class and building dynamically @@ -46,11 +51,42 @@ */ public static void main(String[] args) throws Exception { + if (args.length == 1 && "stop".equals(args[0])) + { + stop(); + } + else + { + start(args); + } + } + + private static void start(String[] args) throws Exception + { // get the files in the lib directory File repository = new File("lib/"); - File[] files = repository.listFiles(); // decompress the pack200 files + unpack(repository); + + ClassLoader loader = createClassLoader(repository, new File("lang/")); + + Thread.currentThread().setContextClassLoader(loader); + + // run the main method of the specified class + Class serverClass = loader.loadClass(MAIN_CLASS); + serverClass.getMethod("main", String[].class).invoke(null, new Object[] { args }); + } + + /** + * Unpack the pack200 files in the specified directory + * + * @param directory + */ + private static void unpack(File directory) throws IOException + { + File[] files = directory.listFiles(); + for (File file : files) { String filename = file.getAbsolutePath(); @@ -69,40 +105,57 @@ file.delete(); } } + } - // build the list of JARs in the ./lib directory - files = repository.listFiles(); - List<URL> jars = new ArrayList<URL>(); + /** + * Build a classloader including the jar and zip files in the specified + * directories. The directories are also included in the classpath. + * + * @param directories + */ + private static ClassLoader createClassLoader(File... directories) throws Exception + { + List<URL> urls = new ArrayList<URL>(); - for (int i = 0; i < files.length; i++) + for (File directory : directories) { - String filename = files[i].getAbsolutePath(); - if (filename.endsWith(".jar") || filename.endsWith(".zip")) + // add the jar and zip files in the directory to the classpath + File[] files = directory.listFiles(); + + for (int i = 0; i < files.length; i++) { - jars.add(files[i].toURL()); + String filename = files[i].getAbsolutePath(); + if (filename.endsWith(".jar") || filename.endsWith(".zip")) + { + urls.add(files[i].toURI().toURL()); + } } + + // add the directory to the classpath + urls.add(directory.toURI().toURL()); } - // add the lib directory to the classpath - jars.add(repository.toURL()); + // create the classloader + return new URLClassLoader(urls.toArray(new URL[urls.size()]), null); + } - // add the lang directory to the classpath - jars.add(new File("lang/").toURL()); + private static void stop() throws Exception + { + // send the "shutdown" to the UDP port 31457 + byte[] msg = "shutdown".getBytes("UTF8"); + DatagramPacket packet = new DatagramPacket(msg, msg.length); + packet.setAddress(InetAddress.getLocalHost()); + packet.setPort(31457); - // build the list of URLs - URL[] urls = new URL[jars.size()]; - for (int i = 0; i < jars.size(); i++) + DatagramSocket socket = new DatagramSocket(); + try { - urls[i] = jars.get(i); + socket.send(packet); } - - // create the classloader - ClassLoader loader = new URLClassLoader(urls, null); - Thread.currentThread().setContextClassLoader(loader); - - // run the main method of the specified class - Class serverClass = loader.loadClass(MAIN_CLASS); - serverClass.getMethod("main", args.getClass()).invoke(null, new Object[] { args }); + finally + { + socket.close(); + } } } Modified: jetrix/trunk/src/java/net/jetrix/Server.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/Server.java 2008-09-02 09:45:45 UTC (rev 756) +++ jetrix/trunk/src/java/net/jetrix/Server.java 2008-09-02 09:49:34 UTC (rev 757) @@ -27,6 +27,7 @@ import net.jetrix.config.*; import net.jetrix.messages.*; import net.jetrix.services.VersionService; +import net.jetrix.listeners.ShutdownListener; /** * Main class, starts server components. @@ -111,6 +112,9 @@ } } + // start the shutdown listener + new ShutdownListener().start(); + // start the services for (Service service : config.getServices()) { @@ -281,7 +285,7 @@ */ public static void main(String[] args) { - System.out.println("Jetrix TetriNET Server " + ServerConfig.VERSION + ", Copyright (C) 2001-2005 Emmanuel Bourg\n"); + System.out.println("Jetrix TetriNET Server " + ServerConfig.VERSION + ", Copyright (C) 2001-2008 Emmanuel Bourg\n"); Server server = Server.getInstance(); server.start(); } Added: jetrix/trunk/src/java/net/jetrix/listeners/ShutdownListener.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/listeners/ShutdownListener.java (rev 0) +++ jetrix/trunk/src/java/net/jetrix/listeners/ShutdownListener.java 2008-09-02 09:49:34 UTC (rev 757) @@ -0,0 +1,99 @@ +/** + * Jetrix TetriNET Server + * Copyright (C) 2008 Emmanuel Bourg + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package net.jetrix.listeners; + +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.util.logging.Level; + +import net.jetrix.Listener; +import net.jetrix.Server; +import net.jetrix.services.AbstractService; + +/** + * Listens for shutdown commands from the localhost. This is used to stop + * the server from the shell on Unix. + * + * @author Emmanuel Bourg + * @version $Revision$, $Date$ + */ +public class ShutdownListener extends AbstractService implements Listener +{ + private static final String SHUTDOWN_COMMAND = "shutdown"; + + public String getName() + { + return "shutdown"; + } + + public int getPort() + { + return 31457; + } + + public void setPort(int port) + { + } + + public void start() + { + Thread t = new Thread(this, "listener: " + getName()); + t.setDaemon(true); + t.start(); + } + + public void stop() + { + } + + public void run() + { + try + { + DatagramSocket socket = new DatagramSocket(new InetSocketAddress(InetAddress.getLocalHost(), getPort())); + + while (true) + { + int length = SHUTDOWN_COMMAND.length(); + DatagramPacket packet = new DatagramPacket(new byte[length], length); + socket.receive(packet); + + if (packet != null && new String(packet.getData(), "UTF8").equals(SHUTDOWN_COMMAND)) + { + log.info("Shutdown command received"); + Server.getInstance().stop(); + break; + } + } + } + catch (IOException e) + { + log.log(Level.WARNING, "ShutdownListener error", e); + } + } + + public boolean isRunning() + { + return true; + } +} Property changes on: jetrix/trunk/src/java/net/jetrix/listeners/ShutdownListener.java ___________________________________________________________________ Added: svn:keywords + Date Author Id Revision HeadURL Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-12 13:37:21
|
Revision: 780 http://jetrix.svn.sourceforge.net/jetrix/?rev=780&view=rev Author: smanux Date: 2009-02-12 13:37:16 +0000 (Thu, 12 Feb 2009) Log Message: ----------- Removed the ServerDirectory class (obsolete) Removed Paths: ------------- jetrix/trunk/src/java/net/jetrix/tools/ServerDirectory.java jetrix/trunk/src/test/net/jetrix/tools/ServerDirectoryTest.java Deleted: jetrix/trunk/src/java/net/jetrix/tools/ServerDirectory.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/tools/ServerDirectory.java 2009-02-12 13:20:49 UTC (rev 779) +++ jetrix/trunk/src/java/net/jetrix/tools/ServerDirectory.java 2009-02-12 13:37:16 UTC (rev 780) @@ -1,145 +0,0 @@ -/** - * Jetrix TetriNET Server - * Copyright (C) 2005 Emmanuel Bourg - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -package net.jetrix.tools; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; -import java.net.MalformedURLException; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.*; - -/** - * A utility class that fetches a list of tetrinet servers from online - * directories like tetrinet.org and tsrv.com. - * - * @author Emmanuel Bourg - * @version $Revision$, $Date$ - * @since 0.2 - */ -public class ServerDirectory -{ - /** - * Return the list of registered servers. - */ - public static Collection<String> getServers() - { - Collection<String> servers = new TreeSet<String>(); - - try - { - servers.addAll(extractServers(new URL("http://slummy.tetrinet.org/grav/slummy_grav.html"), "<TD><font size=\"+0\"><font face=\"helvetica,arial\">", "<")); - servers.addAll(extractServers(new URL("http://dieterdhoker.mine.nu:8280/cgi-bin/TSRV/servers.htm"), "serverhost=", "\"")); - } - catch (MalformedURLException e) - { - e.printStackTrace(); - } - - return getDistinctServers(servers); - } - - /** - * Extract a list of server from a web page. There must be one server by line only - * - * @since 0.3 - * - * @param url the URL of the page containing the list of servers - * @param startString the string right before the server name - * @param endString the string to find right after the server name - */ - private static Collection<String> extractServers(URL url, String startString, String endString) - { - Collection<String> servers = new TreeSet<String>(); - BufferedReader in = null; - - try - { - in = new BufferedReader(new InputStreamReader(url.openStream())); - - String line = null; - - while ((line = in.readLine()) != null) - { - if (line.contains(startString)) - { - int i = line.indexOf(startString) + startString.length(); - servers.add(line.substring(i, line.indexOf(endString, i)).toLowerCase()); - } - } - } - catch (Exception e) - { - e.printStackTrace(); - } - finally - { - if (in != null) - { - try - { - in.close(); - } - catch (IOException e) - { - e.printStackTrace(); - } - } - } - - return servers; - } - - /** - * Return the distinct hosts from the specified list of servers. - * Host names (i.e tetrinet.fr) are prefered over host addresses - * (i.e 194.117.194.68). - * - * @since 0.3 - */ - private static Set<String> getDistinctServers(Collection<String> servers) - { - Map<String, String> map = new HashMap<String, String>(); - - for (String server : servers) - { - try - { - // get the address of the server - InetAddress address = InetAddress.getByName(server); - - // check if the server is missing from the map, or registered under a numerical form - String hostname = map.get(address.getHostAddress()); - if (hostname == null || hostname.equals(address.getHostAddress())) - { - map.put(address.getHostAddress(), server); - } - } - catch (UnknownHostException e) - { - // ignored - } - } - - return new HashSet<String>(map.values()); - } -} Deleted: jetrix/trunk/src/test/net/jetrix/tools/ServerDirectoryTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/tools/ServerDirectoryTest.java 2009-02-12 13:20:49 UTC (rev 779) +++ jetrix/trunk/src/test/net/jetrix/tools/ServerDirectoryTest.java 2009-02-12 13:37:16 UTC (rev 780) @@ -1,66 +0,0 @@ -/** - * Jetrix TetriNET Server - * Copyright (C) 2005 Emmanuel Bourg - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -package net.jetrix.tools; - -import java.io.IOException; -import java.util.Collection; - -import junit.framework.TestCase; -import net.jetrix.agent.QueryAgent; - -/** - * @author Emmanuel Bourg - * @version $Revision$, $Date$ - */ -public class ServerDirectoryTest extends TestCase -{ - public void testGetServers() throws Exception - { - Collection<String> servers = ServerDirectory.getServers(); - - assertNotNull("null list", servers); - assertFalse("empty list", servers.isEmpty()); - assertTrue("missing server tetrinet.org", servers.contains("tetrinet.org")); - } - - public void testShowVersions() throws Exception - { - Collection<String> servers = ServerDirectory.getServers(); - - for (String server : servers) - { - try - { - QueryAgent agent = new QueryAgent(); - agent.connect(server); - String version = agent.getVersion(); - agent.disconnect(); - - System.out.println(server + "\t\t" + version); - } - catch (IOException e) - { - System.err.println("Error connecting to " + server + " ("+e.getMessage()+")"); - e.printStackTrace(); - } - } - } - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-18 13:28:08
|
Revision: 796 http://jetrix.svn.sourceforge.net/jetrix/?rev=796&view=rev Author: smanux Date: 2009-02-18 13:28:05 +0000 (Wed, 18 Feb 2009) Log Message: ----------- Fixed the favicon in the admin panel Modified Paths: -------------- jetrix/trunk/src/admin/index.html jetrix/trunk/src/site/header.inc.php Modified: jetrix/trunk/src/admin/index.html =================================================================== --- jetrix/trunk/src/admin/index.html 2009-02-17 19:10:59 UTC (rev 795) +++ jetrix/trunk/src/admin/index.html 2009-02-18 13:28:05 UTC (rev 796) @@ -3,7 +3,7 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" href="style.css"> - <link rel="shortcut icon" href="http://jetrix.sourceforge.net/images/favicon.gif"> + <link rel="shortcut icon" type="image/x-icon" href="http://jetrix.sourceforge.net/favicon.ico" /> <title>Jetrix Administration</title> </head> <frameset rows="120,*" frameborder="no" border="0" cols="*"> Modified: jetrix/trunk/src/site/header.inc.php =================================================================== --- jetrix/trunk/src/site/header.inc.php 2009-02-17 19:10:59 UTC (rev 795) +++ jetrix/trunk/src/site/header.inc.php 2009-02-18 13:28:05 UTC (rev 796) @@ -15,7 +15,7 @@ <meta name="description" content="Jetrix is a new generation TetriNET server written in Java and designed for maximum scalability and extensibility." /> <meta name="keywords" content="jetrix, tetrinet, server, tnet, tetrifast, tfast, tspec, tetris, tetrix, java" /> <link rel="stylesheet" href="style.css" /> - <link rel="shorcut icon" type="image/x-icon" href="favicon.ico" /> + <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> <link rel="alternate" type="application/rss+xml" title="RSS" href="http://sourceforge.net/export/rss2_projnews.php?group_id=52188&rss_fulltext=1" /> <title>Jetrix TetriNET Server</title> </head> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-18 14:03:29
|
Revision: 797 http://jetrix.svn.sourceforge.net/jetrix/?rev=797&view=rev Author: smanux Date: 2009-02-18 14:03:17 +0000 (Wed, 18 Feb 2009) Log Message: ----------- Added support for multiple datasources Modified Paths: -------------- jetrix/trunk/src/admin/WEB-INF/classes/net/jetrix/servlets/ServerAction.java jetrix/trunk/src/admin/server.jsp jetrix/trunk/src/etc/conf/server.xml jetrix/trunk/src/etc/tetrinet-server.dtd jetrix/trunk/src/java/net/jetrix/DataSourceManager.java jetrix/trunk/src/java/net/jetrix/Server.java jetrix/trunk/src/java/net/jetrix/config/DataSourceConfig.java jetrix/trunk/src/java/net/jetrix/config/ServerConfig.java jetrix/trunk/src/java/net/jetrix/config/ServerRuleSet.java Modified: jetrix/trunk/src/admin/WEB-INF/classes/net/jetrix/servlets/ServerAction.java =================================================================== --- jetrix/trunk/src/admin/WEB-INF/classes/net/jetrix/servlets/ServerAction.java 2009-02-18 13:28:05 UTC (rev 796) +++ jetrix/trunk/src/admin/WEB-INF/classes/net/jetrix/servlets/ServerAction.java 2009-02-18 14:03:17 UTC (rev 797) @@ -110,16 +110,17 @@ } else if ("datasource.update".equals(action)) { - DataSourceConfig datasourceConfig = new DataSourceConfig(); - datasourceConfig.setDriver(request.getParameter("driver")); - datasourceConfig.setUrl(request.getParameter("url")); - datasourceConfig.setUsername(request.getParameter("username")); - datasourceConfig.setPassword(request.getParameter("password")); - datasourceConfig.setMinIdle(Integer.parseInt(request.getParameter("minIdle"))); - datasourceConfig.setMaxActive(Integer.parseInt(request.getParameter("maxActive"))); + DataSourceConfig datasource = new DataSourceConfig(); + datasource.setName(request.getParameter("name")); + datasource.setDriver(request.getParameter("driver")); + datasource.setUrl(request.getParameter("url")); + datasource.setUsername(request.getParameter("username")); + datasource.setPassword(request.getParameter("password")); + datasource.setMinIdle(Integer.parseInt(request.getParameter("minIdle"))); + datasource.setMaxActive(Integer.parseInt(request.getParameter("maxActive"))); - config.setDataSource(datasourceConfig); - DataSourceManager.getInstance().setDataSource(datasourceConfig); + config.addDataSource(datasource); + DataSourceManager.getInstance().setDataSource(datasource, datasource.getName()); } else if ("gc".equals(action)) { Modified: jetrix/trunk/src/admin/server.jsp =================================================================== --- jetrix/trunk/src/admin/server.jsp 2009-02-18 13:28:05 UTC (rev 796) +++ jetrix/trunk/src/admin/server.jsp 2009-02-18 14:03:17 UTC (rev 797) @@ -196,7 +196,7 @@ <% } %> </table> - <!-- list, add, remove --> + <!-- todo add, remove filters --> </div> <div class="tab-page" style="height: 400px; overflow: auto"> @@ -325,7 +325,7 @@ <td width="70" align="center"><%= listener.isRunning() ? "Started" : "Stopped" %></td> <td width="70" align="center"><%= listener.isAutoStart() ? "yes" : "no" %></td> <td width="50"> - <form id="listener" action="/servlet/<%= ServerAction.class.getName() %>"> + <form id="listener-<%= i %>" action="/servlet/<%= ServerAction.class.getName() %>"> <input type="hidden" name="index" value="<%= i %>"> <% if (listener.isRunning()) { %> <input type="hidden" name="action" value="listener.stop"> @@ -342,7 +342,7 @@ <br> - <input type="button" value="Add"> + <!-- todo <input type="button" value="Add"> --> </div> <div class="tab-page" style="height: 400px"> @@ -364,7 +364,7 @@ <td width="70" align="center"><%= service.isRunning() ? "Started" : "Stopped" %></td> <td width="70" align="center"><%= service.isAutoStart() ? "yes" : "no" %></td> <td width="50"> - <form id="listener" action="/servlet/<%= ServerAction.class.getName() %>"> + <form id="service-<%= i %>" action="/servlet/<%= ServerAction.class.getName() %>"> <input type="hidden" name="index" value="<%= i %>"> <% if (service.isRunning()) { %> <input type="hidden" name="action" value="service.stop"> @@ -381,7 +381,7 @@ <br> - <input type="button" value="Add"> + <!-- todo <input type="button" value="Add"> --> </div> <div class="tab-page" style="height: 400px"> @@ -404,36 +404,43 @@ </div> - <div class="tab-page" style="height: 400px"> - <h2 class="tab">Database</h2> - + <div class="tab-page" style="height: 400px; overflow: auto"> + <h2 class="tab">Databases</h2> + +<% for (DataSourceConfig datasource : conf.getDataSources()) { %> + <form id="datasource" action="/servlet/<%= ServerAction.class.getName() %>"> <input type="hidden" name="action" value="datasource.update"> - + <input type="hidden" name="name" value="<%= datasource.getName() %>"> + <table class="thin" style="width: 400px"> <tr> + <th width="30%">Name</th> + <td><b><%= datasource.getName() %></b></td> + </tr> + <tr> <th width="30%">Driver</th> - <td><input class="thin" type="text" name="driver" value="<%= conf.getDataSource().getDriver() %>" style="width: 98%"></td> + <td><input class="thin" type="text" name="driver" value="<%= datasource.getDriver() %>" style="width: 98%"></td> </tr> <tr> <th>URL</th> - <td><input class="thin" type="text" name="url" value="<%= conf.getDataSource().getUrl() %>" style="width: 98%"></td> + <td><input class="thin" type="text" name="url" value="<%= datasource.getUrl() %>" style="width: 98%"></td> </tr> <tr> <th>Username</th> - <td><input class="thin" type="text" name="username" value="<%= conf.getDataSource().getUsername() %>"></td> + <td><input class="thin" type="text" name="username" value="<%= datasource.getUsername() %>"></td> </tr> <tr> <th>Password</th> - <td><input class="thin" type="text" name="password" value="<%= conf.getDataSource().getPassword() %>"></td> + <td><input class="thin" type="text" name="password" value="<%= datasource.getPassword() %>"></td> </tr> <tr> <th>Min Idle</th> - <td><input class="thin" type="text" name="minIdle" value="<%= conf.getDataSource().getMinIdle() %>"></td> + <td><input class="thin" type="text" name="minIdle" value="<%= datasource.getMinIdle() %>"></td> </tr> <tr> <th>Max Active</th> - <td><input class="thin" type="text" name="maxActive" value="<%= conf.getDataSource().getMaxActive() %>"></td> + <td><input class="thin" type="text" name="maxActive" value="<%= datasource.getMaxActive() %>"></td> </tr> </table> @@ -442,6 +449,11 @@ <input type="submit" value="Update"> </form> + + <br> + +<% } %> + </div> <div class="tab-page" style="height: 400px"> @@ -512,6 +524,7 @@ </div> </div> +</div> </body> </html> Modified: jetrix/trunk/src/etc/conf/server.xml =================================================================== --- jetrix/trunk/src/etc/conf/server.xml 2009-02-18 13:28:05 UTC (rev 796) +++ jetrix/trunk/src/etc/conf/server.xml 2009-02-18 14:03:17 UTC (rev 797) @@ -108,18 +108,20 @@ </ban> <!-- Database connection parameters --> - <datasource> - <!-- The class of the JDBC driver used --> - <driver>com.mysql.jdbc.Driver</driver> + <datasources> + <datasource name="DEFAULT"> + <!-- The class of the JDBC driver used --> + <driver>com.mysql.jdbc.Driver</driver> - <!-- The URL of the database (jdbc:<type>://<hostname>:<port>/<database>) --> - <url>jdbc:mysql://localhost/jetrix</url> + <!-- The URL of the database (jdbc:<type>://<hostname>:<port>/<database>) --> + <url>jdbc:mysql://localhost/jetrix</url> - <!-- The username connecting to the database --> - <username>jetrix</username> + <!-- The username connecting to the database --> + <username>jetrix</username> - <!-- The password of the user --> - <password>jetrixpass</password> - </datasource> + <!-- The password of the user --> + <password>jetrixpass</password> + </datasource> + </datasources> </tetrinet-server> Modified: jetrix/trunk/src/etc/tetrinet-server.dtd =================================================================== --- jetrix/trunk/src/etc/tetrinet-server.dtd 2009-02-18 13:28:05 UTC (rev 796) +++ jetrix/trunk/src/etc/tetrinet-server.dtd 2009-02-18 14:03:17 UTC (rev 797) @@ -23,7 +23,7 @@ <!ELEMENT tetrinet-server (name?, language?, timeout?, max-channels?, max-players?, max-connections?, op-password, admin-password, access-log, - error-log, channels?, listeners, services?, commands, ban?, datasource?)> + error-log, channels?, listeners, services?, commands, ban?, datasources?)> <!ATTLIST tetrinet-server host CDATA #IMPLIED> <!ELEMENT name (#PCDATA)> @@ -70,7 +70,9 @@ <!ELEMENT nick (#PCDATA)> <!ELEMENT team (#PCDATA)> +<!ELEMENT datasources (datasource*)> <!ELEMENT datasource (driver, url, username, password?, min-idle?, max-active?)> +<!ATTLIST datasource name CDATA #REQUIRED> <!ELEMENT driver (#PCDATA)> <!ELEMENT url (#PCDATA)> <!ELEMENT username (#PCDATA)> Modified: jetrix/trunk/src/java/net/jetrix/DataSourceManager.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/DataSourceManager.java 2009-02-18 13:28:05 UTC (rev 796) +++ jetrix/trunk/src/java/net/jetrix/DataSourceManager.java 2009-02-18 14:03:17 UTC (rev 797) @@ -23,7 +23,6 @@ import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; -import java.sql.SQLException; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; @@ -46,8 +45,14 @@ private Map<String, DataSource> datasources = new HashMap<String, DataSource>(); /** Key of the default datasource. */ - private static final String DEFAULT_DATASOURCE = "DEFAULT"; + public static final String DEFAULT_DATASOURCE = "DEFAULT"; + /** Default number of the minimum idle connections */ + public static final int DEFAULT_MIN_IDLE = 1; + + /** Default number of maximum active connections */ + public static final int DEFAULT_MAX_ACTIVE = 50; + private DataSourceManager() { } @@ -67,7 +72,7 @@ public DataSource getDataSource(String environnement) { - return (DataSource) datasources.get(environnement); + return datasources.get(environnement); } /** @@ -112,8 +117,8 @@ datasource.setUrl(config.getUrl()); datasource.setUsername(config.getUsername()); datasource.setPassword(config.getPassword()); - datasource.setMinIdle(config.getMinIdle() != 0 ? config.getMinIdle() : 1); - datasource.setMaxActive(config.getMaxActive() != 0 ? config.getMaxActive() : 50); + datasource.setMinIdle(config.getMinIdle() != 0 ? config.getMinIdle() : DEFAULT_MIN_IDLE); + datasource.setMaxActive(config.getMaxActive() != 0 ? config.getMaxActive() : DEFAULT_MAX_ACTIVE); // attempts to open the connection datasource.getConnection().close(); Modified: jetrix/trunk/src/java/net/jetrix/Server.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/Server.java 2009-02-18 13:28:05 UTC (rev 796) +++ jetrix/trunk/src/java/net/jetrix/Server.java 2009-02-18 14:03:17 UTC (rev 797) @@ -102,11 +102,14 @@ // prepare the loggers LogManager.init(); - // open the database connection - if (config.getDataSource() != null) + // open the database connections + if (!config.getDataSources().isEmpty()) { - log.info("Initializing the datasource..."); - DataSourceManager.getInstance().setDataSource(config.getDataSource()); + log.info("Initializing the datasources..."); + for (DataSourceConfig datasource : config.getDataSources()) + { + DataSourceManager.getInstance().setDataSource(datasource, datasource.getName()); + } } // display the systray icon (windows only) Modified: jetrix/trunk/src/java/net/jetrix/config/DataSourceConfig.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/config/DataSourceConfig.java 2009-02-18 13:28:05 UTC (rev 796) +++ jetrix/trunk/src/java/net/jetrix/config/DataSourceConfig.java 2009-02-18 14:03:17 UTC (rev 797) @@ -19,21 +19,43 @@ package net.jetrix.config; +import net.jetrix.DataSourceManager; + /** * Configuration for a pool of connections to a database. * * @author Emmanuel Bourg * @version $Revision$, $Date$ + * @since 0.3 */ public class DataSourceConfig { + private String name = DataSourceManager.DEFAULT_DATASOURCE; private String url; private String driver; private String username; private String password; - private int minIdle; - private int maxActive; + private int minIdle = DataSourceManager.DEFAULT_MIN_IDLE; + private int maxActive = DataSourceManager.DEFAULT_MAX_ACTIVE; + /** + * Tells if this datasource is the default datasource. + */ + public boolean isDefault() + { + return DataSourceManager.DEFAULT_DATASOURCE.equals(name); + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + public String getUrl() { return url; Modified: jetrix/trunk/src/java/net/jetrix/config/ServerConfig.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/config/ServerConfig.java 2009-02-18 13:28:05 UTC (rev 796) +++ jetrix/trunk/src/java/net/jetrix/config/ServerConfig.java 2009-02-18 14:03:17 UTC (rev 797) @@ -76,7 +76,7 @@ private Statistics statistics = new Statistics(); // datasource configuration - private DataSourceConfig datasourceConfig; + private Map<String, DataSourceConfig> datasources = new LinkedHashMap<String, DataSourceConfig>(); private URL serverConfigURL; private URL channelsConfigURL; @@ -269,43 +269,52 @@ out.println(" </ban>"); out.println(); - if (datasourceConfig != null) + if (!datasources.isEmpty()) { out.println(" <!-- Database connection parameters -->"); - out.println(" <datasource>"); - out.println(" <!-- The class of the JDBC driver used -->"); - out.println(" <driver>" + datasourceConfig.getDriver() + "</driver>"); + out.println(" <datasources>"); out.println(); - out.println(" <!-- The URL of the database (jdbc:<type>://<hostname>:<port>/<database>) -->"); - out.println(" <url>" + datasourceConfig.getUrl() + "</url>"); - out.println(); - out.println(" <!-- The username connecting to the database -->"); - out.println(" <username>" + datasourceConfig.getUsername() + "</username>"); - out.println(); - out.println(" <!-- The password of the user -->"); - if (datasourceConfig.getPassword() != null) + + for (DataSourceConfig datasource : datasources.values()) { - out.println(" <password>" + datasourceConfig.getPassword() + "</password>"); - } - else - { - out.println(" <password/>"); - } - if (datasourceConfig.getMinIdle() != 0) - { + out.println(" <datasource name=\"" + datasource.getName() + "\">"); + out.println(" <!-- The class of the JDBC driver used -->"); + out.println(" <driver>" + datasource.getDriver() + "</driver>"); out.println(); - out.println(" <!-- The minimum number of idle connections -->"); - out.println(" <min-idle>" + datasourceConfig.getMinIdle() + "</min-idle>"); - } - if (datasourceConfig.getMaxActive() != 0) - { + out.println(" <!-- The URL of the database (jdbc:<type>://<hostname>:<port>/<database>) -->"); + out.println(" <url>" + datasource.getUrl() + "</url>"); out.println(); - out.println(" <!-- The maximum number of active connections -->"); - out.println(" <max-active>" + datasourceConfig.getMaxActive() + "</max-active>"); + out.println(" <!-- The username connecting to the database -->"); + out.println(" <username>" + datasource.getUsername() + "</username>"); + out.println(); + out.println(" <!-- The password of the user -->"); + if (datasource.getPassword() != null) + { + out.println(" <password>" + datasource.getPassword() + "</password>"); + } + else + { + out.println(" <password/>"); + } + if (datasource.getMinIdle() != DataSourceManager.DEFAULT_MIN_IDLE) + { + out.println(); + out.println(" <!-- The minimum number of idle connections -->"); + out.println(" <min-idle>" + datasource.getMinIdle() + "</min-idle>"); + } + if (datasource.getMaxActive() != DataSourceManager.DEFAULT_MAX_ACTIVE) + { + out.println(); + out.println(" <!-- The maximum number of active connections -->"); + out.println(" <max-active>" + datasource.getMaxActive() + "</max-active>"); + } + out.println(" </datasource>"); + out.println(); } - out.println(" </datasource>"); + out.println(" </datasources>"); out.println(); } + out.println("</tetrinet-server>"); @@ -941,16 +950,16 @@ /** * @since 0.3 */ - public DataSourceConfig getDataSource() + public Collection<DataSourceConfig> getDataSources() { - return datasourceConfig; + return datasources.values(); } /** * @since 0.3 */ - public void setDataSource(DataSourceConfig datasourceConfig) + public void addDataSource(DataSourceConfig datasource) { - this.datasourceConfig = datasourceConfig; + datasources.put(datasource.getName(), datasource); } } Modified: jetrix/trunk/src/java/net/jetrix/config/ServerRuleSet.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/config/ServerRuleSet.java 2009-02-18 13:28:05 UTC (rev 796) +++ jetrix/trunk/src/java/net/jetrix/config/ServerRuleSet.java 2009-02-18 14:03:17 UTC (rev 797) @@ -77,7 +77,9 @@ // datasource digester.addObjectCreate("*/datasource", "net.jetrix.config.DataSourceConfig"); - digester.addSetNext("*/datasource", "setDataSource", "net.jetrix.config.DataSourceConfig"); + digester.addSetNext("*/datasource", "addDataSource", "net.jetrix.config.DataSourceConfig"); + digester.addCallMethod("*/datasource", "setName", 1); + digester.addCallParam("*/datasource", 0, "name"); digester.addCallMethod("*/datasource/driver", "setDriver", 0); digester.addCallMethod("*/datasource/url", "setUrl", 0); digester.addCallMethod("*/datasource/username", "setUsername", 0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-18 15:24:33
|
Revision: 798 http://jetrix.svn.sourceforge.net/jetrix/?rev=798&view=rev Author: smanux Date: 2009-02-18 15:24:28 +0000 (Wed, 18 Feb 2009) Log Message: ----------- Restructuration of the messages hierarchy Modified Paths: -------------- jetrix/trunk/src/java/net/jetrix/Channel.java jetrix/trunk/src/java/net/jetrix/Field.java jetrix/trunk/src/java/net/jetrix/Server.java jetrix/trunk/src/java/net/jetrix/agent/TSpecAgent.java jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java jetrix/trunk/src/java/net/jetrix/clients/QueryClient.java jetrix/trunk/src/java/net/jetrix/clients/TSpecClient.java jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java jetrix/trunk/src/java/net/jetrix/commands/AwayCommand.java jetrix/trunk/src/java/net/jetrix/commands/BroadcastCommand.java jetrix/trunk/src/java/net/jetrix/commands/Command.java jetrix/trunk/src/java/net/jetrix/commands/CommandManager.java jetrix/trunk/src/java/net/jetrix/commands/ConfigCommand.java jetrix/trunk/src/java/net/jetrix/commands/EmoteCommand.java jetrix/trunk/src/java/net/jetrix/commands/GotoCommand.java jetrix/trunk/src/java/net/jetrix/commands/HelpCommand.java jetrix/trunk/src/java/net/jetrix/commands/IgnoreCommand.java jetrix/trunk/src/java/net/jetrix/commands/IpCommand.java jetrix/trunk/src/java/net/jetrix/commands/JoinCommand.java jetrix/trunk/src/java/net/jetrix/commands/KickCommand.java jetrix/trunk/src/java/net/jetrix/commands/LanguageCommand.java jetrix/trunk/src/java/net/jetrix/commands/ListCommand.java jetrix/trunk/src/java/net/jetrix/commands/ModeCommand.java jetrix/trunk/src/java/net/jetrix/commands/MotdCommand.java jetrix/trunk/src/java/net/jetrix/commands/MoveCommand.java jetrix/trunk/src/java/net/jetrix/commands/OperatorCommand.java jetrix/trunk/src/java/net/jetrix/commands/PauseCommand.java jetrix/trunk/src/java/net/jetrix/commands/PetitionCommand.java jetrix/trunk/src/java/net/jetrix/commands/PingCommand.java jetrix/trunk/src/java/net/jetrix/commands/RandomCommand.java jetrix/trunk/src/java/net/jetrix/commands/ReplyCommand.java jetrix/trunk/src/java/net/jetrix/commands/SpecListCommand.java jetrix/trunk/src/java/net/jetrix/commands/StartCommand.java jetrix/trunk/src/java/net/jetrix/commands/StopCommand.java jetrix/trunk/src/java/net/jetrix/commands/SummonCommand.java jetrix/trunk/src/java/net/jetrix/commands/TeamMessageCommand.java jetrix/trunk/src/java/net/jetrix/commands/TeleportCommand.java jetrix/trunk/src/java/net/jetrix/commands/TellCommand.java jetrix/trunk/src/java/net/jetrix/commands/TimeCommand.java jetrix/trunk/src/java/net/jetrix/commands/VersionCommand.java jetrix/trunk/src/java/net/jetrix/commands/WhoCommand.java jetrix/trunk/src/java/net/jetrix/filter/AmplifierFilter.java jetrix/trunk/src/java/net/jetrix/filter/CommandFilter.java jetrix/trunk/src/java/net/jetrix/filter/FloodFilter.java jetrix/trunk/src/java/net/jetrix/filter/GenericFilter.java jetrix/trunk/src/java/net/jetrix/filter/LogoFilter.java jetrix/trunk/src/java/net/jetrix/filter/PingFilter.java jetrix/trunk/src/java/net/jetrix/filter/PuzzleFilter.java jetrix/trunk/src/java/net/jetrix/filter/RandomFilter.java jetrix/trunk/src/java/net/jetrix/filter/StartFilter.java jetrix/trunk/src/java/net/jetrix/filter/StatsFilter.java jetrix/trunk/src/java/net/jetrix/filter/SuddenDeathFilter.java jetrix/trunk/src/java/net/jetrix/filter/SurvivalFilter.java jetrix/trunk/src/java/net/jetrix/filter/TetrisFilter.java jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java jetrix/trunk/src/java/net/jetrix/listeners/interceptor/MotdInterceptor.java jetrix/trunk/src/java/net/jetrix/listeners/interceptor/OnlineUsersInterceptor.java jetrix/trunk/src/java/net/jetrix/protocols/ConsoleProtocol.java jetrix/trunk/src/java/net/jetrix/protocols/IRCProtocol.java jetrix/trunk/src/java/net/jetrix/protocols/QueryProtocol.java jetrix/trunk/src/java/net/jetrix/protocols/TetrifastProtocol.java jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java jetrix/trunk/src/java/net/jetrix/protocols/TspecProtocol.java jetrix/trunk/src/java/net/jetrix/winlist/SimpleWinlist.java jetrix/trunk/src/test/net/jetrix/FieldTest.java jetrix/trunk/src/test/net/jetrix/MessageTest.java jetrix/trunk/src/test/net/jetrix/agent/TSpecAgentTest.java jetrix/trunk/src/test/net/jetrix/agent/TetrinetAgentTest.java jetrix/trunk/src/test/net/jetrix/commands/CommandManagerTest.java jetrix/trunk/src/test/net/jetrix/messages/CommandMessageTest.java jetrix/trunk/src/test/net/jetrix/protocols/QueryProtocolTest.java jetrix/trunk/src/test/net/jetrix/protocols/TSpecProtocolTest.java jetrix/trunk/src/test/net/jetrix/protocols/TetrifastProtocolTest.java jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java Added Paths: ----------- jetrix/trunk/src/java/net/jetrix/messages/channel/ jetrix/trunk/src/java/net/jetrix/messages/channel/ChannelMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/CommandMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/EndGameMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/FieldMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/GmsgMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/IngameMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/JoinMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/LeaveMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/LevelMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/NewGameMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/PauseMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/PlayerLostMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/PlayerNumMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/PlayerWonMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/PlineActMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/PlineMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/ResumeMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/SmsgMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/StartGameMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/StopGameMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/TeamMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/TextMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/package.html jetrix/trunk/src/java/net/jetrix/messages/channel/specials/ jetrix/trunk/src/java/net/jetrix/messages/channel/specials/AddLineMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/specials/BlockBombMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/specials/BlockQuakeMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/specials/ClearLineMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/specials/ClearSpecialsMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/specials/FourLinesAddedMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/specials/GravityMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/specials/NukeFieldMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/specials/OneLineAddedMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/specials/RandomClearMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/specials/SpecialMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/specials/SwitchFieldsMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/specials/TwoLinesAddedMessage.java jetrix/trunk/src/java/net/jetrix/messages/channel/specials/package.html Removed Paths: ------------- jetrix/trunk/src/java/net/jetrix/messages/AddLineMessage.java jetrix/trunk/src/java/net/jetrix/messages/BlockBombMessage.java jetrix/trunk/src/java/net/jetrix/messages/BlockQuakeMessage.java jetrix/trunk/src/java/net/jetrix/messages/ChannelMessage.java jetrix/trunk/src/java/net/jetrix/messages/ClearLineMessage.java jetrix/trunk/src/java/net/jetrix/messages/ClearSpecialsMessage.java jetrix/trunk/src/java/net/jetrix/messages/CommandMessage.java jetrix/trunk/src/java/net/jetrix/messages/EndGameMessage.java jetrix/trunk/src/java/net/jetrix/messages/FieldMessage.java jetrix/trunk/src/java/net/jetrix/messages/FourLinesAddedMessage.java jetrix/trunk/src/java/net/jetrix/messages/GmsgMessage.java jetrix/trunk/src/java/net/jetrix/messages/GravityMessage.java jetrix/trunk/src/java/net/jetrix/messages/IngameMessage.java jetrix/trunk/src/java/net/jetrix/messages/JoinMessage.java jetrix/trunk/src/java/net/jetrix/messages/LeaveMessage.java jetrix/trunk/src/java/net/jetrix/messages/LevelMessage.java jetrix/trunk/src/java/net/jetrix/messages/NewGameMessage.java jetrix/trunk/src/java/net/jetrix/messages/NukeFieldMessage.java jetrix/trunk/src/java/net/jetrix/messages/OneLineAddedMessage.java jetrix/trunk/src/java/net/jetrix/messages/PauseMessage.java jetrix/trunk/src/java/net/jetrix/messages/PlayerLostMessage.java jetrix/trunk/src/java/net/jetrix/messages/PlayerNumMessage.java jetrix/trunk/src/java/net/jetrix/messages/PlayerWonMessage.java jetrix/trunk/src/java/net/jetrix/messages/PlineActMessage.java jetrix/trunk/src/java/net/jetrix/messages/PlineMessage.java jetrix/trunk/src/java/net/jetrix/messages/RandomClearMessage.java jetrix/trunk/src/java/net/jetrix/messages/ResumeMessage.java jetrix/trunk/src/java/net/jetrix/messages/SmsgMessage.java jetrix/trunk/src/java/net/jetrix/messages/SpecialMessage.java jetrix/trunk/src/java/net/jetrix/messages/StartGameMessage.java jetrix/trunk/src/java/net/jetrix/messages/StopGameMessage.java jetrix/trunk/src/java/net/jetrix/messages/SwitchFieldsMessage.java jetrix/trunk/src/java/net/jetrix/messages/TeamMessage.java jetrix/trunk/src/java/net/jetrix/messages/TextMessage.java jetrix/trunk/src/java/net/jetrix/messages/TwoLinesAddedMessage.java Modified: jetrix/trunk/src/java/net/jetrix/Channel.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/Channel.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/Channel.java 2009-02-18 15:24:28 UTC (rev 798) @@ -30,6 +30,8 @@ import net.jetrix.config.*; import net.jetrix.filter.*; import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; +import net.jetrix.messages.channel.specials.*; import net.jetrix.winlist.*; import net.jetrix.clients.TetrinetClient; Modified: jetrix/trunk/src/java/net/jetrix/Field.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/Field.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/Field.java 2009-02-18 15:24:28 UTC (rev 798) @@ -26,7 +26,7 @@ import java.io.*; import net.jetrix.config.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; /** * A game field. @@ -229,7 +229,7 @@ /** * Return the string representing this field as used in the - * {@link FieldMessage} messages. + * {@link net.jetrix.messages.channel.FieldMessage} messages. */ public String getFieldString() { Modified: jetrix/trunk/src/java/net/jetrix/Server.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/Server.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/Server.java 2009-02-18 15:24:28 UTC (rev 798) @@ -28,6 +28,7 @@ import net.jetrix.commands.*; import net.jetrix.config.*; import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; import net.jetrix.services.VersionService; import net.jetrix.listeners.ShutdownListener; Modified: jetrix/trunk/src/java/net/jetrix/agent/TSpecAgent.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/agent/TSpecAgent.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/agent/TSpecAgent.java 2009-02-18 15:24:28 UTC (rev 798) @@ -21,8 +21,7 @@ import java.io.IOException; -import net.jetrix.messages.PlayerNumMessage; -import net.jetrix.messages.TeamMessage; +import net.jetrix.messages.channel.*; import net.jetrix.protocols.TspecProtocol; /** Modified: jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java 2009-02-18 15:24:28 UTC (rev 798) @@ -32,6 +32,8 @@ import net.jetrix.Protocol; import net.jetrix.protocols.TetrinetProtocol; import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; +import net.jetrix.messages.channel.specials.*; /** * Tetrinet agent to log on a server as a player. Modified: jetrix/trunk/src/java/net/jetrix/clients/QueryClient.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/clients/QueryClient.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/clients/QueryClient.java 2009-02-18 15:24:28 UTC (rev 798) @@ -26,6 +26,7 @@ import net.jetrix.*; import net.jetrix.config.*; import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; import net.jetrix.protocols.*; /** Modified: jetrix/trunk/src/java/net/jetrix/clients/TSpecClient.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/clients/TSpecClient.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/clients/TSpecClient.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,7 +22,7 @@ import java.io.IOException; import net.jetrix.Message; -import net.jetrix.messages.SmsgMessage; +import net.jetrix.messages.channel.SmsgMessage; /** * Spectator client. Modified: jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java 2009-02-18 15:24:28 UTC (rev 798) @@ -28,6 +28,7 @@ import net.jetrix.*; import net.jetrix.config.*; import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; /** * Layer handling communication with a tetrinet or tetrifast client. Incomming Modified: jetrix/trunk/src/java/net/jetrix/commands/AwayCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/AwayCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/AwayCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -21,9 +21,8 @@ import java.util.Locale; -import net.jetrix.messages.CommandMessage; -import net.jetrix.messages.PlineMessage; -import net.jetrix.AccessLevel; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; import net.jetrix.Language; import net.jetrix.User; import net.jetrix.Client; Modified: jetrix/trunk/src/java/net/jetrix/commands/BroadcastCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/BroadcastCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/BroadcastCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -21,7 +21,8 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Send a message to all clients on the server. Modified: jetrix/trunk/src/java/net/jetrix/commands/Command.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/Command.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/Command.java 2009-02-18 15:24:28 UTC (rev 798) @@ -21,7 +21,7 @@ import java.util.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; /** * A command consummes a CommandMessage to execute a specific operation. Modified: jetrix/trunk/src/java/net/jetrix/commands/CommandManager.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/CommandManager.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/CommandManager.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,7 +22,8 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * CommandManager Modified: jetrix/trunk/src/java/net/jetrix/commands/ConfigCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/ConfigCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/ConfigCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -26,7 +26,8 @@ import net.jetrix.*; import net.jetrix.config.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Display the channel settings. Modified: jetrix/trunk/src/java/net/jetrix/commands/EmoteCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/EmoteCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/EmoteCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,7 +22,8 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineActMessage; /** * Display an emote. Modified: jetrix/trunk/src/java/net/jetrix/commands/GotoCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/GotoCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/GotoCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,6 +22,8 @@ import net.jetrix.*; import net.jetrix.config.*; import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; import java.util.*; Modified: jetrix/trunk/src/java/net/jetrix/commands/HelpCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/HelpCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/HelpCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,7 +22,8 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * List all commands available. Modified: jetrix/trunk/src/java/net/jetrix/commands/IgnoreCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/IgnoreCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/IgnoreCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,7 +22,8 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; import org.apache.commons.lang.*; /** Modified: jetrix/trunk/src/java/net/jetrix/commands/IpCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/IpCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/IpCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,7 +22,8 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Display the IP of a player. Modified: jetrix/trunk/src/java/net/jetrix/commands/JoinCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/JoinCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/JoinCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -20,11 +20,12 @@ package net.jetrix.commands; import java.util.*; -import java.util.logging.*; import net.jetrix.*; import net.jetrix.config.*; import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Join or create a channel. Modified: jetrix/trunk/src/java/net/jetrix/commands/KickCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/KickCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/KickCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -20,10 +20,10 @@ package net.jetrix.commands; import java.util.*; -import java.util.logging.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Kick a player out of the server. Modified: jetrix/trunk/src/java/net/jetrix/commands/LanguageCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/LanguageCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/LanguageCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,7 +22,8 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Set the language of the user. Modified: jetrix/trunk/src/java/net/jetrix/commands/ListCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/ListCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/ListCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -25,7 +25,8 @@ import net.jetrix.*; import net.jetrix.config.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * List available channels. Modified: jetrix/trunk/src/java/net/jetrix/commands/ModeCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/ModeCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/ModeCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,7 +22,8 @@ import java.util.Locale; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; import net.jetrix.config.*; import net.jetrix.*; Modified: jetrix/trunk/src/java/net/jetrix/commands/MotdCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/MotdCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/MotdCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -21,7 +21,8 @@ import net.jetrix.*; import net.jetrix.config.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Display the message of the day. Modified: jetrix/trunk/src/java/net/jetrix/commands/MoveCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/MoveCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/MoveCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -23,6 +23,7 @@ import net.jetrix.*; import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; /** * Move a player to a new slot or switch two players. Modified: jetrix/trunk/src/java/net/jetrix/commands/OperatorCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/OperatorCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/OperatorCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -20,11 +20,11 @@ package net.jetrix.commands; import java.util.*; -import java.util.logging.*; import net.jetrix.*; import net.jetrix.config.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Grant operator status to the player. Modified: jetrix/trunk/src/java/net/jetrix/commands/PauseCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/PauseCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/PauseCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -21,9 +21,11 @@ import static net.jetrix.GameState.*; -import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.ChannelMessage; +import net.jetrix.messages.channel.PauseMessage; +import net.jetrix.messages.channel.ResumeMessage; +import net.jetrix.messages.channel.CommandMessage; /** * Pause the game. Modified: jetrix/trunk/src/java/net/jetrix/commands/PetitionCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/PetitionCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/PetitionCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -20,7 +20,8 @@ package net.jetrix.commands; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; import java.util.*; Modified: jetrix/trunk/src/java/net/jetrix/commands/PingCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/PingCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/PingCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -19,10 +19,9 @@ package net.jetrix.commands; -import java.util.*; - import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.PlayerNumMessage; +import net.jetrix.messages.channel.CommandMessage; /** * Display the ping to the server. To compute the ping of tetrinet and Modified: jetrix/trunk/src/java/net/jetrix/commands/RandomCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/RandomCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/RandomCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -23,7 +23,8 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Display a random number. Modified: jetrix/trunk/src/java/net/jetrix/commands/ReplyCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/ReplyCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/ReplyCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -21,7 +21,8 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Reply to a private message sent by a player. Modified: jetrix/trunk/src/java/net/jetrix/commands/SpecListCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/SpecListCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/SpecListCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -21,7 +21,8 @@ import java.util.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; import net.jetrix.*; /** Modified: jetrix/trunk/src/java/net/jetrix/commands/StartCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/StartCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/StartCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -24,7 +24,10 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.StartGameMessage; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.GmsgMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Start the game. Modified: jetrix/trunk/src/java/net/jetrix/commands/StopCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/StopCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/StopCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -19,9 +19,9 @@ package net.jetrix.commands; -import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.StopGameMessage; +import net.jetrix.messages.channel.CommandMessage; /** * Stop the game. Modified: jetrix/trunk/src/java/net/jetrix/commands/SummonCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/SummonCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/SummonCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,6 +22,8 @@ import java.util.*; import net.jetrix.*; import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Summon a player to the current channel. Modified: jetrix/trunk/src/java/net/jetrix/commands/TeamMessageCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/TeamMessageCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/TeamMessageCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,7 +22,8 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Send a message to all members of the player's team. Modified: jetrix/trunk/src/java/net/jetrix/commands/TeleportCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/TeleportCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/TeleportCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -23,6 +23,8 @@ import net.jetrix.*; import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Teleport a player to another channel. Modified: jetrix/trunk/src/java/net/jetrix/commands/TellCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/TellCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/TellCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -21,7 +21,8 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Send a private message to a player. Modified: jetrix/trunk/src/java/net/jetrix/commands/TimeCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/TimeCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/TimeCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,8 +22,8 @@ import java.util.*; import java.text.*; import net.jetrix.*; -import net.jetrix.config.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Display the server's time. Modified: jetrix/trunk/src/java/net/jetrix/commands/VersionCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/VersionCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/VersionCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -21,7 +21,8 @@ import net.jetrix.*; import net.jetrix.config.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Display the version of the server. Modified: jetrix/trunk/src/java/net/jetrix/commands/WhoCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/WhoCommand.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/commands/WhoCommand.java 2009-02-18 15:24:28 UTC (rev 798) @@ -19,10 +19,10 @@ package net.jetrix.commands; -import java.util.*; import net.jetrix.*; import net.jetrix.config.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; +import net.jetrix.messages.channel.PlineMessage; /** * List all players connected to the server. Modified: jetrix/trunk/src/java/net/jetrix/filter/AmplifierFilter.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/AmplifierFilter.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/filter/AmplifierFilter.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,8 +22,7 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.config.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.specials.SpecialMessage; /** * Amplifies specials sent. One line sent will turn into two lines, a tetris Modified: jetrix/trunk/src/java/net/jetrix/filter/CommandFilter.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/CommandFilter.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/filter/CommandFilter.java 2009-02-18 15:24:28 UTC (rev 798) @@ -23,7 +23,7 @@ import java.util.logging.*; import net.jetrix.Message; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.CommandMessage; import net.jetrix.commands.*; /** Modified: jetrix/trunk/src/java/net/jetrix/filter/FloodFilter.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/FloodFilter.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/filter/FloodFilter.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,8 +22,7 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.config.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.PlineMessage; /** * Blocks spam over pline. Modified: jetrix/trunk/src/java/net/jetrix/filter/GenericFilter.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/GenericFilter.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/filter/GenericFilter.java 2009-02-18 15:24:28 UTC (rev 798) @@ -23,7 +23,8 @@ import java.util.logging.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; +import net.jetrix.messages.channel.specials.*; /** * Defines a generic filter to be used and extended by filter developers. Modified: jetrix/trunk/src/java/net/jetrix/filter/LogoFilter.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/LogoFilter.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/filter/LogoFilter.java 2009-02-18 15:24:28 UTC (rev 798) @@ -23,7 +23,7 @@ import java.io.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; /** * Display a logo on the field of players losing the game. Modified: jetrix/trunk/src/java/net/jetrix/filter/PingFilter.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/PingFilter.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/filter/PingFilter.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,7 +22,7 @@ import java.util.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; /** * Display the ping of the player if a <tt>team</tt> message is processed Modified: jetrix/trunk/src/java/net/jetrix/filter/PuzzleFilter.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/PuzzleFilter.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/filter/PuzzleFilter.java 2009-02-18 15:24:28 UTC (rev 798) @@ -23,7 +23,7 @@ import net.jetrix.*; import net.jetrix.config.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; /** * Set the game field and settings when the game starts. A new puzzle is Modified: jetrix/trunk/src/java/net/jetrix/filter/RandomFilter.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/RandomFilter.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/filter/RandomFilter.java 2009-02-18 15:24:28 UTC (rev 798) @@ -21,9 +21,9 @@ import java.util.*; -import net.jetrix.messages.*; import net.jetrix.*; import net.jetrix.config.*; +import net.jetrix.messages.channel.*; /** * A filter randomizing the blocks and the specials occurancies when the game starts. Modified: jetrix/trunk/src/java/net/jetrix/filter/StartFilter.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/StartFilter.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/filter/StartFilter.java 2009-02-18 15:24:28 UTC (rev 798) @@ -25,8 +25,7 @@ import net.jetrix.*; import net.jetrix.commands.StartCommand; -import net.jetrix.config.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; /** * Starts the game automatically once everyone said "go". Modified: jetrix/trunk/src/java/net/jetrix/filter/StatsFilter.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/StatsFilter.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/filter/StatsFilter.java 2009-02-18 15:24:28 UTC (rev 798) @@ -25,7 +25,8 @@ import java.text.*; import net.jetrix.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; +import net.jetrix.messages.channel.specials.*; import org.apache.commons.lang.time.StopWatch; /** Modified: jetrix/trunk/src/java/net/jetrix/filter/SuddenDeathFilter.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/SuddenDeathFilter.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/filter/SuddenDeathFilter.java 2009-02-18 15:24:28 UTC (rev 798) @@ -24,7 +24,8 @@ import net.jetrix.*; import net.jetrix.config.*; -import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; +import net.jetrix.messages.channel.specials.*; import java.util.*; Modified: jetrix/trunk/src/java/net/jetrix/filter/SurvivalFilter.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/SurvivalFilter.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/filter/SurvivalFilter.java 2009-02-18 15:24:28 UTC (rev 798) @@ -21,11 +21,8 @@ import java.util.*; -import net.jetrix.messages.OneLineAddedMessage; -import net.jetrix.messages.TwoLinesAddedMessage; -import net.jetrix.messages.FourLinesAddedMessage; -import net.jetrix.messages.ClearLineMessage; import net.jetrix.Message; +import net.jetrix.messages.channel.specials.*; /** * Survival mode. Every time the player clears 2 or more lines, he received Modified: jetrix/trunk/src/java/net/jetrix/filter/TetrisFilter.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/TetrisFilter.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/filter/TetrisFilter.java 2009-02-18 15:24:28 UTC (rev 798) @@ -19,9 +19,9 @@ package net.jetrix.filter; -import net.jetrix.messages.*; import net.jetrix.*; -import net.jetrix.config.*; +import net.jetrix.messages.channel.*; +import net.jetrix.messages.channel.specials.*; import java.util.*; Modified: jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java 2009-02-18 15:24:28 UTC (rev 798) @@ -26,6 +26,7 @@ import net.jetrix.*; import net.jetrix.clients.*; import net.jetrix.messages.*; +import net.jetrix.messages.channel.*; import net.jetrix.protocols.*; /** Modified: jetrix/trunk/src/java/net/jetrix/listeners/interceptor/MotdInterceptor.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/listeners/interceptor/MotdInterceptor.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/listeners/interceptor/MotdInterceptor.java 2009-02-18 15:24:28 UTC (rev 798) @@ -23,7 +23,7 @@ import net.jetrix.Server; import net.jetrix.clients.QueryClient; import net.jetrix.config.ServerConfig; -import net.jetrix.messages.PlineMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Interceptor displaying the message of the day. Modified: jetrix/trunk/src/java/net/jetrix/listeners/interceptor/OnlineUsersInterceptor.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/listeners/interceptor/OnlineUsersInterceptor.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/listeners/interceptor/OnlineUsersInterceptor.java 2009-02-18 15:24:28 UTC (rev 798) @@ -22,7 +22,7 @@ import net.jetrix.Client; import net.jetrix.ClientRepository; import net.jetrix.clients.QueryClient; -import net.jetrix.messages.PlineMessage; +import net.jetrix.messages.channel.PlineMessage; /** * Interceptor displaying the number of players and spectators currently online. Deleted: jetrix/trunk/src/java/net/jetrix/messages/AddLineMessage.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/messages/AddLineMessage.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/messages/AddLineMessage.java 2009-02-18 15:24:28 UTC (rev 798) @@ -1,32 +0,0 @@ -/** - * Jetrix TetriNET Server - * Copyright (C) 2001-2003 Emmanuel Bourg - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -package net.jetrix.messages; - -/** - * - * - * @author Emmanuel Bourg - * @version $Revision$, $Date$ - */ -public class AddLineMessage extends SpecialMessage -{ - - -} Deleted: jetrix/trunk/src/java/net/jetrix/messages/BlockBombMessage.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/messages/BlockBombMessage.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/messages/BlockBombMessage.java 2009-02-18 15:24:28 UTC (rev 798) @@ -1,34 +0,0 @@ -/** - * Jetrix TetriNET Server - * Copyright (C) 2001-2003 Emmanuel Bourg - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -package net.jetrix.messages; - -import net.jetrix.*; - -/** - * - * - * @author Emmanuel Bourg - * @version $Revision$, $Date$ - */ -public class BlockBombMessage extends SpecialMessage -{ - - -} Deleted: jetrix/trunk/src/java/net/jetrix/messages/BlockQuakeMessage.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/messages/BlockQuakeMessage.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/messages/BlockQuakeMessage.java 2009-02-18 15:24:28 UTC (rev 798) @@ -1,34 +0,0 @@ -/** - * Jetrix TetriNET Server - * Copyright (C) 2001-2003 Emmanuel Bourg - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -package net.jetrix.messages; - -import net.jetrix.*; - -/** - * - * - * @author Emmanuel Bourg - * @version $Revision$, $Date$ - */ -public class BlockQuakeMessage extends SpecialMessage -{ - - -} Deleted: jetrix/trunk/src/java/net/jetrix/messages/ChannelMessage.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/messages/ChannelMessage.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/messages/ChannelMessage.java 2009-02-18 15:24:28 UTC (rev 798) @@ -1,54 +0,0 @@ -/** - * Jetrix TetriNET Server - * Copyright (C) 2001-2003 Emmanuel Bourg - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -package net.jetrix.messages; - -import net.jetrix.*; - -/** - * A channel message. - * - * @author Emmanuel Bourg - * @version $Revision$, $Date$ - */ -public abstract class ChannelMessage extends Message -{ - private int slot; - private String channelName; - - public int getSlot() - { - return slot; - } - - public void setSlot(int slot) - { - this.slot = slot; - } - - public String getChannelName() - { - return channelName; - } - - public void setChannelName(String channelName) - { - this.channelName = channelName; - } -} Deleted: jetrix/trunk/src/java/net/jetrix/messages/ClearLineMessage.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/messages/ClearLineMessage.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/messages/ClearLineMessage.java 2009-02-18 15:24:28 UTC (rev 798) @@ -1,34 +0,0 @@ -/** - * Jetrix TetriNET Server - * Copyright (C) 2001-2003 Emmanuel Bourg - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -package net.jetrix.messages; - -import net.jetrix.*; - -/** - * - * - * @author Emmanuel Bourg - * @version $Revision$, $Date$ - */ -public class ClearLineMessage extends SpecialMessage -{ - - -} Deleted: jetrix/trunk/src/java/net/jetrix/messages/ClearSpecialsMessage.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/messages/ClearSpecialsMessage.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/messages/ClearSpecialsMessage.java 2009-02-18 15:24:28 UTC (rev 798) @@ -1,34 +0,0 @@ -/** - * Jetrix TetriNET Server - * Copyright (C) 2001-2003 Emmanuel Bourg - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -package net.jetrix.messages; - -import net.jetrix.*; - -/** - * - * - * @author Emmanuel Bourg - * @version $Revision$, $Date$ - */ -public class ClearSpecialsMessage extends SpecialMessage -{ - - -} Deleted: jetrix/trunk/src/java/net/jetrix/messages/CommandMessage.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/messages/CommandMessage.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/messages/CommandMessage.java 2009-02-18 15:24:28 UTC (rev 798) @@ -1,178 +0,0 @@ -/** - * Jetrix TetriNET Server - * Copyright (C) 2001-2003 Emmanuel Bourg - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -package net.jetrix.messages; - -import java.util.*; - -import net.jetrix.*; - -/** - * A /command. - * - * @author Emmanuel Bourg - * @version $Revision$, $Date$ - */ -public class CommandMessage extends TextMessage -{ - private String command; - private List<String> parameters; - - public CommandMessage() - { - parameters = new ArrayList<String>(); - } - - public String getCommand() - { - return command; - } - - public void setCommand(String command) - { - this.command = command; - } - - public String getParameter(int i) - { - return parameters.get(i); - } - - /** - * Return an integer parameter, or the default value if the specified - * parameter doesn't map to an integer value. - * - * @param i the index of the parameter - * @param defaultValue the default value - */ - public int getIntParameter(int i, int defaultValue) - { - int value; - - try - { - value = Integer.parseInt(parameters.get(i)); - } - catch (Exception e) - { - value = defaultValue; - } - - return value; - } - - /** - * Return an integer parameter, or null if the specified parameter - * doesn't map to an integer value. - * - * @param i the index of the parameter - */ - public Integer getIntegerParameter(int i) - { - Integer value; - - try - { - value = Integer.valueOf(parameters.get(i)); - } - catch (Exception e) - { - value = null; - } - - return value; - } - - /** - * Return the Client object associated to the i-th parameter of the command. - * The client can be specified as a slot number if he is in the same channel - * as the client issuing the command, or as a case insensitive name. If no - * client matches the specified parameter a null value is returned. - */ - public Client getClientParameter(int i) - { - Client client = null; - String param = getParameter(i); - - // check if the parameter is a slot number - try - { - int slot = Integer.parseInt(param); - if (slot >= 1 && slot <= 6) - { - // find the channel of the client issuing this command - if (getSource() instanceof Client) - { - Channel channel = ((Client) getSource()).getChannel(); - client = channel.getClient(slot); - } - } - } - catch (NumberFormatException e) { } - - if (client == null) - { - // the client is still null, the parameter may be a playername - ClientRepository repository = ClientRepository.getInstance(); - client = repository.getClient(param); - } - - return client; - } - - /** - * Returns the channel associated to the i-th parameter of the command. The - * channel can be specified by a partial name or by its number. If no channel - * matches the specified parameter a null value is returned. - */ - public Channel getChannelParameter(int i) - { - Channel channel = null; - String param = getParameter(i); - - try - { - // trying to parse the number - int num = Integer.parseInt(param) - 1; - channel = ChannelManager.getInstance().getChannel(num); - } - catch (NumberFormatException e) - { - channel = ChannelManager.getInstance().getChannel(param, true); - } - - return channel; - } - - /** - * Add a parameter to the command. - */ - public void addParameter(String obj) - { - parameters.add(obj); - } - - /** - * Return the number of parameters on this command. - */ - public int getParameterCount() - { - return parameters.size(); - } -} Deleted: jetrix/trunk/src/java/net/jetrix/messages/EndGameMessage.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/messages/EndGameMessage.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/messages/EndGameMessage.java 2009-02-18 15:24:28 UTC (rev 798) @@ -1,34 +0,0 @@ -/** - * Jetrix TetriNET Server - * Copyright (C) 2001-2003 Emmanuel Bourg - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -package net.jetrix.messages; - -import net.jetrix.*; - -/** - * - * - * @author Emmanuel Bourg - * @version $Revision$, $Date$ - */ -public class EndGameMessage extends ChannelMessage -{ - - -} Deleted: jetrix/trunk/src/java/net/jetrix/messages/FieldMessage.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/messages/FieldMessage.java 2009-02-18 14:03:17 UTC (rev 797) +++ jetrix/trunk/src/java/net/jetrix/messages/FieldMessage.java 2009-02-18 15:24:28 UTC (rev 798) @@ -1,57 +0,0 @@ -/** - * Jetrix TetriNET Server - * Copyright (C) 2001-2003 Emmanuel Bourg - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -package net.jetrix.messages; - -import net.jetrix.*; - -/** - * A field change message. - * - * @author Emmanuel Bourg - * @version $Revision$, $Date$ - */ -public class FieldMessage extends ChannelMessage -{ - private String field; - - public FieldMessage() { } - - public FieldMessage(String field) - { - this(0, field); - } - - public FieldMessage(int slot, String field) - { - setSlot(sl... [truncated message content] |
From: <sm...@us...> - 2010-03-08 09:04:52
|
Revision: 833 http://jetrix.svn.sourceforge.net/jetrix/?rev=833&view=rev Author: smanux Date: 2010-03-08 09:04:45 +0000 (Mon, 08 Mar 2010) Log Message: ----------- Simplified the Block and Special enums Modified Paths: -------------- jetrix/trunk/src/java/net/jetrix/commands/ModeCommand.java jetrix/trunk/src/java/net/jetrix/config/Block.java jetrix/trunk/src/java/net/jetrix/config/Settings.java jetrix/trunk/src/java/net/jetrix/config/Special.java jetrix/trunk/src/java/net/jetrix/filter/DownstackPuzzleGenerator.java jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java jetrix/trunk/src/test/net/jetrix/filter/DownstackPuzzleGeneratorTest.java Modified: jetrix/trunk/src/java/net/jetrix/commands/ModeCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/ModeCommand.java 2010-03-07 00:23:41 UTC (rev 832) +++ jetrix/trunk/src/java/net/jetrix/commands/ModeCommand.java 2010-03-08 09:04:45 UTC (rev 833) @@ -64,7 +64,7 @@ { for (Block block : Block.values()) { - settings.setOccurancy(block, mode[block.getValue()]); + settings.setOccurancy(block, mode[block.ordinal()]); } settings.setLinesPerSpecial(mode[7]); Modified: jetrix/trunk/src/java/net/jetrix/config/Block.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/config/Block.java 2010-03-07 00:23:41 UTC (rev 832) +++ jetrix/trunk/src/java/net/jetrix/config/Block.java 2010-03-08 09:04:45 UTC (rev 833) @@ -33,35 +33,21 @@ */ public enum Block { - LINE(0, "line"), - SQUARE(1, "square"), - LEFTL(2, "leftl"), - RIGHTL(3, "rightl"), - LEFTZ(4, "leftz"), - RIGHTZ(5, "rightz"), - HALFCROSS(6, "halfcross"); + LINE, + SQUARE, + LEFTL, + RIGHTL, + LEFTZ, + RIGHTZ, + HALFCROSS; - private int value; - private String code; - - Block(int value, String code) - { - this.value = value; - this.code = code; - } - - public int getValue() - { - return value; - } - public String getCode() { - return code; + return name().toLowerCase(); } public String getName(Locale locale) { - return Language.getText("command.config.blocks." + code, locale); + return Language.getText("command.config.blocks." + getCode(), locale); } } Modified: jetrix/trunk/src/java/net/jetrix/config/Settings.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/config/Settings.java 2010-03-07 00:23:41 UTC (rev 832) +++ jetrix/trunk/src/java/net/jetrix/config/Settings.java 2010-03-08 09:04:45 UTC (rev 833) @@ -211,12 +211,12 @@ public int getOccurancy(Block piece) { - return isDefaultBlockOccurancy() ? defaultSettings.getOccurancy(piece) : blockOccurancy[piece.getValue()]; + return isDefaultBlockOccurancy() ? defaultSettings.getOccurancy(piece) : blockOccurancy[piece.ordinal()]; } public int getOccurancy(Special special) { - return isDefaultSpecialOccurancy() ? defaultSettings.getOccurancy(special) : specialOccurancy[special.getValue()]; + return isDefaultSpecialOccurancy() ? defaultSettings.getOccurancy(special) : specialOccurancy[special.ordinal()]; } public void setStartingLevel(int startingLevel) @@ -341,7 +341,7 @@ Arrays.fill(blockOccurancy, 0); } - blockOccurancy[block.getValue()] = occurancy; + blockOccurancy[block.ordinal()] = occurancy; } /** @@ -360,7 +360,7 @@ Arrays.fill(specialOccurancy, 0); } - specialOccurancy[special.getValue()] = occurancy; + specialOccurancy[special.ordinal()] = occurancy; } /** Modified: jetrix/trunk/src/java/net/jetrix/config/Special.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/config/Special.java 2010-03-07 00:23:41 UTC (rev 832) +++ jetrix/trunk/src/java/net/jetrix/config/Special.java 2010-03-08 09:04:45 UTC (rev 833) @@ -33,32 +33,23 @@ */ public enum Special { - ADDLINE(0, 'a', "addline"), - CLEARLINE(1, 'c', "clearline"), - NUKEFIELD(2, 'n', "nukefield"), - RANDOMCLEAR(3, 'r', "randomclear"), - SWITCHFIELD(4, 's', "switchfield"), - CLEARSPECIAL(5, 'b', "clearspecial"), - GRAVITY(6, 'g', "gravity"), - QUAKEFIELD(7, 'q', "quakefield"), - BLOCKBOMB(8, 'o', "blockbomb"); + ADDLINE('a'), + CLEARLINE('c'), + NUKEFIELD('n'), + RANDOMCLEAR('r'), + SWITCHFIELD('s'), + CLEARSPECIAL('b'), + GRAVITY('g'), + QUAKEFIELD('q'), + BLOCKBOMB('o'); - private int value; private final char letter; - private String code; - Special(int value, char letter, String code) + Special(char letter) { - this.value = value; this.letter = letter; - this.code = code; } - public int getValue() - { - return value; - } - public char getLetter() { return letter; @@ -66,12 +57,12 @@ public String getCode() { - return code; + return name().toLowerCase(); } public String getName(Locale locale) { - return Language.getText("command.config.specials." + code, locale); + return Language.getText("command.config.specials." + getCode(), locale); } /** @@ -89,7 +80,7 @@ return special; } } - + return null; } } Modified: jetrix/trunk/src/java/net/jetrix/filter/DownstackPuzzleGenerator.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/DownstackPuzzleGenerator.java 2010-03-07 00:23:41 UTC (rev 832) +++ jetrix/trunk/src/java/net/jetrix/filter/DownstackPuzzleGenerator.java 2010-03-08 09:04:45 UTC (rev 833) @@ -159,7 +159,7 @@ for (Special special : Special.values()) { - settings.setOccurancy(special, Integer.parseInt(occurancy[special.getValue()])); + settings.setOccurancy(special, Integer.parseInt(occurancy[special.ordinal()])); } } else if (line.startsWith("BLOCK")) Modified: jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java 2010-03-07 00:23:41 UTC (rev 832) +++ jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java 2010-03-08 09:04:45 UTC (rev 833) @@ -535,7 +535,7 @@ { for (int j = 0; j < s.getOccurancy(block); j++) { - message.append(Integer.toString(block.getValue() + 1)); + message.append(Integer.toString(block.ordinal() + 1)); } } @@ -546,7 +546,7 @@ { for (int j = 0; j < s.getOccurancy(special); j++) { - message.append(Integer.toString(special.getValue() + 1)); + message.append(Integer.toString(special.ordinal() + 1)); } } Modified: jetrix/trunk/src/test/net/jetrix/filter/DownstackPuzzleGeneratorTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/filter/DownstackPuzzleGeneratorTest.java 2010-03-07 00:23:41 UTC (rev 832) +++ jetrix/trunk/src/test/net/jetrix/filter/DownstackPuzzleGeneratorTest.java 2010-03-08 09:04:45 UTC (rev 833) @@ -54,7 +54,7 @@ int[] specials = { 32, 18, 1, 11, 3, 14, 1, 6, 14 }; for (Special special : Special.values()) { - assertEquals(special.getCode() + " occurancy", specials[special.getValue()], settings.getOccurancy(special)); + assertEquals(special.getCode() + " occurancy", specials[special.ordinal()], settings.getOccurancy(special)); } assertEquals("sudden death message", "Time! It's SUDDEN DEATH MODE!", settings.getSuddenDeathMessage()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2010-04-11 20:45:56
|
Revision: 834 http://jetrix.svn.sourceforge.net/jetrix/?rev=834&view=rev Author: smanux Date: 2010-04-11 20:45:49 +0000 (Sun, 11 Apr 2010) Log Message: ----------- Encode the strings in Cp1252 for the tetrinetx winlists to improve the compatibility Modified Paths: -------------- jetrix/trunk/src/java/net/jetrix/winlist/TetrixWinlist.java jetrix/trunk/src/test/net/jetrix/winlist/TetrixWinlistTest.java Modified: jetrix/trunk/src/java/net/jetrix/winlist/TetrixWinlist.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/winlist/TetrixWinlist.java 2010-03-08 09:04:45 UTC (rev 833) +++ jetrix/trunk/src/java/net/jetrix/winlist/TetrixWinlist.java 2010-04-11 20:45:49 UTC (rev 834) @@ -25,7 +25,7 @@ import net.jetrix.config.*; /** - * A winlist caompatible with the tetrinetx winlist format. + * A winlist compatible with the tetrinetx winlist format. * * @author Emmanuel Bourg * @version $Revision$, $Date$ @@ -37,6 +37,7 @@ private long scoreCount = DEFAULT_WINLIST_SIZE; private String filename; + private String encoding = "Cp1252"; public void init(WinlistConfig config) { @@ -120,14 +121,14 @@ /** * Build a score from a tetrix winlist structure. */ - protected Score buildScore(byte[] struct) + protected Score buildScore(byte[] struct) throws IOException { Score score = null; if (struct[0] != 0) { score = new Score(); - score.setName(new String(struct, 1, 31).trim()); + score.setName(new String(struct, 1, 31, encoding).trim()); score.setType(struct[0] == 0x70 ? Score.TYPE_PLAYER : Score.TYPE_TEAM); long scoreValue = getUnsignedByte(struct, 32) + (getUnsignedByte(struct, 33) << 8) @@ -152,7 +153,7 @@ struct[0] = score.getType() == Score.TYPE_PLAYER ? (byte) 'p' : (byte) 't'; // name - byte[] name = score.getName().getBytes(ServerConfig.ENCODING); + byte[] name = score.getName().getBytes(encoding); System.arraycopy(name, 0, struct, 1, name.length); // score Modified: jetrix/trunk/src/test/net/jetrix/winlist/TetrixWinlistTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/winlist/TetrixWinlistTest.java 2010-03-08 09:04:45 UTC (rev 833) +++ jetrix/trunk/src/test/net/jetrix/winlist/TetrixWinlistTest.java 2010-04-11 20:45:49 UTC (rev 834) @@ -37,7 +37,7 @@ public void setUp() { super.setUp(); - score = new Score("hell's_players\x86", Score.TYPE_TEAM, 1418); + score = new Score("hell's_players\u2020", Score.TYPE_TEAM, 1418); } public void testBuildScore() throws Exception @@ -51,7 +51,7 @@ assertEquals("type", score.getType(), score2.getType()); } - public void testBuildStruct() + public void testBuildStruct() throws Exception { TetrixWinlist winlist = new TetrixWinlist(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2010-04-11 21:25:41
|
Revision: 836 http://jetrix.svn.sourceforge.net/jetrix/?rev=836&view=rev Author: smanux Date: 2010-04-11 21:25:35 +0000 (Sun, 11 Apr 2010) Log Message: ----------- Fixed the failing test cases Modified Paths: -------------- jetrix/trunk/src/java/net/jetrix/Channel.java jetrix/trunk/src/java/net/jetrix/ChannelManager.java jetrix/trunk/src/java/net/jetrix/filter/DownstackPuzzleGenerator.java jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java jetrix/trunk/src/test/net/jetrix/ChannelManagerTest.java jetrix/trunk/src/test/net/jetrix/filter/DownstackPuzzleGeneratorTest.java jetrix/trunk/src/test/net/jetrix/protocols/TSpecProtocolTest.java jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java Modified: jetrix/trunk/src/java/net/jetrix/Channel.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/Channel.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/java/net/jetrix/Channel.java 2010-04-11 21:25:35 UTC (rev 836) @@ -43,14 +43,17 @@ */ public class Channel extends Thread implements Destination { + /** The maximum number of players per channel. */ + public static final int MAX_PLAYERS = 6; + private ChannelConfig channelConfig; private ServerConfig serverConfig; private Logger log = Logger.getLogger("net.jetrix"); - private BlockingQueue<Message> queue; + private BlockingQueue<Message> queue = new LinkedBlockingQueue<Message>(); private boolean open; - private GameState gameState; + private GameState gameState = STOPPED; private boolean running = true; private GameResult result; @@ -58,13 +61,13 @@ private long startTime; /** set of clients connected to this channel */ - private Set<Client> clients; + private Set<Client> clients = new HashSet<Client>(); /** slot/player mapping */ - private List<Client> slots; - private Field[] fields = new Field[6]; + private List<Client> slots = Arrays.asList(new Client[MAX_PLAYERS]); + private Field[] fields = new Field[MAX_PLAYERS]; - private List<MessageFilter> filters; + private List<MessageFilter> filters = new ArrayList<MessageFilter>(); public Channel() { @@ -75,36 +78,25 @@ { this.channelConfig = channelConfig; this.serverConfig = Server.getInstance().getConfig(); - this.gameState = STOPPED; - this.clients = new HashSet<Client>(); - this.slots = new ArrayList<Client>(6); - - // initialize the slot mapping - for (int i = 0; i < 6; i++) - { - slots.add(null); - } - + // initialize the players' fields - for (int i = 0; i < 6; i++) + for (int i = 0; i < MAX_PLAYERS; i++) { fields[i] = new Field(); } - - // opening channel message queue - queue = new LinkedBlockingQueue<Message>(); - - filters = new ArrayList<MessageFilter>(); - + /** * Loading filters */ // global filters - Iterator<FilterConfig> globalFilters = serverConfig.getGlobalFilters(); - while (globalFilters.hasNext()) + if (serverConfig != null) { - addFilter(globalFilters.next()); + Iterator<FilterConfig> globalFilters = serverConfig.getGlobalFilters(); + while (globalFilters.hasNext()) + { + addFilter(globalFilters.next()); + } } // channel filters @@ -470,7 +462,7 @@ } // clear the players' fields - for (int i = 0; i < 6; i++) + for (int i = 0; i < MAX_PLAYERS; i++) { fields[i].clear(); } @@ -546,7 +538,7 @@ if (previousChannel != null && !client.supportsMultipleChannels()) { // clear the player list - for (int j = 1; j <= 6; j++) + for (int j = 1; j <= MAX_PLAYERS; j++) { if (previousChannel.getPlayer(j) != null) { @@ -592,7 +584,7 @@ int slot = 0; for (slot = 0; slot < slots.size() && slots.get(slot) != null; slot++) ; - if (slot >= 6) + if (slot >= MAX_PLAYERS) { log.warning("[" + getConfig().getName() + "] Panic, no slot available for " + client); client.getUser().setSpectator(); @@ -646,7 +638,7 @@ } // send the fields - for (int i = 0; i < 6; i++) + for (int i = 0; i < MAX_PLAYERS; i++) { if (!fields[i].isEmpty() || previousChannel != null) { Modified: jetrix/trunk/src/java/net/jetrix/ChannelManager.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/ChannelManager.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/java/net/jetrix/ChannelManager.java 2010-04-11 21:25:35 UTC (rev 836) @@ -83,7 +83,9 @@ { // get the channel Channel channel = getChannel(name); - + + removeChannel(channel); + // close it as soon as the last client leaves channel.getConfig().setPersistent(false); channel.send(new ShutdownMessage()); Modified: jetrix/trunk/src/java/net/jetrix/filter/DownstackPuzzleGenerator.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/DownstackPuzzleGenerator.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/java/net/jetrix/filter/DownstackPuzzleGenerator.java 2010-04-11 21:25:35 UTC (rev 836) @@ -64,35 +64,51 @@ public Puzzle getNextPuzzle() { - Puzzle puzzle = new Puzzle(); - try { // load the field File[] levels = getLevels(); File file = levels[level % levels.length]; level = level + 1; - Field field = new Field(); - field.load(file.getAbsolutePath()); - puzzle.setField(field); + + Puzzle puzzle = loadPuzzle(new File(path), file.getName().substring(0, file.getName().lastIndexOf("."))); puzzle.setKey(String.valueOf(level)); - - // load the settings - String name = file.getAbsolutePath().replace(".field", ".settings"); - readSettings(puzzle, name); + + return puzzle; } catch (IOException e) { log.log(Level.WARNING, e.getMessage(), e); } + + return null; + } + /** + * Load a puzzle from the filesystem. + * + * @param directory the directory containing the puzzle file + * @param name the name of the puzzle + */ + protected Puzzle loadPuzzle(File directory, String name) throws IOException + { + Puzzle puzzle = new Puzzle(); + + // load the field + Field field = new Field(); + field.load(new File(directory, name + ".field").getAbsolutePath()); + puzzle.setField(field); + + // load the settings + readSettings(puzzle, new File(directory, name + ".settings").getAbsolutePath()); + return puzzle; } /** * Find all levels in the puzzle directory. */ - private File[] getLevels() + protected File[] getLevels() { File directory = new File(path); File[] files = directory.listFiles(new FilenameFilter() @@ -209,8 +225,5 @@ } } } - } - - } Modified: jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java 2010-04-11 21:25:35 UTC (rev 836) @@ -55,6 +55,32 @@ return input.toString(); } + public boolean equals(Object o) + { + if (this == o) + { + return true; + } + if (o == null || getClass() != o.getClass()) + { + return false; + } + + Protocol that = (Protocol) o; + + if (!getName().equals(that.getName())) + { + return false; + } + + return true; + } + + public int hashCode() + { + return getName().hashCode(); + } + public String toString() { return "[Protocol name=" + getName() + "]"; Modified: jetrix/trunk/src/test/net/jetrix/ChannelManagerTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/ChannelManagerTest.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/test/net/jetrix/ChannelManagerTest.java 2010-04-11 21:25:35 UTC (rev 836) @@ -38,6 +38,7 @@ public void setUp() { manager = ChannelManager.getInstance(); + manager.clear(); config1 = new ChannelConfig(); config1.setName("test1"); Modified: jetrix/trunk/src/test/net/jetrix/filter/DownstackPuzzleGeneratorTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/filter/DownstackPuzzleGeneratorTest.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/test/net/jetrix/filter/DownstackPuzzleGeneratorTest.java 2010-04-11 21:25:35 UTC (rev 836) @@ -19,6 +19,8 @@ package net.jetrix.filter; +import java.io.File; + import junit.framework.*; import net.jetrix.config.*; @@ -31,20 +33,32 @@ public void testGetNextPuzzle() { PuzzleGenerator generator = new DownstackPuzzleGenerator(); - Puzzle puzzle = generator.getNextPuzzle(); + + for (int i = 0; i < 100; i++) + { + Puzzle puzzle = generator.getNextPuzzle(); + assertNotNull("puzzle null", puzzle); + assertNotNull("null settings", puzzle.getSettings()); + } + } + public void testLoadPuzzle() throws Exception + { + DownstackPuzzleGenerator generator = new DownstackPuzzleGenerator(); + Puzzle puzzle = generator.loadPuzzle(new File("data/puzzle"), "game3"); + assertNotNull("puzzle null", puzzle); - assertEquals("author", "Kl\x80r", puzzle.getAuthor()); - assertEquals("name", "PUzzle BoBblE", puzzle.getName()); - assertEquals("comment", "none", puzzle.getComment()); + assertEquals("author", "NiLS", puzzle.getAuthor()); + assertEquals("name", "Left or Right", puzzle.getName()); + assertEquals("comment", "no comment", puzzle.getComment()); assertNotNull("null field", puzzle.getField()); assertFalse("empty field", puzzle.getField().isEmpty()); Settings settings = puzzle.getSettings(); assertNotNull("null settings", settings); - - int[] blocks = { 14, 14, 14, 14, 15, 15, 14 }; + + int[] blocks = { 14, 14, 15, 14, 14, 14, 15 }; for (int i = 0; i < DownstackPuzzleGenerator.BLOCKS.length; i++) { Block block = DownstackPuzzleGenerator.BLOCKS[i]; @@ -56,8 +70,8 @@ { assertEquals(special.getCode() + " occurancy", specials[special.ordinal()], settings.getOccurancy(special)); } - - assertEquals("sudden death message", "Time! It's SUDDEN DEATH MODE!", settings.getSuddenDeathMessage()); + + assertEquals("sudden death message", "Time's up! It's SUDDEN DEATH MODE!", settings.getSuddenDeathMessage()); assertEquals("sudden death delay", 30, settings.getSuddenDeathDelay()); assertEquals("sudden death time", 180, settings.getSuddenDeathTime()); assertEquals("sudden death lines", 1, settings.getSuddenDeathLinesAdded()); @@ -72,5 +86,4 @@ assertEquals("classic rules", true, settings.getClassicRules()); assertEquals("average levels", true, settings.getAverageLevels()); } - } Modified: jetrix/trunk/src/test/net/jetrix/protocols/TSpecProtocolTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/protocols/TSpecProtocolTest.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/test/net/jetrix/protocols/TSpecProtocolTest.java 2010-04-11 21:25:35 UTC (rev 836) @@ -79,7 +79,7 @@ assertEquals("message class", SmsgMessage.class, message.getClass()); SmsgMessage smsg = (SmsgMessage) message; - assertEquals("slot", 0, smsg.getSlot()); + assertEquals("slot", 1, smsg.getSlot()); assertEquals("private", false, smsg.isPrivate()); assertEquals("text", "spectator message", smsg.getText()); } @@ -93,7 +93,7 @@ assertEquals("message class", SmsgMessage.class, message.getClass()); SmsgMessage smsg = (SmsgMessage) message; - assertEquals("slot", 0, smsg.getSlot()); + assertEquals("slot", 1, smsg.getSlot()); assertEquals("private", true, smsg.isPrivate()); assertEquals("text", "spectator message", smsg.getText()); } Modified: jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java 2010-04-11 21:25:35 UTC (rev 836) @@ -111,15 +111,15 @@ public void testGetMessageGmsg() { - String raw = "gmsg hello world!"; + String raw = "gmsg <Smanux> Hello world!"; Message message = protocol.getMessage(raw); assertNotNull("message not parsed", message); assertEquals("message class", GmsgMessage.class, message.getClass()); GmsgMessage gmsg = (GmsgMessage) message; - assertEquals("slot", 1, gmsg.getSlot()); - assertEquals("text", "hello world!", gmsg.getText(Locale.ENGLISH)); + assertEquals("slot", 0, gmsg.getSlot()); + assertEquals("text", "<Smanux> Hello world!", gmsg.getText(Locale.ENGLISH)); } public void testTranslatePlayerJoin() @@ -268,7 +268,7 @@ { byte[] ip = {127, 0, 0, 1}; String nickname = "Smanux"; - String version = "1.14"; + String version = "1.13"; assertEquals("80C210B3134A85CF71E46FD4C123A83D9E22A2F512769FE5", encode(nickname, version, ip, false)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2010-04-11 22:42:27
|
Revision: 837 http://jetrix.svn.sourceforge.net/jetrix/?rev=837&view=rev Author: smanux Date: 2010-04-11 22:42:20 +0000 (Sun, 11 Apr 2010) Log Message: ----------- Introduced an output encoding per client Modified Paths: -------------- jetrix/trunk/src/java/net/jetrix/Client.java jetrix/trunk/src/java/net/jetrix/Protocol.java jetrix/trunk/src/java/net/jetrix/agent/QueryAgent.java jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java jetrix/trunk/src/java/net/jetrix/clients/ConsoleClient.java jetrix/trunk/src/java/net/jetrix/clients/QueryClient.java jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java jetrix/trunk/src/java/net/jetrix/listeners/TSpecListener.java jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java jetrix/trunk/src/test/net/jetrix/agent/QueryAgentTest.java Modified: jetrix/trunk/src/java/net/jetrix/Client.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/Client.java 2010-04-11 21:25:35 UTC (rev 836) +++ jetrix/trunk/src/java/net/jetrix/Client.java 2010-04-11 22:42:20 UTC (rev 837) @@ -96,6 +96,13 @@ long getIdleTime(); /** + * Returns the character encoding to be used for the messages sent to the client. + * + * @since 0.3 + */ + String getEncoding(); + + /** * Send a message to the client. The raw message property must be set. * * @param message the message to send Modified: jetrix/trunk/src/java/net/jetrix/Protocol.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/Protocol.java 2010-04-11 21:25:35 UTC (rev 836) +++ jetrix/trunk/src/java/net/jetrix/Protocol.java 2010-04-11 22:42:20 UTC (rev 837) @@ -19,9 +19,9 @@ package net.jetrix; -import java.util.*; -import java.io.Reader; import java.io.IOException; +import java.io.InputStream; +import java.util.Locale; /** * A protocol to communicate with a client. A protocol is responsible for @@ -91,6 +91,6 @@ * @param in the stream to be read * @throws IOException thrown if the stream is closed */ - String readLine(Reader in) throws IOException; + String readLine(InputStream in) throws IOException; } Modified: jetrix/trunk/src/java/net/jetrix/agent/QueryAgent.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/agent/QueryAgent.java 2010-04-11 21:25:35 UTC (rev 836) +++ jetrix/trunk/src/java/net/jetrix/agent/QueryAgent.java 2010-04-11 22:42:20 UTC (rev 837) @@ -19,12 +19,11 @@ package net.jetrix.agent; -import java.io.BufferedReader; -import java.io.BufferedWriter; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.Writer; +import java.io.InputStream; +import java.io.OutputStream; import java.net.InetSocketAddress; import java.net.Socket; import java.util.ArrayList; @@ -48,8 +47,8 @@ { private String hostname; private Socket socket; - private BufferedReader in; - private Writer out; + private InputStream in; + private OutputStream out; private Logger log = Logger.getLogger("net.jetrix"); @@ -58,8 +57,8 @@ this.hostname = hostname; socket = new Socket(); socket.connect(new InetSocketAddress(hostname, 31457), 5000); - in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "ISO-8859-1")); - out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "ISO-8859-1")); + in = new BufferedInputStream(socket.getInputStream()); + out = new BufferedOutputStream(socket.getOutputStream()); socket.setSoTimeout(10000); } @@ -73,7 +72,7 @@ public void send(String message) throws IOException { - out.write(message); + out.write(message.getBytes("ISO-8859-1")); out.write(0xFF); out.flush(); } @@ -113,9 +112,10 @@ send("version"); // read the result - String version = in.readLine(); - in.readLine(); - + QueryProtocol protocol = new QueryProtocol(); + String version = protocol.readLine(in); + protocol.readLine(in); + return version; } @@ -128,8 +128,9 @@ send("playerquery"); // read the result - String line = in.readLine(); - + QueryProtocol protocol = new QueryProtocol(); + String line = protocol.readLine(in); + if (line.startsWith("Number of players logged in: ")) { return Integer.parseInt(line.substring(line.indexOf(":") + 1).trim()); Modified: jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java 2010-04-11 21:25:35 UTC (rev 836) +++ jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java 2010-04-11 22:42:20 UTC (rev 837) @@ -19,10 +19,10 @@ package net.jetrix.agent; -import java.io.BufferedReader; +import java.io.BufferedInputStream; import java.io.BufferedWriter; import java.io.IOException; -import java.io.InputStreamReader; +import java.io.InputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.net.Socket; @@ -49,7 +49,7 @@ private int slot; private Socket socket; - private BufferedReader in; + private InputStream in; private Writer out; protected Protocol protocol = new TetrinetProtocol(); @@ -82,7 +82,7 @@ socket = new Socket(hostname, port); socket.setSoTimeout(15000); - in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "ISO-8859-1")); + in = new BufferedInputStream(socket.getInputStream()); out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "ISO-8859-1")); send(TetrinetProtocol.encode(name, version, socket.getInetAddress().getAddress(), false)); Modified: jetrix/trunk/src/java/net/jetrix/clients/ConsoleClient.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/clients/ConsoleClient.java 2010-04-11 21:25:35 UTC (rev 836) +++ jetrix/trunk/src/java/net/jetrix/clients/ConsoleClient.java 2010-04-11 22:42:20 UTC (rev 837) @@ -21,6 +21,7 @@ import java.io.*; import java.net.*; +import java.nio.charset.Charset; import java.util.*; import java.util.logging.Logger; @@ -167,6 +168,11 @@ return 0; } + public String getEncoding() + { + return Charset.defaultCharset().name(); + } + public void disconnect() { try Modified: jetrix/trunk/src/java/net/jetrix/clients/QueryClient.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/clients/QueryClient.java 2010-04-11 21:25:35 UTC (rev 836) +++ jetrix/trunk/src/java/net/jetrix/clients/QueryClient.java 2010-04-11 22:42:20 UTC (rev 837) @@ -174,7 +174,8 @@ try { - out.write(rawMessage + QueryProtocol.EOL, 0, rawMessage.length() + 1); + out.write(rawMessage.getBytes(getEncoding())); + out.write(QueryProtocol.EOL); out.flush(); if (log.isLoggable(Level.FINEST)) Modified: jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java 2010-04-11 21:25:35 UTC (rev 836) +++ jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java 2010-04-11 22:42:20 UTC (rev 837) @@ -51,8 +51,8 @@ protected boolean disconnected; private boolean running; - protected Reader in; - protected Writer out; + protected InputStream in; + protected OutputStream out; protected Socket socket; protected ServerConfig serverConfig; protected Logger log = Logger.getLogger("net.jetrix"); @@ -227,7 +227,8 @@ { synchronized (out) { - out.write(rawMessage + getProtocol().getEOL(), 0, rawMessage.length() + 1); + out.write(rawMessage.getBytes(getEncoding())); + out.write(getProtocol().getEOL()); out.flush(); } @@ -280,8 +281,8 @@ this.socket = socket; try { - in = new BufferedReader(new InputStreamReader(socket.getInputStream(), ServerConfig.ENCODING)); - out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), ServerConfig.ENCODING)); + in = new BufferedInputStream(socket.getInputStream()); + out = new BufferedOutputStream(socket.getOutputStream()); } catch (IOException e) { @@ -359,6 +360,11 @@ return System.currentTimeMillis() - lastMessageTime; } + public String getEncoding() + { + return "ISO-8859-1"; + } + public void disconnect() { disconnected = true; Modified: jetrix/trunk/src/java/net/jetrix/listeners/TSpecListener.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/listeners/TSpecListener.java 2010-04-11 21:25:35 UTC (rev 836) +++ jetrix/trunk/src/java/net/jetrix/listeners/TSpecListener.java 2010-04-11 22:42:20 UTC (rev 837) @@ -19,7 +19,6 @@ package net.jetrix.listeners; -import java.io.*; import java.net.*; import net.jetrix.*; import net.jetrix.protocols.TspecProtocol; @@ -48,7 +47,7 @@ public Client getClient(Socket socket) throws Exception { TetrinetProtocol protocol = ProtocolManager.getInstance().getProtocol(TetrinetProtocol.class); - String init = protocol.readLine(new InputStreamReader(socket.getInputStream())); + String init = protocol.readLine(socket.getInputStream()); TSpecClient client = new TSpecClient(); client.setProtocol(ProtocolManager.getInstance().getProtocol(TspecProtocol.class)); Modified: jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java 2010-04-11 21:25:35 UTC (rev 836) +++ jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java 2010-04-11 22:42:20 UTC (rev 837) @@ -19,7 +19,6 @@ package net.jetrix.listeners; -import java.io.*; import java.net.*; import java.util.*; @@ -53,7 +52,7 @@ { // read the first line sent by the client Protocol protocol1 = protocolManager.getProtocol(TetrinetProtocol.class); - String init = protocol1.readLine(new InputStreamReader(socket.getInputStream())); + String init = protocol1.readLine(socket.getInputStream()); // test if the client is using the query protocol Protocol protocol = protocolManager.getProtocol(QueryProtocol.class); Modified: jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java 2010-04-11 21:25:35 UTC (rev 836) +++ jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java 2010-04-11 22:42:20 UTC (rev 837) @@ -19,11 +19,12 @@ package net.jetrix.protocols; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + import net.jetrix.Protocol; -import java.io.IOException; -import java.io.Reader; - /** * Abstract protocol implementing the readLine(Reader) method. * @@ -34,25 +35,27 @@ */ public abstract class AbstractProtocol implements Protocol { - public String readLine(Reader in) throws IOException + public String readLine(InputStream in) throws IOException { - StringBuilder input = new StringBuilder(); - - int readChar; - while ((readChar = in.read()) != -1 && readChar != getEOL() && readChar != 0x0A && readChar != 0x0D) + ByteArrayOutputStream input = new ByteArrayOutputStream(256); + + // todo define a maximum line length + + int b; + while ((b = in.read()) != -1 && b != getEOL() && b != 0x0A && b != 0x0D) { - if (readChar != 0x0A && readChar != 0x0D) + if (b != 0x0A && b != 0x0D) { - input.append((char) readChar); + input.write(b); } } - - if (readChar == -1) + + if (b == -1) { throw new IOException("End of stream"); } - - return input.toString(); + + return input.toString("ISO-8859-1"); } public boolean equals(Object o) Modified: jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java 2010-04-11 21:25:35 UTC (rev 836) +++ jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java 2010-04-11 22:42:20 UTC (rev 837) @@ -239,22 +239,19 @@ // newgame else if ("newgame".equals(cmd)) { - NewGameMessage newgame = new NewGameMessage(); - m = newgame; + m = new NewGameMessage(); // todo parse the game settings } // endgame else if ("endgame".equals(cmd)) { - EndGameMessage end = new EndGameMessage(); - m = end; + m = new EndGameMessage(); } // ingame else if ("ingame".equals(cmd)) { - IngameMessage ingame = new IngameMessage(); - m = ingame; + m = new IngameMessage(); } // playerlost <slot> else if ("playerlost".equals(cmd)) @@ -556,7 +553,7 @@ message.append(s.getClassicRules() ? "1" : "0"); // extended parameter for 1.14 clients - if (s.getSameBlocks() == true) + if (s.getSameBlocks()) { message.append(" "); String hexstring = Integer.toHexString(m.getSeed()).toUpperCase(); Modified: jetrix/trunk/src/test/net/jetrix/agent/QueryAgentTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/agent/QueryAgentTest.java 2010-04-11 21:25:35 UTC (rev 836) +++ jetrix/trunk/src/test/net/jetrix/agent/QueryAgentTest.java 2010-04-11 22:42:20 UTC (rev 837) @@ -29,10 +29,12 @@ */ public class QueryAgentTest extends TestCase { + private String hostname = "tetrinet.fr"; + public void testGetVersion() throws Exception { QueryAgent agent = new QueryAgent(); - agent.connect("tetrinet.fr"); + agent.connect(hostname); String version = agent.getVersion(); agent.disconnect(); @@ -42,7 +44,7 @@ public void testGetPlayerNumber() throws Exception { QueryAgent agent = new QueryAgent(); - agent.connect("tetrinet.fr"); + agent.connect(hostname); int count = agent.getPlayerNumber(); agent.disconnect(); @@ -52,7 +54,7 @@ public void testGetChannels() throws Exception { QueryAgent agent = new QueryAgent(); - agent.connect("tetrinet.fr"); + agent.connect(hostname); List<ChannelInfo> channels = agent.getChannels(); agent.disconnect(); @@ -63,7 +65,7 @@ public void testGetPlayers() throws Exception { QueryAgent agent = new QueryAgent(); - agent.connect("tetrinet.fr"); + agent.connect("tetridome.com"); List<PlayerInfo> players = agent.getPlayers(); agent.disconnect(); @@ -74,7 +76,7 @@ public void testGetPing() throws Exception { QueryAgent agent = new QueryAgent(); - agent.connect("tetrinet.fr"); + agent.connect(hostname); long ping = agent.getPing(); agent.disconnect(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2010-04-12 22:38:33
|
Revision: 839 http://jetrix.svn.sourceforge.net/jetrix/?rev=839&view=rev Author: smanux Date: 2010-04-12 22:38:27 +0000 (Mon, 12 Apr 2010) Log Message: ----------- TetrinetAgent now supports the clientinfo request/response Modified Paths: -------------- jetrix/trunk/src/java/net/jetrix/agent/TSpecAgent.java jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java jetrix/trunk/src/test/net/jetrix/agent/TetrinetAgentTest.java Modified: jetrix/trunk/src/java/net/jetrix/agent/TSpecAgent.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/agent/TSpecAgent.java 2010-04-12 13:10:56 UTC (rev 838) +++ jetrix/trunk/src/java/net/jetrix/agent/TSpecAgent.java 2010-04-12 22:38:27 UTC (rev 839) @@ -21,7 +21,6 @@ import java.io.IOException; -import net.jetrix.messages.channel.*; import net.jetrix.protocols.TspecProtocol; /** @@ -32,35 +31,15 @@ */ public class TSpecAgent extends TetrinetAgent { - private String password; - public TSpecAgent(String name, String password) { super(name); - this.password = password; + this.teamname = password; this.protocol = new TspecProtocol(); } public void connect(String hostname) throws IOException { - connect(hostname, 31458, password); + connect(hostname, 31458, teamname); } - - public void onMessage(PlayerNumMessage m) - { - super.onMessage(m); - - // send the tspec password as the team name - TeamMessage team = new TeamMessage(); - team.setSlot(m.getSlot()); - team.setName(password); - try - { - send(team); - } - catch (IOException e) - { - e.printStackTrace(); - } - } } Modified: jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java 2010-04-12 13:10:56 UTC (rev 838) +++ jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java 2010-04-12 22:38:27 UTC (rev 839) @@ -30,6 +30,7 @@ import net.jetrix.Message; import net.jetrix.Protocol; +import net.jetrix.config.ServerConfig; import net.jetrix.protocols.TetrinetProtocol; import net.jetrix.messages.*; import net.jetrix.messages.channel.*; @@ -43,9 +44,22 @@ */ public class TetrinetAgent implements Agent { - private String name; + /** The name of the agent. */ + protected String clientName = "Jetrix"; + + /** The version of the agent. */ + protected String clientVersion = ServerConfig.VERSION; + + /** The name of the player. */ + protected String name; + + /** The name of the team. */ + protected String teamname; + + /** The hostname of the TetriNET server. */ private String hostname; + /** The current slot assigned by the server. */ private int slot; private Socket socket; @@ -145,7 +159,7 @@ } } - protected void send(String message) throws IOException + protected synchronized void send(String message) throws IOException { out.write(message); out.write(protocol.getEOL()); @@ -229,6 +243,20 @@ public void onMessage(PlayerNumMessage m) { this.slot = m.getSlot(); + + // repond with the team name + TeamMessage response = new TeamMessage(); + response.setSlot(slot); + response.setName(teamname); + + try + { + send(response); + } + catch (IOException e) + { + e.printStackTrace(); + } } public void onMessage(StartGameMessage m) { } @@ -270,7 +298,24 @@ */ public void onSpecial(SpecialMessage m) { } - public void onMessage(LevelMessage m) { } + public void onMessage(LevelMessage m) + { + if (m.getLevel() == 0 && m.getSlot() == 0) + { + ClientInfoMessage response = new ClientInfoMessage(); + response.setName(clientName); + response.setVersion(clientVersion); + + try + { + send(response); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + } public void onMessage(FieldMessage m) { } Modified: jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java 2010-04-12 13:10:56 UTC (rev 838) +++ jetrix/trunk/src/java/net/jetrix/protocols/TetrinetProtocol.java 2010-04-12 22:38:27 UTC (rev 839) @@ -372,6 +372,7 @@ else if (m instanceof WinlistMessage) { return translate((WinlistMessage) m, locale); } else if (m instanceof NoopMessage) { return translate((NoopMessage) m); } else if (m instanceof CommandMessage) { return translate((CommandMessage) m); } + else if (m instanceof ClientInfoMessage) { return translate((ClientInfoMessage) m); } else { return null; @@ -780,6 +781,16 @@ return message.toString(); } + public String translate(ClientInfoMessage m) + { + StringBuilder message = new StringBuilder(); + message.append("clientinfo "); + message.append(m.getName()); + message.append(" "); + message.append(m.getVersion()); + return message.toString(); + } + public String translate(NoopMessage m) { return ""; Modified: jetrix/trunk/src/test/net/jetrix/agent/TetrinetAgentTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/agent/TetrinetAgentTest.java 2010-04-12 13:10:56 UTC (rev 838) +++ jetrix/trunk/src/test/net/jetrix/agent/TetrinetAgentTest.java 2010-04-12 22:38:27 UTC (rev 839) @@ -34,8 +34,9 @@ { TetrinetAgent agent = new TetrinetAgent("JetrixBot"); agent.connect("tetrinet.fr"); - - agent.send(new TeamMessage()); + + Thread.sleep(200); + agent.send(new PlineMessage("Hi there!")); agent.disconnect(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2010-05-03 18:13:58
|
Revision: 847 http://jetrix.svn.sourceforge.net/jetrix/?rev=847&view=rev Author: smanux Date: 2010-05-03 18:13:52 +0000 (Mon, 03 May 2010) Log Message: ----------- Added two protection mechanisms against potential attacks: - slow clients are rejected to avoid Slowloris-like denial of service - messages over 8K are rejected to avoid filling the server memory Modified Paths: -------------- jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java Modified: jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java 2010-05-03 15:29:44 UTC (rev 846) +++ jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java 2010-05-03 18:13:52 UTC (rev 847) @@ -35,19 +35,36 @@ */ public abstract class AbstractProtocol implements Protocol { - public String readLine(InputStream in) throws IOException + /** Maximum size allowed for a message frame. */ + private static final int MAX_SIZE = 8192; + + /** Maximum delay allowed for parsing a message frame (in milliseconds). */ + private static final int MAX_DELAY = 10000; + + /** + * Reads the next message frame from the specified input stream. + * No charset decoding is performed at this stage. + */ + public byte[] readFrame(InputStream in) throws IOException { ByteArrayOutputStream input = new ByteArrayOutputStream(256); - // todo define a maximum line length + long time = 0; int b; - while ((b = in.read()) != -1 && b != getEOL() && b != 0x0A && b != 0x0D) + while ((b = in.read()) != -1 && b != getEOL() && b != 0x0A && b != 0x0D && input.size() < MAX_SIZE) { - if (b != 0x0A && b != 0x0D) + input.write(b); + + if (input.size() == 1) { - input.write(b); + // let's start monitoring the input speed + time = System.currentTimeMillis(); } + else if (System.currentTimeMillis() - time > MAX_DELAY) + { + throw new IOException("Slow input detected (" + input.size() + " bytes over " + (System.currentTimeMillis() - time) + "ms)"); + } } if (b == -1) @@ -55,9 +72,19 @@ throw new IOException("End of stream"); } - return input.toString("ISO-8859-1"); + if (input.size() >= MAX_SIZE) + { + throw new IOException("Message frame exceeded the " + MAX_SIZE + " limit"); + } + + return input.toByteArray(); } + public String readLine(InputStream in) throws IOException + { + return new String(readFrame(in), "Cp1252"); + } + public boolean equals(Object o) { if (this == o) Modified: jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java 2010-05-03 15:29:44 UTC (rev 846) +++ jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java 2010-05-03 18:13:52 UTC (rev 847) @@ -21,7 +21,9 @@ import static net.jetrix.protocols.TetrinetProtocol.*; +import java.io.*; import java.util.*; + import junit.framework.*; import net.jetrix.*; import net.jetrix.messages.channel.*; @@ -293,4 +295,44 @@ assertEquals("decoded", "tetrisstart Smanux 1.13", decode(init)); } + + public void testLongMessage() + { + byte[] message = new byte[16 * 1024]; + try + { + protocol.readLine(new ByteArrayInputStream(message, 0, message.length)); + fail("No exception raised on a 16K message"); + } + catch (IOException e) + { + // expected + } + } + + public void testSlowClient() + { + try + { + protocol.readLine(new InputStream() { + int i = 34; + public int read() throws IOException + { + try + { + Thread.sleep(1000); + } + catch (InterruptedException e) + { + } + return --i; + } + }); + fail("No exception raised on extremely slow input"); + } + catch (IOException e) + { + // expected + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2010-05-03 20:51:39
|
Revision: 848 http://jetrix.svn.sourceforge.net/jetrix/?rev=848&view=rev Author: smanux Date: 2010-05-03 20:51:32 +0000 (Mon, 03 May 2010) Log Message: ----------- Switched the input/output encoding for GTetrinet clients to UTF-8 Modified Paths: -------------- jetrix/trunk/src/java/net/jetrix/Protocol.java jetrix/trunk/src/java/net/jetrix/agent/QueryAgent.java jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java jetrix/trunk/src/java/net/jetrix/listeners/TSpecListener.java jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java Modified: jetrix/trunk/src/java/net/jetrix/Protocol.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/Protocol.java 2010-05-03 18:13:52 UTC (rev 847) +++ jetrix/trunk/src/java/net/jetrix/Protocol.java 2010-05-03 20:51:32 UTC (rev 848) @@ -88,9 +88,10 @@ * * @since 0.3 * - * @param in the stream to be read + * @param in the stream to be read + * @param encoding the charset encoding used to read the message * @throws IOException thrown if the stream is closed */ - String readLine(InputStream in) throws IOException; + String readLine(InputStream in, String encoding) throws IOException; } Modified: jetrix/trunk/src/java/net/jetrix/agent/QueryAgent.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/agent/QueryAgent.java 2010-05-03 18:13:52 UTC (rev 847) +++ jetrix/trunk/src/java/net/jetrix/agent/QueryAgent.java 2010-05-03 20:51:32 UTC (rev 848) @@ -49,6 +49,7 @@ private Socket socket; private InputStream in; private OutputStream out; + private String encoding = "Cp1252"; private Logger log = Logger.getLogger("net.jetrix"); @@ -113,8 +114,8 @@ // read the result QueryProtocol protocol = new QueryProtocol(); - String version = protocol.readLine(in); - protocol.readLine(in); + String version = protocol.readLine(in, encoding); + protocol.readLine(in, encoding); return version; } @@ -129,7 +130,7 @@ // read the result QueryProtocol protocol = new QueryProtocol(); - String line = protocol.readLine(in); + String line = protocol.readLine(in, encoding); if (line.startsWith("Number of players logged in: ")) { @@ -154,7 +155,7 @@ // read the result String line = null; QueryProtocol protocol = new QueryProtocol(); - while (!QueryProtocol.OK.equals(line = protocol.readLine(in))) + while (!QueryProtocol.OK.equals(line = protocol.readLine(in, encoding))) { Matcher matcher = pattern.matcher(line); @@ -197,7 +198,7 @@ // read the result String line = null; QueryProtocol protocol = new QueryProtocol(); - while (!QueryProtocol.OK.equals(line = protocol.readLine(in))) + while (!QueryProtocol.OK.equals(line = protocol.readLine(in, encoding))) { Matcher matcher = pattern.matcher(line); Modified: jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java 2010-05-03 18:13:52 UTC (rev 847) +++ jetrix/trunk/src/java/net/jetrix/agent/TetrinetAgent.java 2010-05-03 20:51:32 UTC (rev 848) @@ -65,6 +65,7 @@ private Socket socket; private InputStream in; private Writer out; + private String encoding = "Cp1252"; protected Protocol protocol = new TetrinetProtocol(); private boolean running; @@ -97,12 +98,12 @@ socket.setSoTimeout(15000); in = new BufferedInputStream(socket.getInputStream()); - out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "ISO-8859-1")); + out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), encoding)); send(TetrinetProtocol.encode(name, version, socket.getInetAddress().getAddress(), false)); // block until the playernum message is received - String line = protocol.readLine(in); + String line = protocol.readLine(in, encoding); Message message = protocol.getMessage(line); receive(message); @@ -132,7 +133,7 @@ { while (running) { - String line = protocol.readLine(in); + String line = protocol.readLine(in, encoding); Message message = protocol.getMessage(line); Modified: jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java 2010-05-03 18:13:52 UTC (rev 847) +++ jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java 2010-05-03 20:51:32 UTC (rev 848) @@ -54,9 +54,11 @@ protected InputStream in; protected OutputStream out; protected Socket socket; + protected String encoding = "Cp1252"; protected ServerConfig serverConfig; + protected BlockingQueue<Message> queue; + protected Logger log = Logger.getLogger("net.jetrix"); - protected BlockingQueue<Message> queue; public TetrinetClient() { @@ -142,6 +144,10 @@ { ClientInfoMessage info = (ClientInfoMessage) message; setVersion(info.getName() + " " + info.getVersion()); + if ("gtetrinet".equalsIgnoreCase(info.getName())) + { + encoding = "UTF-8"; + } } else if (channel != null) { @@ -263,7 +269,7 @@ public Message receive() throws IOException { // read raw message from socket - String line = protocol.readLine(in); + String line = protocol.readLine(in, getEncoding()); lastMessageTime = System.currentTimeMillis(); if (log.isLoggable(Level.FINER)) { @@ -367,7 +373,7 @@ public String getEncoding() { - return "ISO-8859-1"; + return encoding; } public void disconnect() Modified: jetrix/trunk/src/java/net/jetrix/listeners/TSpecListener.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/listeners/TSpecListener.java 2010-05-03 18:13:52 UTC (rev 847) +++ jetrix/trunk/src/java/net/jetrix/listeners/TSpecListener.java 2010-05-03 20:51:32 UTC (rev 848) @@ -47,7 +47,7 @@ public Client getClient(Socket socket) throws Exception { TetrinetProtocol protocol = ProtocolManager.getInstance().getProtocol(TetrinetProtocol.class); - String init = protocol.readLine(socket.getInputStream()); + String init = protocol.readLine(socket.getInputStream(), "Cp1252"); TSpecClient client = new TSpecClient(); client.setProtocol(ProtocolManager.getInstance().getProtocol(TspecProtocol.class)); Modified: jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java 2010-05-03 18:13:52 UTC (rev 847) +++ jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java 2010-05-03 20:51:32 UTC (rev 848) @@ -52,7 +52,7 @@ { // read the first line sent by the client Protocol protocol1 = protocolManager.getProtocol(TetrinetProtocol.class); - String init = protocol1.readLine(socket.getInputStream()); + String init = protocol1.readLine(socket.getInputStream(), "Cp1252"); // test if the client is using the query protocol Protocol protocol = protocolManager.getProtocol(QueryProtocol.class); @@ -84,7 +84,7 @@ user.setName(tokens.get(1)); client.setUser(user); - client.setVersion((String) tokens.get(2)); + client.setVersion(tokens.get(2)); if ((tokens.get(0)).equals(TetrinetProtocol.INIT_TOKEN)) { client.setProtocol(protocolManager.getProtocol(TetrinetProtocol.class)); Modified: jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java 2010-05-03 18:13:52 UTC (rev 847) +++ jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java 2010-05-03 20:51:32 UTC (rev 848) @@ -80,9 +80,9 @@ return input.toByteArray(); } - public String readLine(InputStream in) throws IOException + public String readLine(InputStream in, String encoding) throws IOException { - return new String(readFrame(in), "Cp1252"); + return new String(readFrame(in), encoding); } public boolean equals(Object o) Modified: jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java 2010-05-03 18:13:52 UTC (rev 847) +++ jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java 2010-05-03 20:51:32 UTC (rev 848) @@ -301,7 +301,7 @@ byte[] message = new byte[16 * 1024]; try { - protocol.readLine(new ByteArrayInputStream(message, 0, message.length)); + protocol.readLine(new ByteArrayInputStream(message, 0, message.length), "Cp1252"); fail("No exception raised on a 16K message"); } catch (IOException e) @@ -327,7 +327,7 @@ } return --i; } - }); + }, "Cp1252"); fail("No exception raised on extremely slow input"); } catch (IOException e) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2010-05-04 17:55:25
|
Revision: 857 http://jetrix.svn.sourceforge.net/jetrix/?rev=857&view=rev Author: smanux Date: 2010-05-04 17:55:19 +0000 (Tue, 04 May 2010) Log Message: ----------- The name of the client software is stored in a separate field and replaces the type field Modified Paths: -------------- jetrix/trunk/src/admin/server.jsp jetrix/trunk/src/admin/user.jsp jetrix/trunk/src/java/net/jetrix/Client.java jetrix/trunk/src/java/net/jetrix/clients/ConsoleClient.java jetrix/trunk/src/java/net/jetrix/clients/QueryClient.java jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java jetrix/trunk/src/java/net/jetrix/commands/WhoCommand.java jetrix/trunk/src/java/net/jetrix/listeners/TSpecListener.java jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java Modified: jetrix/trunk/src/admin/server.jsp =================================================================== --- jetrix/trunk/src/admin/server.jsp 2010-05-04 17:00:37 UTC (rev 856) +++ jetrix/trunk/src/admin/server.jsp 2010-05-04 17:55:19 UTC (rev 857) @@ -143,8 +143,7 @@ <table class="thin" style="width: 500px"> <tr> <th>Name</th> - <th>Type</th> - <th>Version</th> + <th>Agent</th> <th>Protocol</th> <th>IP</th> <th>Access Level</th> @@ -154,8 +153,7 @@ User user = client.getUser(); %> <tr> <td><a href="user.jsp?name=<%= user.getName() %>"><%= user.getName() %></a></td> - <td align="center"><%= client.getType() %></td> - <td align="center"><%= client.getVersion() %></td> + <td align="center"><%= client.getAgent() %> <%= client.getVersion() %></td> <td align="center"><%= client.getProtocol().getName() %></td> <td><%= client.getInetAddress().getHostName() %></td> <td align="center"><%= user.getAccessLevel() %></td> Modified: jetrix/trunk/src/admin/user.jsp =================================================================== --- jetrix/trunk/src/admin/user.jsp 2010-05-04 17:00:37 UTC (rev 856) +++ jetrix/trunk/src/admin/user.jsp 2010-05-04 17:55:19 UTC (rev 857) @@ -48,14 +48,10 @@ <table class="thin" style="width: 500px"> <tr> - <td width="30%">Type</td> - <td><%= client.getType() %></td> + <td width="30%">Agent</td> + <td><%= client.getAgent() %> <%= client.getVersion() %></td> </tr> <tr> - <td>Version</td> - <td><%= client.getVersion() %></td> - </tr> - <tr> <td>Protocol</td> <td><%= client.getProtocol().getName() %></td> </tr> Modified: jetrix/trunk/src/java/net/jetrix/Client.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/Client.java 2010-05-04 17:00:37 UTC (rev 856) +++ jetrix/trunk/src/java/net/jetrix/Client.java 2010-05-04 17:55:19 UTC (rev 857) @@ -69,12 +69,14 @@ User getUser(); /** - * Return the type of the client (tetrinet or tetrifast). + * Returns the name of the user agent (GTetrinet, aTwin, Blocktrix...) + * + * @since 0.3 */ - String getType(); + String getAgent(); /** - * Return the version of this client (1.13, 1.14, GTetrinet 0.7.10, etc). + * Return the version of the user agent (1.13, 1.14, etc) */ String getVersion(); Modified: jetrix/trunk/src/java/net/jetrix/clients/ConsoleClient.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/clients/ConsoleClient.java 2010-05-04 17:00:37 UTC (rev 856) +++ jetrix/trunk/src/java/net/jetrix/clients/ConsoleClient.java 2010-05-04 17:55:19 UTC (rev 857) @@ -148,14 +148,14 @@ return user; } - public String getVersion() + public String getAgent() { - return "1.0"; + return "Console"; } - public String getType() + public String getVersion() { - return "Console"; + return "1.0"; } public Date getConnectionTime() Modified: jetrix/trunk/src/java/net/jetrix/clients/QueryClient.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/clients/QueryClient.java 2010-05-04 17:00:37 UTC (rev 856) +++ jetrix/trunk/src/java/net/jetrix/clients/QueryClient.java 2010-05-04 17:55:19 UTC (rev 857) @@ -99,7 +99,7 @@ message.append("\" \""); message.append(user.getTeam() == null ? "" : user.getTeam()); message.append("\" \""); - message.append(client.getVersion()); + message.append(client.getAgent() + " " + client.getVersion()); message.append("\" "); message.append(client.getChannel().getClientSlot(client)); message.append(" "); Modified: jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java 2010-05-04 17:00:37 UTC (rev 856) +++ jetrix/trunk/src/java/net/jetrix/clients/TetrinetClient.java 2010-05-04 17:55:19 UTC (rev 857) @@ -41,7 +41,7 @@ */ public class TetrinetClient implements Client { - private String type; + private String agent; private String version; private Protocol protocol; private Channel channel; @@ -143,7 +143,8 @@ else if (message instanceof ClientInfoMessage) { ClientInfoMessage info = (ClientInfoMessage) message; - setVersion(info.getName() + " " + info.getVersion()); + setAgent(info.getName()); + setVersion(info.getVersion()); if ("gtetrinet".equalsIgnoreCase(info.getName())) { encoding = "UTF-8"; @@ -351,14 +352,14 @@ return version; } - public void setType(String type) + public String getAgent() { - this.type = type; + return agent; } - public String getType() + public void setAgent(String agent) { - return type; + this.agent = agent; } public Date getConnectionTime() @@ -408,7 +409,7 @@ public String toString() { - return "[Client " + getInetAddress() + " type=" + type + "]"; + return "[Client " + getInetAddress() + " type=" + agent + " " + version + "]"; } /** Modified: jetrix/trunk/src/java/net/jetrix/commands/WhoCommand.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/commands/WhoCommand.java 2010-05-04 17:00:37 UTC (rev 856) +++ jetrix/trunk/src/java/net/jetrix/commands/WhoCommand.java 2010-05-04 17:55:19 UTC (rev 857) @@ -71,11 +71,13 @@ { message.append("<purple>\xAE</purple>"); } - + + boolean fast = clientInChannel.getProtocol().getName().equals("tetrifast"); + if (user.getAccessLevel() > AccessLevel.PLAYER) message.append("<b>"); - if (clientInChannel.getProtocol().getName().equals("tetrifast")) message.append("<i>"); + if (fast) message.append("<i>"); message.append(user.getName()); - if (clientInChannel.getProtocol().getName().equals("tetrifast")) message.append("</i>"); + if (fast) message.append("</i>"); if (user.getAccessLevel() > AccessLevel.PLAYER) message.append("</b>"); } Modified: jetrix/trunk/src/java/net/jetrix/listeners/TSpecListener.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/listeners/TSpecListener.java 2010-05-04 17:00:37 UTC (rev 856) +++ jetrix/trunk/src/java/net/jetrix/listeners/TSpecListener.java 2010-05-04 17:55:19 UTC (rev 857) @@ -80,7 +80,10 @@ user.setName(tokens[1]); } - + + client.setAgent("TSpec"); + client.setVersion("1.13"); + return client; } } Modified: jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java 2010-05-04 17:00:37 UTC (rev 856) +++ jetrix/trunk/src/java/net/jetrix/listeners/TetrinetListener.java 2010-05-04 17:55:19 UTC (rev 857) @@ -88,10 +88,12 @@ if ((tokens.get(0)).equals(TetrinetProtocol.INIT_TOKEN)) { client.setProtocol(protocolManager.getProtocol(TetrinetProtocol.class)); + client.setAgent("TetriNET"); } else if ((tokens.get(0)).equals(TetrifastProtocol.INIT_TOKEN)) { client.setProtocol(protocolManager.getProtocol(TetrifastProtocol.class)); + client.setAgent("TetriFast"); } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2010-08-23 14:40:41
|
Revision: 865 http://jetrix.svn.sourceforge.net/jetrix/?rev=865&view=rev Author: smanux Date: 2010-08-23 14:40:34 +0000 (Mon, 23 Aug 2010) Log Message: ----------- Extended server properties Modified Paths: -------------- jetrix/trunk/src/etc/conf/server.xml jetrix/trunk/src/etc/tetrinet-server.dtd jetrix/trunk/src/java/net/jetrix/config/ServerConfig.java jetrix/trunk/src/java/net/jetrix/config/ServerRuleSet.java Modified: jetrix/trunk/src/etc/conf/server.xml =================================================================== --- jetrix/trunk/src/etc/conf/server.xml 2010-08-23 08:27:28 UTC (rev 864) +++ jetrix/trunk/src/etc/conf/server.xml 2010-08-23 14:40:34 UTC (rev 865) @@ -127,4 +127,9 @@ <!-- Mail server parameters --> <mailserver host="localhost" port="25" auth="false" username="" password="" debug="false"/> + <!-- Extended properties --> + <properties> + <property name="speedcheck.enable" value="false"/> + </properties> + </tetrinet-server> Modified: jetrix/trunk/src/etc/tetrinet-server.dtd =================================================================== --- jetrix/trunk/src/etc/tetrinet-server.dtd 2010-08-23 08:27:28 UTC (rev 864) +++ jetrix/trunk/src/etc/tetrinet-server.dtd 2010-08-23 14:40:34 UTC (rev 865) @@ -24,7 +24,7 @@ <!ELEMENT tetrinet-server (name?, language?, timeout?, max-channels?, max-players?, max-connections?, op-password, admin-password, access-log, error-log, channels?, listeners, services?, commands, ban?, datasources?, - mailserver?)> + mailserver?, properties?)> <!ATTLIST tetrinet-server host CDATA #IMPLIED> <!ELEMENT name (#PCDATA)> @@ -88,3 +88,8 @@ <!ATTLIST mailserver username CDATA #IMPLIED> <!ATTLIST mailserver password CDATA #IMPLIED> <!ATTLIST mailserver debug CDATA #IMPLIED> + +<!ELEMENT properties (property*)> +<!ELEMENT property EMPTY> +<!ATTLIST property name CDATA #REQUIRED> +<!ATTLIST property value CDATA #REQUIRED> Modified: jetrix/trunk/src/java/net/jetrix/config/ServerConfig.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/config/ServerConfig.java 2010-08-23 08:27:28 UTC (rev 864) +++ jetrix/trunk/src/java/net/jetrix/config/ServerConfig.java 2010-08-23 14:40:34 UTC (rev 865) @@ -81,6 +81,9 @@ /** Mail session configuration */ private MailSessionConfig mailSessionConfig; + /** Extended properties */ + private Properties properties = new Properties(); + private URL serverConfigURL; private URL channelsConfigURL; @@ -340,6 +343,17 @@ out.println(); } + if (properties != null && !properties.isEmpty()) + { + out.println(" <!-- Extended properties -->"); + out.println(" <properties>"); + for (String key : properties.stringPropertyNames()) + { + out.println(" <property name=\"" + key + "\" value=\"" + properties.getProperty(key) + "\">"); + } + out.println(" </properties>"); + out.println(); + } out.println("</tetrinet-server>"); @@ -1016,4 +1030,21 @@ { this.mailSessionConfig = mailSessionConfig; } + + /** + * @since 0.3 + */ + public String getProperty(String key) + { + return properties != null ? properties.getProperty(key) : null; + } + + /** + * @since 0.3 + */ + public void setProperty(String key, String value) + { + System.out.println("setting " + key + " to " + value); + properties.setProperty(key, value); + } } Modified: jetrix/trunk/src/java/net/jetrix/config/ServerRuleSet.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/config/ServerRuleSet.java 2010-08-23 08:27:28 UTC (rev 864) +++ jetrix/trunk/src/java/net/jetrix/config/ServerRuleSet.java 2010-08-23 14:40:34 UTC (rev 865) @@ -49,20 +49,20 @@ digester.addCallParam("tetrinet-server/error-log", 0, "path"); digester.addCallMethod("tetrinet-server/channels", "setChannelsFile", 1); digester.addCallParam("tetrinet-server/channels", 0, "path"); - + // command definitions digester.addObjectCreate("*/command", null, "class"); digester.addSetNext("*/command", "addCommand", "net.jetrix.commands.Command"); digester.addCallMethod("*/command", "setAccessLevel", 1, new Class[] {Integer.TYPE}); digester.addCallParam("*/command", 0, "access-level"); - + // listeners digester.addObjectCreate("*/listener", null, "class"); digester.addSetProperties("*/listener"); digester.addCallMethod("*/listener", "setAutoStart", 1, new Class[] {Boolean.TYPE}); digester.addCallParam("*/listener", 0, "auto-start"); digester.addSetNext("*/listener", "addListener", "net.jetrix.Listener"); - + // services digester.addObjectCreate("*/service", null, "class"); digester.addSetProperties("*/service"); @@ -70,10 +70,10 @@ digester.addCallParam("*/service", 0, "auto-start"); digester.addSetProperty("*/service/param", "name", "value"); digester.addSetNext("*/service", "addService", "net.jetrix.Service"); - + // banlist digester.addCallMethod("tetrinet-server/ban/host", "addBannedHost", 0); - + // datasource digester.addObjectCreate("*/datasource", "net.jetrix.config.DataSourceConfig"); digester.addSetNext("*/datasource", "addDataSource", "net.jetrix.config.DataSourceConfig"); @@ -85,7 +85,7 @@ digester.addCallMethod("*/datasource/password", "setPassword", 0); digester.addCallMethod("*/datasource/min-idle", "setMinIdle", 0); digester.addCallMethod("*/datasource/max-active", "setMaxActive", 0); - + // mail session digester.addObjectCreate("*/mailserver", "net.jetrix.config.MailSessionConfig"); digester.addSetNext("*/mailserver", "setMailSessionConfig", "net.jetrix.config.MailSessionConfig"); @@ -101,5 +101,10 @@ digester.addCallParam("*/mailserver", 0, "password"); digester.addCallMethod("*/mailserver", "setDebug", 1, new Class[] {Boolean.TYPE}); digester.addCallParam("*/mailserver", 0, "debug"); + + // extended properties + digester.addCallMethod("*/properties/property", "setProperty", 2); + digester.addCallParam("*/properties/property", 0, "name"); + digester.addCallParam("*/properties/property", 1, "value"); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2010-08-28 22:22:45
|
Revision: 869 http://jetrix.svn.sourceforge.net/jetrix/?rev=869&view=rev Author: smanux Date: 2010-08-28 22:22:39 +0000 (Sat, 28 Aug 2010) Log Message: ----------- Explicit maximum heap size Modified Paths: -------------- jetrix/trunk/src/bin/jetrix.bat jetrix/trunk/src/bin/launcher.nsi jetrix/trunk/src/etc/deb/data/etc/default/jetrix jetrix/trunk/src/etc/deb/data/etc/init.d/jetrix Modified: jetrix/trunk/src/bin/jetrix.bat =================================================================== --- jetrix/trunk/src/bin/jetrix.bat 2010-08-27 11:41:18 UTC (rev 868) +++ jetrix/trunk/src/bin/jetrix.bat 2010-08-28 22:22:39 UTC (rev 869) @@ -5,4 +5,4 @@ IF NOT JAVA_HOME == "" SET JAVA_EXE="%JAVA_HOME%\bin\java" IF JAVA_HOME == "" SET JAVA_EXE=java -%JAVA_EXE% -Djava.library.path=lib -jar lib/jetrix-launcher-@version@.jar %1 +%JAVA_EXE% -Xmx128m -Djava.library.path=lib -jar lib/jetrix-launcher-@version@.jar %1 Modified: jetrix/trunk/src/bin/launcher.nsi =================================================================== --- jetrix/trunk/src/bin/launcher.nsi 2010-08-27 11:41:18 UTC (rev 868) +++ jetrix/trunk/src/bin/launcher.nsi 2010-08-28 22:22:39 UTC (rev 869) @@ -18,7 +18,7 @@ AutoCloseWindow true ShowInstDetails nevershow -!define ARGS "-Djava.library.path=lib -jar lib/jetrix-launcher-@version@.jar" +!define ARGS "-Xmx128m -Djava.library.path=lib -jar lib/jetrix-launcher-@version@.jar" Section "" Call GetJRE Modified: jetrix/trunk/src/etc/deb/data/etc/default/jetrix =================================================================== --- jetrix/trunk/src/etc/deb/data/etc/default/jetrix 2010-08-27 11:41:18 UTC (rev 868) +++ jetrix/trunk/src/etc/deb/data/etc/default/jetrix 2010-08-28 22:22:39 UTC (rev 869) @@ -3,3 +3,6 @@ # Master system-wide jetrix switch. The initscript # will not run if it is not set to yes. RUN="yes" + +# Arguments to pass to the Java virtual machine (JVM). +JAVA_OPTS=-Xmx128m Modified: jetrix/trunk/src/etc/deb/data/etc/init.d/jetrix =================================================================== --- jetrix/trunk/src/etc/deb/data/etc/init.d/jetrix 2010-08-27 11:41:18 UTC (rev 868) +++ jetrix/trunk/src/etc/deb/data/etc/init.d/jetrix 2010-08-28 22:22:39 UTC (rev 869) @@ -1,11 +1,16 @@ #!/bin/sh +# +# Debian system startup script for Jetrix +# +# ### BEGIN INIT INFO # Provides: tetrinet-server jetrix # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 -# Short-Description: Init script for Jetrix +# Short-Description: Jetrix TetriNET Server +# Description: Jetrix TetriNET Server (http://jetrix.sourceforge.net) ### END INIT INFO This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |