TransientMap() { this.delegate = PersistentArrayMap.EMPTY.asTransient(); }
static public IPersistentMap create(Map other){ ITransientMap ret = EMPTY.asTransient(); for(Object o : other.entrySet()) { Map.Entry e = (Entry) o; ret = ret.assoc(e.getKey(), e.getValue()); } return ret.persistent(); }
static public IPersistentMap create(Map other){ ITransientMap ret = EMPTY.asTransient(); for(Object o : other.entrySet()) { Map.Entry e = (Entry) o; ret = ret.assoc(e.getKey(), e.getValue()); } return ret.persistent(); }
public IPersistentMap invoke(IPersistentMap req) { Object resp = fn.invoke(req); if (resp instanceof IPersistentMap) { return (IPersistentMap) resp; } else { return PersistentArrayMap.EMPTY.asTransient() .assoc(STATUS, 200) .assoc(BODY_DATA, resp) .assoc(REQ_HEADERS, PersistentArrayMap.EMPTY) .persistent(); } }
public static IPersistentMap resp(long status, Object...args) { ITransientMap rslt = PersistentArrayMap.EMPTY.asTransient() .assoc(RingProtocol.STATUS, status); ITransientMap headers = PersistentArrayMap.EMPTY.asTransient(); for (int i = 1; i < args.length; i+=2) { headers = headers.assoc(args[i-1].toString().toLowerCase(), args[i]); } rslt = rslt.assoc(RingProtocol.REQ_HEADERS, headers.persistent()); if ((args.length % 2) != 0) { rslt = rslt.assoc(RingProtocol.BODY_DATA, args[args.length-1]); } return rslt.persistent(); }
@Override public RingHandler request(SelectionKey key, String httpVersion, HttpMethod method, String uri, String query) { NetCtx ctx = NetCtx.fromKey(key); request = PersistentArrayMap.EMPTY.asTransient() .assoc(SERVER_PORT, ctx.getServerPort()) .assoc(SERVER_NAME, ctx.getServerName()) .assoc(REMOTE_ADDR, ctx.getRemoteAddr()) .assoc(PROTOCOL, httpVersion) .assoc(URI, uri) .assoc(QUERY_STRING, query) .assoc(REQUEST_METHOD, getMethod(method)) .assoc(SCHEME, ctx.getTlsContext() != null ? HTTPS : HTTP); headers = PersistentArrayMap.EMPTY.asTransient(); // TODO SSL_CLIENT_CERT return this; }