From: <sno...@us...> - 2013-09-10 23:33:52
|
Revision: 85 http://sourceforge.net/p/openrpg/svn/85 Author: snowdog_ Date: 2013-09-10 23:33:48 +0000 (Tue, 10 Sep 2013) Log Message: ----------- Added module catchable events for network activities Modified Paths: -------------- trunk/src/openrpg2/common/core/network/NetworkServerModule.java Modified: trunk/src/openrpg2/common/core/network/NetworkServerModule.java =================================================================== --- trunk/src/openrpg2/common/core/network/NetworkServerModule.java 2013-09-10 23:31:07 UTC (rev 84) +++ trunk/src/openrpg2/common/core/network/NetworkServerModule.java 2013-09-10 23:33:48 UTC (rev 85) @@ -24,12 +24,13 @@ import java.util.Date; import openrpg2.common.core.ORPGConstants; import openrpg2.common.core.ORPGMessage; +import openrpg2.common.core.event.ORPGEvent; import openrpg2.common.module.NetworkedModule; import openrpg2.common.module.ServerLoadable; /** * The NetworkServerModule is a special server loadable module to provide network information to other modules - * in a controled and safe manner. This class is loaded into the module manager and provides an API through which + * in a controlled and safe manner. This class is loaded into the module manager and provides an API through which * network related information can be obtained by other modules and thus keep other modules from relying directly * on the network's specific implementation. This module also provides support for message based requests for * graceful disconnection of/by a client. @@ -39,10 +40,14 @@ private final static String HEADER_OP = "OP"; private final static int OP_NOOP = 0; - private final static int OP_DISCONNECT = 1; - private final static int OP_ALERT = 2; - private final static int OP_SHUTDOWN = 3; + private final static int OP_JOIN = 1; + private final static int OP_DISCONNECT = 2; + private final static int OP_ALERT = 3; + private final static int OP_SHUTDOWN = 4; + private final static int EVENT_CLIENT_JOIN = 1; + private final static int EVENT_CLIENT_DISCONNECT = 2; + private NetworkServer network = null; /** Creates a new instance of NetworkServerModule */ @@ -50,25 +55,39 @@ network = networkReference; } + @Override public void doRegistration(){ - modCom.registerMessageType(ORPGConstants.TYPE_NETWORK, this); + this.modCom.registerMessageType(ORPGConstants.TYPE_NETWORK, this); + this.modCom.registerEventSender(this, NetworkServerModule.EVENT_CLIENT_JOIN); + this.modCom.registerEventSender(this, NetworkServerModule.EVENT_CLIENT_DISCONNECT); } + @Override public void processMessage(ORPGMessage msg){ int clientId = msg.getOriginatorId(); - int operation = Integer.parseInt(msg.getHeader(HEADER_OP)); + int operation = Integer.parseInt(msg.getHeader(NetworkServerModule.HEADER_OP)); switch(operation){ - case(OP_NOOP):{ break; } - case(OP_DISCONNECT):{ handleDisconnectMessage(msg);break; } - case(OP_ALERT):{ handleAlertMessage(msg); break; } - case(OP_SHUTDOWN):{ handleShutdownMessage(msg); break; } + case(NetworkServerModule.OP_NOOP):{ break; } + case(NetworkServerModule.OP_JOIN):{ handleJoinMessage(msg);break; } + case(NetworkServerModule.OP_DISCONNECT):{ handleDisconnectMessage(msg);break; } + case(NetworkServerModule.OP_ALERT):{ handleAlertMessage(msg); break; } + case(NetworkServerModule.OP_SHUTDOWN):{ handleShutdownMessage(msg); break; } default: {break;} } } + private void handleJoinMessage(ORPGMessage msg){ + //Fire an event to all watching modules that the client has joined the server + ORPGEvent e = new ORPGEvent(this,NetworkServerModule.EVENT_CLIENT_JOIN); + e.data = new Integer(msg.getOriginatorId()); + this.modCom.generateEvent(e); + } private void handleDisconnectMessage(ORPGMessage msg){ - //TODO: handle notification of rest of ORPG2 system when a client sends a disconnect message + //Fire an event to all watching modules that the client has disconnected from the server + ORPGEvent e = new ORPGEvent(this,NetworkServerModule.EVENT_CLIENT_DISCONNECT); + e.data = new Integer(msg.getOriginatorId()); + this.modCom.generateEvent(e); } private void handleAlertMessage(ORPGMessage msg){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |