|
What this is
Other links
The source code/* * Copyright 1999,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.coyote.http11; import org.apache.tomcat.util.buf.MessageBytes; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.http.MimeHeaders; import org.apache.coyote.ActionCode; import org.apache.coyote.Adapter; import org.apache.coyote.Request; import org.apache.coyote.Response; /** * Adapter which will return random responses using pipelining, which means it * will never try to generate bogus responses. * * @author Remy Maucherat */ public class RandomAdapter implements Adapter { public static final String CRLF = "\r\n"; public static final byte[] b = "0123456789\r\n".getBytes(); public static final ByteChunk bc = new ByteChunk(); /** * Service method, which dumps the request to the console. */ public void service(Request req, Response res) throws Exception { double rand = Math.random(); int n = (int) Math.round(10 * rand); // Temp variables byte[] buf = null; int nRead = 0; StringBuffer sbuf = new StringBuffer(); MimeHeaders headers = req.getMimeHeaders(); int size = headers.size(); switch (n) { case 0: // 0) Do nothing System.out.println("Response 0"); break; case 1: // 1) Set content length, and write the appropriate content System.out.println("Response 1"); res.setContentLength(b.length); bc.setBytes(b, 0, b.length); res.doWrite(bc); break; case 2: // 2) Read the request data, and print out the number of bytes // read System.out.println("Response 2"); while (nRead >= 0) { nRead = req.doRead(bc); buf = ("Read " + nRead + " bytes\r\n").getBytes(); bc.setBytes(buf, 0, buf.length); res.doWrite(bc); } break; case 3: // 3) Return 204 (no content), while reading once on input System.out.println("Response 3"); res.setStatus(204); nRead = req.doRead(bc); res.setHeader("Info", "Read " + nRead + " bytes"); break; case 4: // 4) Do a request dump System.out.println("Response 4"); sbuf.append("Request dump:"); sbuf.append(CRLF); sbuf.append(req.method()); sbuf.append(" "); sbuf.append(req.unparsedURI()); sbuf.append(" "); sbuf.append(req.protocol()); sbuf.append(CRLF); for (int i = 0; i < size; i++) { sbuf.append(headers.getName(i) + ": "); sbuf.append(headers.getValue(i).toString()); sbuf.append(CRLF); } sbuf.append("Request body:"); sbuf.append(CRLF); res.action(ActionCode.ACTION_ACK, null); ByteChunk bc2 = new ByteChunk(); byte[] b2 = sbuf.toString().getBytes(); bc2.setBytes(b2, 0, b2.length); res.doWrite(bc2); while (nRead >= 0) { nRead = req.doRead(bc2); if (nRead > 0) res.doWrite(bc2); } break; default: // Response not implemented yet System.out.println("Response " + n + " is not implemented yet"); } /* StringBuffer buf = new StringBuffer(); buf.append("Request dump:"); buf.append(CRLF); buf.append(req.method()); buf.append(" "); buf.append(req.unparsedURI()); buf.append(" "); buf.append(req.protocol()); buf.append(CRLF); MimeHeaders headers = req.getMimeHeaders(); int size = headers.size(); for (int i = 0; i < size; i++) { buf.append(headers.getName(i) + ": "); buf.append(headers.getValue(i).toString()); buf.append(CRLF); } buf.append("Request body:"); buf.append(CRLF); res.action(ActionCode.ACTION_ACK, null); ByteChunk bc = new ByteChunk(); byte[] b = buf.toString().getBytes(); bc.setBytes(b, 0, b.length); res.doWrite(bc); int nRead = 0; while (nRead >= 0) { nRead = req.doRead(bc); if (nRead > 0) res.doWrite(bc); } */ } } |
... this post is sponsored by my books ... | |
![]() #1 New Release! |
![]() FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.