package com.sissi.ucenter.relation.muc.affiliation.impl;
import com.sissi.context.JID;
import com.sissi.context.JIDBuilder;
import com.sissi.context.JIDContext;
import com.sissi.pipeline.Input;
import com.sissi.protocol.message.Message;
import com.sissi.protocol.muc.Invite;
import com.sissi.protocol.muc.XUser;
import com.sissi.ucenter.relation.muc.MucItem;
import com.sissi.ucenter.relation.muc.affiliation.AffiliationBroadcast;
import com.sissi.ucenter.relation.muc.room.Room;
import com.sissi.ucenter.relation.muc.room.RoomConfig;
/**
* MUC房间邀请广播
*
* @author kim 2014年3月24日
*/
public class InviteAffiliationBroadcast implements AffiliationBroadcast {
private final Input proxy;
private final JIDBuilder jidBuilder;
public InviteAffiliationBroadcast(Input proxy, JIDBuilder jidBuilder) {
super();
this.proxy = proxy;
this.jidBuilder = jidBuilder;
}
@Override
public AffiliationBroadcast broadcast(JID group, Room room, MucItem item, JIDContext invoker) {
// 岗位限制则发出加入邀请
if (!room.allowed(this.jidBuilder.build(item.getJid()), RoomConfig.AFFILIATIONALLOW)) {
// Message.to = group, Invite.to = item.jid
this.proxy.input(invoker, new Message().muc(new XUser().invite(new Invite().setTo(item.getJid()))).setTo(group));
}
return this;
}
}