103928aee4356845252ac6b662d5c72c29903813eJake Slack// 203928aee4356845252ac6b662d5c72c29903813eJake Slack// ======================================================================== 303928aee4356845252ac6b662d5c72c29903813eJake Slack// Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd. 403928aee4356845252ac6b662d5c72c29903813eJake Slack// ------------------------------------------------------------------------ 503928aee4356845252ac6b662d5c72c29903813eJake Slack// All rights reserved. This program and the accompanying materials 603928aee4356845252ac6b662d5c72c29903813eJake Slack// are made available under the terms of the Eclipse Public License v1.0 703928aee4356845252ac6b662d5c72c29903813eJake Slack// and Apache License v2.0 which accompanies this distribution. 803928aee4356845252ac6b662d5c72c29903813eJake Slack// 903928aee4356845252ac6b662d5c72c29903813eJake Slack// The Eclipse Public License is available at 1003928aee4356845252ac6b662d5c72c29903813eJake Slack// http://www.eclipse.org/legal/epl-v10.html 1103928aee4356845252ac6b662d5c72c29903813eJake Slack// 1203928aee4356845252ac6b662d5c72c29903813eJake Slack// The Apache License v2.0 is available at 1303928aee4356845252ac6b662d5c72c29903813eJake Slack// http://www.opensource.org/licenses/apache2.0.php 1403928aee4356845252ac6b662d5c72c29903813eJake Slack// 1503928aee4356845252ac6b662d5c72c29903813eJake Slack// You may elect to redistribute this code under either of these licenses. 1603928aee4356845252ac6b662d5c72c29903813eJake Slack// ======================================================================== 1703928aee4356845252ac6b662d5c72c29903813eJake Slack// 1803928aee4356845252ac6b662d5c72c29903813eJake Slack 1903928aee4356845252ac6b662d5c72c29903813eJake Slackpackage org.eclipse.jetty.http; 2003928aee4356845252ac6b662d5c72c29903813eJake Slack 2103928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.io.Buffer; 2203928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.io.BufferCache; 2303928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.io.ByteArrayBuffer; 2403928aee4356845252ac6b662d5c72c29903813eJake Slack 2503928aee4356845252ac6b662d5c72c29903813eJake Slack/** 2603928aee4356845252ac6b662d5c72c29903813eJake Slack * Cached HTTP Header values. 2703928aee4356845252ac6b662d5c72c29903813eJake Slack * This class caches the conversion of common HTTP Header values to and from {@link ByteArrayBuffer} instances. 2803928aee4356845252ac6b662d5c72c29903813eJake Slack * The resource "/org/eclipse/jetty/useragents" is checked for a list of common user agents, so that repeated 2903928aee4356845252ac6b662d5c72c29903813eJake Slack * creation of strings for these agents can be avoided. 3003928aee4356845252ac6b662d5c72c29903813eJake Slack * 3103928aee4356845252ac6b662d5c72c29903813eJake Slack * 3203928aee4356845252ac6b662d5c72c29903813eJake Slack */ 3303928aee4356845252ac6b662d5c72c29903813eJake Slackpublic class HttpHeaderValues extends BufferCache 3403928aee4356845252ac6b662d5c72c29903813eJake Slack{ 3503928aee4356845252ac6b662d5c72c29903813eJake Slack public final static String 3603928aee4356845252ac6b662d5c72c29903813eJake Slack CLOSE="close", 3703928aee4356845252ac6b662d5c72c29903813eJake Slack CHUNKED="chunked", 3803928aee4356845252ac6b662d5c72c29903813eJake Slack GZIP="gzip", 3903928aee4356845252ac6b662d5c72c29903813eJake Slack IDENTITY="identity", 4003928aee4356845252ac6b662d5c72c29903813eJake Slack KEEP_ALIVE="keep-alive", 4103928aee4356845252ac6b662d5c72c29903813eJake Slack CONTINUE="100-continue", 4203928aee4356845252ac6b662d5c72c29903813eJake Slack PROCESSING="102-processing", 4303928aee4356845252ac6b662d5c72c29903813eJake Slack TE="TE", 4403928aee4356845252ac6b662d5c72c29903813eJake Slack BYTES="bytes", 4503928aee4356845252ac6b662d5c72c29903813eJake Slack NO_CACHE="no-cache", 4603928aee4356845252ac6b662d5c72c29903813eJake Slack UPGRADE="Upgrade"; 4703928aee4356845252ac6b662d5c72c29903813eJake Slack 4803928aee4356845252ac6b662d5c72c29903813eJake Slack public final static int 4903928aee4356845252ac6b662d5c72c29903813eJake Slack CLOSE_ORDINAL=1, 5003928aee4356845252ac6b662d5c72c29903813eJake Slack CHUNKED_ORDINAL=2, 5103928aee4356845252ac6b662d5c72c29903813eJake Slack GZIP_ORDINAL=3, 5203928aee4356845252ac6b662d5c72c29903813eJake Slack IDENTITY_ORDINAL=4, 5303928aee4356845252ac6b662d5c72c29903813eJake Slack KEEP_ALIVE_ORDINAL=5, 5403928aee4356845252ac6b662d5c72c29903813eJake Slack CONTINUE_ORDINAL=6, 5503928aee4356845252ac6b662d5c72c29903813eJake Slack PROCESSING_ORDINAL=7, 5603928aee4356845252ac6b662d5c72c29903813eJake Slack TE_ORDINAL=8, 5703928aee4356845252ac6b662d5c72c29903813eJake Slack BYTES_ORDINAL=9, 5803928aee4356845252ac6b662d5c72c29903813eJake Slack NO_CACHE_ORDINAL=10, 5903928aee4356845252ac6b662d5c72c29903813eJake Slack UPGRADE_ORDINAL=11; 6003928aee4356845252ac6b662d5c72c29903813eJake Slack 6103928aee4356845252ac6b662d5c72c29903813eJake Slack public final static HttpHeaderValues CACHE= new HttpHeaderValues(); 6203928aee4356845252ac6b662d5c72c29903813eJake Slack 6303928aee4356845252ac6b662d5c72c29903813eJake Slack public final static Buffer 6403928aee4356845252ac6b662d5c72c29903813eJake Slack CLOSE_BUFFER=CACHE.add(CLOSE,CLOSE_ORDINAL), 6503928aee4356845252ac6b662d5c72c29903813eJake Slack CHUNKED_BUFFER=CACHE.add(CHUNKED,CHUNKED_ORDINAL), 6603928aee4356845252ac6b662d5c72c29903813eJake Slack GZIP_BUFFER=CACHE.add(GZIP,GZIP_ORDINAL), 6703928aee4356845252ac6b662d5c72c29903813eJake Slack IDENTITY_BUFFER=CACHE.add(IDENTITY,IDENTITY_ORDINAL), 6803928aee4356845252ac6b662d5c72c29903813eJake Slack KEEP_ALIVE_BUFFER=CACHE.add(KEEP_ALIVE,KEEP_ALIVE_ORDINAL), 6903928aee4356845252ac6b662d5c72c29903813eJake Slack CONTINUE_BUFFER=CACHE.add(CONTINUE, CONTINUE_ORDINAL), 7003928aee4356845252ac6b662d5c72c29903813eJake Slack PROCESSING_BUFFER=CACHE.add(PROCESSING, PROCESSING_ORDINAL), 7103928aee4356845252ac6b662d5c72c29903813eJake Slack TE_BUFFER=CACHE.add(TE,TE_ORDINAL), 7203928aee4356845252ac6b662d5c72c29903813eJake Slack BYTES_BUFFER=CACHE.add(BYTES,BYTES_ORDINAL), 7303928aee4356845252ac6b662d5c72c29903813eJake Slack NO_CACHE_BUFFER=CACHE.add(NO_CACHE,NO_CACHE_ORDINAL), 7403928aee4356845252ac6b662d5c72c29903813eJake Slack UPGRADE_BUFFER=CACHE.add(UPGRADE,UPGRADE_ORDINAL); 7503928aee4356845252ac6b662d5c72c29903813eJake Slack 7603928aee4356845252ac6b662d5c72c29903813eJake Slack 7703928aee4356845252ac6b662d5c72c29903813eJake Slack public static boolean hasKnownValues(int httpHeaderOrdinal) 7803928aee4356845252ac6b662d5c72c29903813eJake Slack { 7903928aee4356845252ac6b662d5c72c29903813eJake Slack switch(httpHeaderOrdinal) 8003928aee4356845252ac6b662d5c72c29903813eJake Slack { 8103928aee4356845252ac6b662d5c72c29903813eJake Slack case HttpHeaders.CONNECTION_ORDINAL: 8203928aee4356845252ac6b662d5c72c29903813eJake Slack case HttpHeaders.TRANSFER_ENCODING_ORDINAL: 8303928aee4356845252ac6b662d5c72c29903813eJake Slack case HttpHeaders.CONTENT_ENCODING_ORDINAL: 8403928aee4356845252ac6b662d5c72c29903813eJake Slack return true; 8503928aee4356845252ac6b662d5c72c29903813eJake Slack } 8603928aee4356845252ac6b662d5c72c29903813eJake Slack return false; 8703928aee4356845252ac6b662d5c72c29903813eJake Slack } 8803928aee4356845252ac6b662d5c72c29903813eJake Slack} 89