innaircbot/src/main/java/InnaIrcBot/ProvidersConsumers/StreamProvider.java

47 lines
1.8 KiB
Java
Raw Normal View History

2018-12-16 17:27:44 +03:00
package InnaIrcBot.ProvidersConsumers;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
2019-01-12 18:31:05 +03:00
import java.io.PrintWriter;
2018-12-16 17:27:44 +03:00
import java.net.Socket;
import java.util.HashMap;
public class StreamProvider {
private static HashMap<String, OutputStreamWriter> srvStreamMap = new HashMap<>();
2019-01-12 18:31:05 +03:00
private static HashMap<String, PrintWriter> srvSysConsumersMap = new HashMap<>();
2018-12-16 17:27:44 +03:00
public static synchronized void writeToStream(String server, String message){
try {
srvStreamMap.get(server).write(message+"\n");
srvStreamMap.get(server).flush();
2019-01-27 07:16:36 +03:00
//System.out.println("W:"+message);
2019-01-12 18:31:05 +03:00
// If this application says something, then pass it into system consumer thread to handle
if (message.startsWith("PRIVMSG")) {
srvSysConsumersMap.get(server).println("INNA "+message);
srvSysConsumersMap.get(server).flush();
}
2018-12-16 17:27:44 +03:00
} catch (java.io.IOException e){
System.out.println("Internal issue: StreamProvider->writeToStream() caused I/O exception.");
}
}
public static synchronized boolean setStream(String server, Socket socket){
try {
OutputStream outStream = socket.getOutputStream();
srvStreamMap.put(server, new OutputStreamWriter(outStream));
return true;
} catch (java.io.IOException e){
System.out.println("Internal issue: StreamProvider->setStream() caused I/O exception.");
return false;
}
}
public static synchronized void delStream(String server){
srvStreamMap.remove(server);
2019-01-12 18:31:05 +03:00
srvSysConsumersMap.remove(server);
}
public static synchronized void setSysConsumer(String server, PrintWriter pw){
srvSysConsumersMap.put(server, pw);
2018-12-16 17:27:44 +03:00
}
}