Package com.sissi.pipeline.in.iq.si

Source Code of com.sissi.pipeline.in.iq.si.Si4DelegationProcessor

package com.sissi.pipeline.in.iq.si;

import com.mongodb.BasicDBObjectBuilder;
import com.sissi.config.Dictionary;
import com.sissi.config.impl.MongoUtils;
import com.sissi.context.JIDContext;
import com.sissi.persistent.Persistent;
import com.sissi.pipeline.in.ProxyProcessor;
import com.sissi.protocol.Protocol;
import com.sissi.protocol.ProtocolType;
import com.sissi.protocol.iq.IQ;
import com.sissi.protocol.iq.bytestreams.Bytestreams;
import com.sissi.protocol.iq.bytestreams.Streamhost;
import com.sissi.protocol.iq.si.Si;

/**
* 离线文件推送
*
* @author kim 2014年2月25日
*/
public class Si4DelegationProcessor extends ProxyProcessor {

  private final boolean resource;

  private final String delegation;

  private final Streamhost streamhost;

  private final Persistent persistent;

  public Si4DelegationProcessor(boolean resource, String delegation, Streamhost streamhost, Persistent persistent) {
    super();
    this.resource = resource;
    this.delegation = delegation;
    this.streamhost = streamhost;
    this.persistent = persistent;
  }

  /*
   * Query: {"sid":Xxx"}</p>Entity: {"$addToSet":{"host":Xxx}}
   *
   * @see com.sissi.pipeline.Input#input(com.sissi.context.JIDContext, com.sissi.protocol.Protocol)
   */
  public boolean input(JIDContext context, Protocol protocol) {
    String host = protocol.cast(Si.class).setId(protocol.parent().getId()).host(super.build(protocol.parent().getTo()).asString(this.resource), context.jid().asString(this.resource));
    context.write(new IQ().add(new Bytestreams().setSid(this.persistent.peek(MongoUtils.asMap(BasicDBObjectBuilder.start(Dictionary.FIELD_SID, protocol.parent().getId()).get()), MongoUtils.asMap(BasicDBObjectBuilder.start("$addToSet", BasicDBObjectBuilder.start(Dictionary.FIELD_HOST, host).get()).get())).get(Dictionary.FIELD_SID).toString()).add(this.streamhost, true)).setFrom(this.delegation).setId(host).setType(ProtocolType.SET));
    return true;
  }
}
TOP

Related Classes of com.sissi.pipeline.in.iq.si.Si4DelegationProcessor

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.