Added message bus

This commit is contained in:
nathan 2015-06-29 01:43:10 +02:00
parent 97abebdc16
commit 90ecbd60bd
2 changed files with 47 additions and 37 deletions

View File

@ -0,0 +1,47 @@
package dorkbox.util;
import dorkbox.util.messagebus.IMessageBus;
import dorkbox.util.messagebus.MessageBus;
import dorkbox.util.messagebus.error.IPublicationErrorHandler;
import dorkbox.util.messagebus.error.PublicationError;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public
class MBus {
public static final IMessageBus bus;
private static final Logger logger = LoggerFactory.getLogger(MBus.class);
static {
MessageBus messageBus = new MessageBus(OS.getOptimumNumberOfThreads() * 2);
IPublicationErrorHandler ExceptionCounter = new IPublicationErrorHandler() {
@Override
public void handleError(PublicationError error) {
logger.error(error.toString());
if (error.getCause() != null) {
error.getCause().printStackTrace();
}
}
@Override
public
void handleError(final String error, final Class<?> listenerClass) {
// Printout the error itself
logger.error(new StringBuilder().append(error).append(": ").append(listenerClass.getSimpleName()).toString());
}
};
messageBus.getErrorHandler().addErrorHandler(ExceptionCounter);
messageBus.start();
bus = messageBus;
}
private
MBus() {
}
}

View File

@ -1,37 +0,0 @@
package dorkbox.util;
import net.engio.mbassy.IMessageBus;
import net.engio.mbassy.MBassador;
import net.engio.mbassy.error.IPublicationErrorHandler;
import net.engio.mbassy.error.PublicationError;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import dorkbox.util.OS;
public class MessageBus {
public static final IMessageBus bus;
private static final Logger logger = LoggerFactory.getLogger(MessageBus.class);
static {
MBassador mBassador = new MBassador(OS.getOptimumNumberOfThreads()*2);
IPublicationErrorHandler ExceptionCounter = new IPublicationErrorHandler() {
@Override
public void handleError(PublicationError error) {
logger.error(error.toString());
}
};
mBassador.addErrorHandler(ExceptionCounter);
mBassador.start();
bus = mBassador;
}
private MessageBus() {
}
}