package nginx.clojure;
import static nginx.clojure.NginxClojureRT.pushNGXOfft;
import static nginx.clojure.NginxClojureRT.fetchNGXOfft;
public class OffsetHeaderHolder extends AbstractHeaderHolder {
public OffsetHeaderHolder() {
}
public OffsetHeaderHolder(String name, long offset, long headersOffset) {
super(name, offset, headersOffset);
}
@Override
public void push(long h, long pool, Object v) {
long l;
if (v instanceof Number) {
l = ((Number)v).longValue();
}else if (v instanceof String) {
l = Long.valueOf((String)v);
}else {
l = Long.valueOf(pickString(v));
}
pushNGXOfft(h + offset, l);
}
public void push(long h, long v) {
pushNGXOfft(h + offset, v);
}
@Override
public void clear(long h) {
pushNGXOfft(h + offset, -1);
}
@Override
public Object fetch(long h) {
return Long.toString(fetchNGXOfft(h + offset));
}
@Override
public boolean exists(long h) {
return h != 0 && fetchNGXOfft(h + offset) != -1;
}
}