Package com.sissi.pipeline.in.presence.muc

Source Code of com.sissi.pipeline.in.presence.muc.PresenceMucJoin2SelfMessageHistoryProcessor

package com.sissi.pipeline.in.presence.muc;

import com.sissi.context.JID;
import com.sissi.context.JIDContext;
import com.sissi.persistent.Recover;
import com.sissi.pipeline.in.ProxyProcessor;
import com.sissi.protocol.Element;
import com.sissi.protocol.Protocol;
import com.sissi.protocol.message.Message;
import com.sissi.protocol.muc.XMuc;
import com.sissi.protocol.offline.Delay;
import com.sissi.protocol.presence.Presence;
import com.sissi.ucenter.relation.muc.room.Room;
import com.sissi.ucenter.relation.muc.room.RoomBuilder;
import com.sissi.ucenter.relation.muc.room.RoomConfig;

/**
* 历史消息
*
* @author kim 2014年3月7日
*/
public class PresenceMucJoin2SelfMessageHistoryProcessor extends ProxyProcessor {

  private final Recover recover;

  private final RoomBuilder room;

  public PresenceMucJoin2SelfMessageHistoryProcessor(Recover recover, RoomBuilder room) {
    super();
    this.recover = recover;
    this.room = room;
  }

  /*
   * 房间如果为Hidden则Delay.From = message.from.bare, 否则为真实JID
   *
   * @see com.sissi.pipeline.Input#input(com.sissi.context.JIDContext, com.sissi.protocol.Protocol)
   */
  @Override
  public boolean input(JIDContext context, Protocol protocol) {
    XMuc x = protocol.cast(Presence.class).findField(XMuc.NAME, XMuc.class);
    if (x.hasHistory()) {
      JID group = super.build(protocol.getTo());
      Room room = this.room.build(group);
      for (Element message : this.recover.pull(group, x.history())) {
        Delay delay = Message.class.cast(message).getDelay();
        delay.setFrom(room.allowed(context.jid(), RoomConfig.WHOISALLOW, super.build(delay.getFrom())) ? super.build(message.getFrom()).asStringWithBare() : delay.getFrom());
        context.write(message);
      }
  }
    return true;
  }
}
TOP

Related Classes of com.sissi.pipeline.in.presence.muc.PresenceMucJoin2SelfMessageHistoryProcessor

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.