
org.zbus.server.ZbusServerEventAdaptor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of zbus-client Show documentation
Show all versions of zbus-client Show documentation
lightweight message queue, service bus
The newest version!
package org.zbus.server;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentMap;
import org.zbus.common.MessageMode;
import org.zbus.remoting.Message;
import org.zbus.remoting.MessageHandler;
import org.zbus.remoting.ServerEventAdaptor;
import org.zbus.remoting.znet.Session;
import org.zbus.server.mq.AbstractMQ;
public class ZbusServerEventAdaptor extends ServerEventAdaptor{
private ConcurrentMap mqTable = null;
@Override
public void onMessage(Object obj, Session sess) throws IOException {
Message msg = (Message)obj;
if(this.globalHandler != null){
this.globalHandler.handleMessage(msg, sess);
}
String cmd = msg.getCommand();
if(cmd == null){
Message res = new Message();
res.setMsgId(msg.getMsgId());
res.setStatus("400");
res.setBody("Bad format: missing command");
sess.write(res);
return;
}
MessageHandler handler = handlerMap.get(cmd);
if(handler != null){
handler.handleMessage(msg, sess);
return;
}
Message res = new Message();
res.setMsgId(msg.getMsgId());
res.setStatus("400");
String text = String.format("Bad format: command(%s) not support", cmd);
res.setBody(text);
sess.write(res);
}
@Override
public void onException(Throwable e, Session sess) throws IOException {
if(! (e instanceof IOException) ){
super.onException(e, sess);
}
this.cleanMQ(sess);
}
@Override
public void onSessionDestroyed(Session sess) throws IOException {
this.cleanMQ(sess);
}
private void cleanMQ(Session sess){
if(this.mqTable == null) return;
String creator = sess.getRemoteAddress();
Iterator> iter = this.mqTable.entrySet().iterator();
while(iter.hasNext()){
Entry e = iter.next();
AbstractMQ mq = e.getValue();
if(MessageMode.isEnabled(mq.getMode(), MessageMode.Temp)){
if(mq.getCreator().equals(creator)){
iter.remove();
}
}
}
}
public void setMqTable(ConcurrentMap mqTable) {
this.mqTable = mqTable;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy