📄 messageadapter.java
字号:
/*
* Created on May 28, 2005
* Handles message related communication between
* the client and server. This method favored over using
*
*/
package org.GTADS.messenger;
import org.GTADS.debug.ServerLogger;
import java.net.*;
import java.io.*;
import org.GTADS.server.*;
import org.GTADS.protocol.*;
import java.util.Vector;
import org.GTADS.helper.*;
import org.GTADS.client.*;
import org.GTADS.usermanager.*;
/**
* @author Steven Day
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class MessageAdapter extends Thread {
public static boolean sendData(Object user, Object clientReceive, MetaData metadata, String message) throws IOException {
DataOutputStream dout;
if (clientReceive != null) {
if (clientReceive instanceof Socket) {
if (Helper.isServer())
dout = (DataOutputStream)ServerCacheHandler.socketStreamCache.get((Socket)clientReceive);
else
dout = new DataOutputStream(((Socket)clientReceive).getOutputStream());
return ProtocolHandler.toClient(dout, metadata.getMetaDataAsString(), message);
}
else if (clientReceive instanceof DataOutputStream)
return ProtocolHandler.toClient((DataOutputStream)clientReceive, metadata.getMetaDataAsString(), message);
}
return false;
}
public static boolean sendToAll(MetaData metadata, String message){
Vector listOfDataStreams = new Vector(ServerCacheHandler.socketStreamCache.values());
Vector listOfSockets = new Vector(ServerCacheHandler.userSocketCache.values());
try {
for (int i = 0; i < listOfSockets.size(); i++){
if (listOfSockets.elementAt(i) == null || ((Socket)listOfSockets.elementAt(i)).isClosed())
continue;
sendData(null, listOfSockets.elementAt(i),metadata,message);
}
return true;
} catch (IOException ie) {
ServerLogger.sendConsoleDebugMessage("Send to all failed ", MessageAdapter.class, 5);
}
return false;
}
public static boolean sendToChatroom(MetaData metadata, String chatroom, String message) throws IOException{
Chatroom thisChatroom = (Chatroom)ServerCacheHandler.chatroomNameCache.get(chatroom);
Vector usersInChatroom = new Vector();
if (thisChatroom == null || thisChatroom.getListOfUsers().isEmpty()){
return false;
}
usersInChatroom = thisChatroom.getListOfUsers();
for (int i = 0; i < usersInChatroom.size(); i++){
String userOnList = usersInChatroom.elementAt(i).toString();
Socket chatroomUserSocket = (Socket)ServerCacheHandler.userSocketCache.get(userOnList);
if (chatroomUserSocket == null){
ServerLogger.sendConsoleDebugMessage("Socket broken for user "
+ userOnList + ". Recommended action: kill the user", MessageAdapter.class);
continue;
}
MessageAdapter.sendData(null, chatroomUserSocket, metadata, message);
}
return true;
}
public static MetaData getMetaDataFromString(String message){
String dataLine[] = new String[4];
if (message.split(",").length < 4)
return null;
else {
dataLine = message.split(",");
return new MetaData(dataLine[0], Integer.valueOf(dataLine[1]).intValue(), dataLine[2]);
}
}
public static String getMessageFromString(String message){
String dataLine[] = new String[4];
if (message.split(",").length != 4)
return null;
else {
dataLine = message.split(",");
return dataLine[3];
}
}
public static boolean joinChatroom(String chatroom) throws IOException{
MetaData joinChatHeader = new MetaData(DSChatClient.clientUser.getUsername(), MetaData.GENERIC, MetaData.JOIN_CHATROOM);
MessageAdapter.sendData(null, DSChatClient.ClientSocket, joinChatHeader, chatroom);
return false;
}
public static boolean partChatroom(String chatroom) throws IOException{
MetaData partChatHeader = new MetaData(DSChatClient.clientUser.getUsername(), MetaData.GENERIC, MetaData.PART_CHATROOM);
MessageAdapter.sendData(null, DSChatClient.ClientSocket, partChatHeader, chatroom);
return false;
}
public static boolean quitServer(String chatroom) throws IOException{
MetaData partChatHeader = new MetaData(DSChatClient.clientUser.getUsername(), MetaData.GENERIC, MetaData.QUIT_CHATROOM);
MessageAdapter.sendData(null, DSChatClient.ClientSocket, partChatHeader, chatroom);
return false;
}
public static void serverKickUser(String userToKick) throws IOException {
MetaData serverKickHeader = new MetaData(DSChatClient.clientUser.getUsername(), MetaData.GENERIC, MetaData.S_KICK);
MessageAdapter.sendData(null, DSChatClient.ClientSocket, serverKickHeader, userToKick);
}
public static String listenForResponse(Socket s){return "foo";}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -