package nginx.clojure;
import static nginx.clojure.MiniConstants.*;
import static nginx.clojure.NginxClojureRT.ngx_http_clojure_mem_shadow_copy_ngx_str;
import static nginx.clojure.NginxClojureRT.pushNGXSizet;
import static nginx.clojure.NginxClojureRT.pushNGXString;
public class ResponseContentTypeHolder extends NgxStringHeaderHolder {
public ResponseContentTypeHolder() {
super("Content-Type", NGX_HTTP_CLOJURE_HEADERSO_CONTENT_TYPE_OFFSET, NGX_HTTP_CLOJURE_HEADERSO_HEADERS_OFFSET);
}
@Override
public void push(long h, long pool, Object v) {
String s = pickString(v);
Long ll = s == null ? null : MIME_TYPES.get(s);
if (ll != null) {
ngx_http_clojure_mem_shadow_copy_ngx_str(ll.longValue(), h + NGX_HTTP_CLOJURE_HEADERSO_CONTENT_TYPE_OFFSET);
//be friendly to gzip module
pushNGXSizet(h + NGX_HTTP_CLOJURE_HEADERSO_CONTENT_TYPE_LEN_OFFSET, s.length());
}else {
int contentTypeLen = pushNGXString(h + NGX_HTTP_CLOJURE_HEADERSO_CONTENT_TYPE_OFFSET, s, DEFAULT_ENCODING, pool);
//be friendly to gzip module
pushNGXSizet(h + NGX_HTTP_CLOJURE_HEADERSO_CONTENT_TYPE_LEN_OFFSET, contentTypeLen);
}
}
@Override
public void clear(long h) {
pushNGXString(h + NGX_HTTP_CLOJURE_HEADERSO_CONTENT_TYPE_OFFSET, null, DEFAULT_ENCODING, 0);
pushNGXSizet(h + NGX_HTTP_CLOJURE_HEADERSO_CONTENT_TYPE_LEN_OFFSET, 0);
}
}