From d7fa2022890e9347933591805f49d7f76fd3e141 Mon Sep 17 00:00:00 2001 From: evanweaver Date: Fri, 26 Oct 2007 02:59:45 +0000 Subject: except for all that java business git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@742 19e92222-5c0b-0410-8929-a290d50e31e9 --- ext/http11_java/org/jruby/mongrel/Http11.java | 268 -------------------------- 1 file changed, 268 deletions(-) delete mode 100644 ext/http11_java/org/jruby/mongrel/Http11.java (limited to 'ext/http11_java/org/jruby/mongrel/Http11.java') diff --git a/ext/http11_java/org/jruby/mongrel/Http11.java b/ext/http11_java/org/jruby/mongrel/Http11.java deleted file mode 100644 index a73c79b..0000000 --- a/ext/http11_java/org/jruby/mongrel/Http11.java +++ /dev/null @@ -1,268 +0,0 @@ -/***** BEGIN LICENSE BLOCK ***** - * Version: CPL 1.0/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Common Public - * License Version 1.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.eclipse.org/legal/cpl-v10.html - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * Copyright (C) 2007 Ola Bini - * - * Alternatively, the contents of this file may be used under the terms of - * either of the GNU General Public License Version 2 or later (the "GPL"), - * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the CPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the CPL, the GPL or the LGPL. - ***** END LICENSE BLOCK *****/ -package org.jruby.mongrel; - -import org.jruby.Ruby; -import org.jruby.RubyClass; -import org.jruby.RubyHash; -import org.jruby.RubyModule; -import org.jruby.RubyNumeric; -import org.jruby.RubyObject; -import org.jruby.RubyString; - -import org.jruby.runtime.CallbackFactory; -import org.jruby.runtime.ObjectAllocator; -import org.jruby.runtime.builtin.IRubyObject; - -import org.jruby.exceptions.RaiseException; - -import org.jruby.util.ByteList; - -/** - * @author Ola Bini - */ -public class Http11 extends RubyObject { - public final static int MAX_FIELD_NAME_LENGTH = 256; - public final static String MAX_FIELD_NAME_LENGTH_ERR = "HTTP element FIELD_NAME is longer than the 256 allowed length."; - public final static int MAX_FIELD_VALUE_LENGTH = 80 * 1024; - public final static String MAX_FIELD_VALUE_LENGTH_ERR = "HTTP element FIELD_VALUE is longer than the 81920 allowed length."; - public final static int MAX_REQUEST_URI_LENGTH = 1024 * 12; - public final static String MAX_REQUEST_URI_LENGTH_ERR = "HTTP element REQUEST_URI is longer than the 12288 allowed length."; - public final static int MAX_FRAGMENT_LENGTH = 1024; - public final static String MAX_FRAGMENT_LENGTH_ERR = "HTTP element REQUEST_PATH is longer than the 1024 allowed length."; - public final static int MAX_REQUEST_PATH_LENGTH = 1024; - public final static String MAX_REQUEST_PATH_LENGTH_ERR = "HTTP element REQUEST_PATH is longer than the 1024 allowed length."; - public final static int MAX_QUERY_STRING_LENGTH = 1024 * 10; - public final static String MAX_QUERY_STRING_LENGTH_ERR = "HTTP element QUERY_STRING is longer than the 10240 allowed length."; - public final static int MAX_HEADER_LENGTH = 1024 * (80 + 32); - public final static String MAX_HEADER_LENGTH_ERR = "HTTP element HEADER is longer than the 114688 allowed length."; - - - private static ObjectAllocator ALLOCATOR = new ObjectAllocator() { - public IRubyObject allocate(Ruby runtime, RubyClass klass) { - return new Http11(runtime, klass); - } - }; - - public static void createHttp11(Ruby runtime) { - RubyModule mMongrel = runtime.defineModule("Mongrel"); - mMongrel.defineClassUnder("HttpParserError",runtime.getClass("IOError"),runtime.getClass("IOError").getAllocator()); - - CallbackFactory cf = runtime.callbackFactory(Http11.class); - - RubyClass cHttpParser = mMongrel.defineClassUnder("HttpParser",runtime.getObject(),ALLOCATOR); - cHttpParser.defineFastMethod("initialize",cf.getFastMethod("initialize")); - cHttpParser.defineFastMethod("reset",cf.getFastMethod("reset")); - cHttpParser.defineFastMethod("finish",cf.getFastMethod("finish")); - cHttpParser.defineFastMethod("execute",cf.getFastMethod("execute", IRubyObject.class, IRubyObject.class, IRubyObject.class)); - cHttpParser.defineFastMethod("error?",cf.getFastMethod("has_error")); - cHttpParser.defineFastMethod("finished?",cf.getFastMethod("is_finished")); - cHttpParser.defineFastMethod("nread",cf.getFastMethod("nread")); - - URIClassifier.createURIClassifier(runtime, mMongrel); - } - - private Ruby runtime; - private RubyClass eHttpParserError; - private Http11Parser hp; - - public Http11(Ruby runtime, RubyClass clazz) { - super(runtime,clazz); - this.runtime = runtime; - this.eHttpParserError = (RubyClass)runtime.getModule("Mongrel").getConstant("HttpParserError"); - this.hp = new Http11Parser(); - this.hp.parser.http_field = http_field; - this.hp.parser.request_method = request_method; - this.hp.parser.request_uri = request_uri; - this.hp.parser.fragment = fragment; - this.hp.parser.request_path = request_path; - this.hp.parser.query_string = query_string; - this.hp.parser.http_version = http_version; - this.hp.parser.header_done = header_done; - this.hp.parser.init(); - } - - public void validateMaxLength(int len, int max, String msg) { - if(len>max) { - throw new RaiseException(runtime, eHttpParserError, msg, true); - } - } - - private Http11Parser.FieldCB http_field = new Http11Parser.FieldCB() { - public void call(Object data, int field, int flen, int value, int vlen) { - RubyHash req = (RubyHash)data; - RubyString v,f; - validateMaxLength(flen, MAX_FIELD_NAME_LENGTH, MAX_FIELD_NAME_LENGTH_ERR); - validateMaxLength(vlen, MAX_FIELD_VALUE_LENGTH, MAX_FIELD_VALUE_LENGTH_ERR); - - v = RubyString.newString(runtime, new ByteList(Http11.this.hp.parser.buffer,value,vlen)); - f = RubyString.newString(runtime, "HTTP_"); - ByteList b = new ByteList(Http11.this.hp.parser.buffer,field,flen); - for(int i=0,j=b.realSize;i= d.realSize) { - throw new RaiseException(runtime, eHttpParserError, "Requested start is after data buffer end.", true); - } else { - this.hp.parser.data = req_hash; - this.hp.execute(d,from); - validateMaxLength(this.hp.parser.nread,MAX_HEADER_LENGTH, MAX_HEADER_LENGTH_ERR); - if(this.hp.has_error()) { - throw new RaiseException(runtime, eHttpParserError, "Invalid HTTP format, parsing fails.", true); - } else { - return runtime.newFixnum(this.hp.parser.nread); - } - } - } - - public IRubyObject has_error() { - return this.hp.has_error() ? runtime.getTrue() : runtime.getFalse(); - } - - public IRubyObject is_finished() { - return this.hp.is_finished() ? runtime.getTrue() : runtime.getFalse(); - } - - public IRubyObject nread() { - return runtime.newFixnum(this.hp.parser.nread); - } -}// Http11 -- cgit v1.2.3-24-ge0c7