package server;
import exception.NoIpException;
import protocol.ProtoHead;
import tools.Debug;
/**
* 用switch进行请求分发
*
* @author Feng
*
*/
public class ClientRequest_Dispatcher {
// public static ClientRequest_Dispatcher instance = new
// ClientRequest_Dispatcher();
private Server_User server_User;
private Server_Friend server_Friend;
private Server_Chatting server_Chatting;
public Server_User getServer_User() {
return server_User;
}
public void setServer_User(Server_User server_User) {
this.server_User = server_User;
}
public Server_Friend getServer_Friend() {
return server_Friend;
}
public void setServer_Friend(Server_Friend server_Friend) {
this.server_Friend = server_Friend;
}
public Server_Chatting getServer_Chatting() {
return server_Chatting;
}
public void setServer_Chatting(Server_Chatting server_Chatting) {
this.server_Chatting = server_Chatting;
}
/**
* 根据请求的类型分配给不同的处理器
*
* @param networkMessage
* @author Feng
*/
public void dispatcher(NetworkPacket networkPacket) {
// System.out.println("IP" +
// networkMessage.ioSession.getRemoteAddress());
try {
Debug.log("ClientRequest_Dispatcher", "Client(" + ServerModel.getIoSessionKey(networkPacket.ioSession)
+ ")'s request type is : " + networkPacket.getMessageType().toString());
} catch (Exception e1) {
}
try {
switch (networkPacket.getMessageType().getNumber()) {
// Client回复心跳包
// case ProtoHead.ENetworkMessage.KEEP_ALIVE_SYNC_VALUE:
// server_User.keepAlive(networkPacket);
// break;
case ProtoHead.ENetworkMessage.REGISTER_REQ_VALUE:
server_User.register(networkPacket);
break;
case ProtoHead.ENetworkMessage.LOGIN_REQ_VALUE:
server_User.login(networkPacket);
break;
case ProtoHead.ENetworkMessage.PERSONALSETTINGS_REQ_VALUE:
server_User.personalSettings(networkPacket);
break;
case ProtoHead.ENetworkMessage.GET_USERINFO_REQ_VALUE:
server_Friend.getUserInfo(networkPacket);
break;
case ProtoHead.ENetworkMessage.ADD_FRIEND_REQ_VALUE:
server_Friend.addFriend(networkPacket);
break;
case ProtoHead.ENetworkMessage.DELETE_FRIEND_REQ_VALUE:
server_Friend.deleteFriend(networkPacket);
break;
// 另一个人登陆,本用户被踢下的通知的回复
// case ProtoHead.ENetworkMessage.OFFLINE_SYNC_VALUE:
// server_User.clientOfflineResponse(networkPacket);
// break;
case ProtoHead.ENetworkMessage.LOGOUT_REQ_VALUE:
server_User.logout(networkPacket);
break;
case ProtoHead.ENetworkMessage.GET_PERSONALINFO_REQ_VALUE:
server_User.getPersonalInfo(networkPacket);
break;
// client发送消息
case ProtoHead.ENetworkMessage.SEND_CHAT_REQ_VALUE:
server_Chatting.clientSendChatting(networkPacket);
break;
// 服务器向客户端发送未接收消息,客户端的回答
// case ProtoHead.ENetworkMessage.RECEIVE_CHAT_SYNC_VALUE:
// server_Chatting.clientReceiveChatting(networkPacket);
// break;
// 创建群聊
case ProtoHead.ENetworkMessage.CREATE_GROUP_CHAT_REQ_VALUE:
server_Chatting.createGroupChatting(networkPacket);
break;
// 修改群聊成员
case ProtoHead.ENetworkMessage.CHANGE_GROUP_REQ_VALUE:
server_Chatting.changeGroup(networkPacket);
break;
// 获取群资料
case ProtoHead.ENetworkMessage.GET_GROUP_INFO_REQ_VALUE:
server_Chatting.getGroupInfo(networkPacket);
break;
default:
break;
}
} catch (NoIpException e) {
e.printStackTrace();
}
}
}