/** * */ package jframe.core.plugin; import jframe.core.msg.Msg; import jframe.core.msg.PluginMsg; import jframe.core.plugin.annotation.Message; import jframe.core.plugin.annotation.MsgInterest; import jframe.core.plugin.annotation.MsgRecv; /** * @author dzh * @date Oct 14, 2013 8:15:54 AM * @since 1.0 */ @Message(isSender = true, isRecver = true) public abstract class PluginSenderRecver extends PluginSender { public PluginSenderRecver() { super(); } /* * (non-Javadoc) * * @see jframe.core.dispatch.DispatchTarget#receive(jframe.core.msg.Msg) */ @MsgRecv public void receive(Msg<?> msg) { doRecvMsg(msg); } /** * @param msg */ abstract protected void doRecvMsg(Msg<?> msg); /* * (non-Javadoc) * * @see jframe.core.dispatch.DispatchTarget#interestMsg(jframe.core.msg.Msg) */ @MsgInterest public boolean interestMsg(Msg<?> msg) { if (msg == null || PluginStatus.STOP == getStatus() || getName().equals(msg.getMeta(PluginMsg.PluginName))) return false; return canRecvMsg(msg); } /** * @param msg * @return */ abstract protected boolean canRecvMsg(Msg<?> msg); }