package com.sissi.pipeline.in.iq.block; import com.sissi.context.JID; import com.sissi.context.JIDContext; import com.sissi.context.Status; import com.sissi.pipeline.in.ProxyProcessor; import com.sissi.protocol.Protocol; import com.sissi.protocol.iq.block.Block; import com.sissi.protocol.iq.block.BlockListItem; import com.sissi.protocol.presence.Presence; /** * 广播Presence(From: Block.item.jid所有资源, To:当前JID所有资源) * * @author kim 2013年12月12日 */ abstract class ToSelfsPresenceProcessor extends ProxyProcessor { @Override public boolean input(JIDContext context, Protocol protocol) { Presence presence = new Presence(); for (BlockListItem item : protocol.cast(Block.class).getItem()) { JID to = super.build(item.getJid()); for (JID resource : super.resources(to)) { // super.findOne(to, true, true) -> Block.item.jid指定资源的JIDContext super.broadcast(context.jid(), presence.setFrom(resource).clauses(this.build(super.findOne(to, true, true)).clauses())); } } return true; } abstract protected Status build(JIDContext contacter); }