package com.sissi.pipeline.in.stream;
import com.sissi.context.JIDContext;
import com.sissi.pipeline.Input;
import com.sissi.protocol.Protocol;
import com.sissi.protocol.Stream;
import com.sissi.protocol.error.ServerError;
import com.sissi.protocol.error.detail.UnSupportedVersion;
/**
* <stream:stream to='sissi.pw' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'></p>Version校验
*
* @author kim 2014年1月4日
*/
public class StreamCheckVersionProcessor implements Input {
private final String minVersion;
private final String domain;
public StreamCheckVersionProcessor(String domain, String minVersion) {
super();
this.domain = domain;
this.minVersion = minVersion;
}
@Override
public boolean input(JIDContext context, Protocol protocol) {
return protocol.cast(Stream.class).version(this.minVersion) ? true : !context.write(Stream.closeWhenOpening(new ServerError().add(UnSupportedVersion.DETAIL)).setFrom(this.domain).setTo(protocol.getFrom())).close();
}
}