Package com.sissi.ucenter.relation.roster.impl

Source Code of com.sissi.ucenter.relation.roster.impl.BroadcastRelationCascade

package com.sissi.ucenter.relation.roster.impl;

import java.util.UUID;

import com.sissi.broadcast.BroadcastProtocol;
import com.sissi.context.JID;
import com.sissi.protocol.ProtocolType;
import com.sissi.protocol.iq.IQ;
import com.sissi.protocol.iq.roster.Group;
import com.sissi.protocol.iq.roster.GroupItem;
import com.sissi.protocol.iq.roster.Roster;
import com.sissi.protocol.iq.roster.RosterSubscription;
import com.sissi.ucenter.relation.roster.RelationCascade;
import com.sissi.ucenter.relation.roster.RosterRelation;

/**
* 级联广播
*
* @author kim 2014年1月22日
*/
public class BroadcastRelationCascade implements RelationCascade {

  private final BroadcastProtocol broadcastProtocol;

  private final MongoOurRelation ourRelation;

  private final Group remove;

  /**
   * @param broadcastProtocol
   * @param ourRelation
   * @param remove 默认Group(默认)
   */
  public BroadcastRelationCascade(BroadcastProtocol broadcastProtocol, MongoOurRelation ourRelation, Group remove) {
    super();
    this.broadcastProtocol = broadcastProtocol;
    this.ourRelation = ourRelation;
    this.remove = remove;
  }

  @Override
  public RelationCascade update(JID master, JID slave) {
    RosterRelation relation = this.ourRelation.ourRelation(master, slave).cast(RosterRelation.class);
    // 激活则广播
    if (relation.activate()) {
      this.broadcastProtocol.broadcast(master, new IQ().setId(UUID.randomUUID().toString()).add(new Roster(new GroupItem(relation))).setType(ProtocolType.SET));
    }
    return this;
  }

  public RelationCascade remove(JID master, JID slave) {
    this.broadcastProtocol.broadcast(master, new IQ().setId(UUID.randomUUID().toString()).add(new Roster(new GroupItem(slave).addOnEmpty(this.remove).setSubscription(RosterSubscription.REMOVE))).setType(ProtocolType.SET));
    return this;
  }
}
TOP

Related Classes of com.sissi.ucenter.relation.roster.impl.BroadcastRelationCascade

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.