PageRenderTime 21ms CodeModel.GetById 13ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/lib/src/org/apache/http/impl/conn/Wire.java

http://github.com/onedanshow/Screen-Courter
Java | 161 lines | 110 code | 20 blank | 31 comment | 28 complexity | a545d42730ab00b4c89a44b307436446 MD5 | raw file
Possible License(s): GPL-3.0
  1/*
  2 * ====================================================================
  3 *
  4 *  Licensed to the Apache Software Foundation (ASF) under one or more
  5 *  contributor license agreements.  See the NOTICE file distributed with
  6 *  this work for additional information regarding copyright ownership.
  7 *  The ASF licenses this file to You under the Apache License, Version 2.0
  8 *  (the "License"); you may not use this file except in compliance with
  9 *  the License.  You may obtain a copy of the License at
 10 *
 11 *      http://www.apache.org/licenses/LICENSE-2.0
 12 *
 13 *  Unless required by applicable law or agreed to in writing, software
 14 *  distributed under the License is distributed on an "AS IS" BASIS,
 15 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 16 *  See the License for the specific language governing permissions and
 17 *  limitations under the License.
 18 * ====================================================================
 19 *
 20 * This software consists of voluntary contributions made by many
 21 * individuals on behalf of the Apache Software Foundation.  For more
 22 * information on the Apache Software Foundation, please see
 23 * <http://www.apache.org/>.
 24 *
 25 */
 26
 27package org.apache.http.impl.conn;
 28
 29import java.io.IOException;
 30import java.io.InputStream;
 31import java.io.ByteArrayInputStream;
 32
 33import org.apache.http.annotation.Immutable;
 34
 35import org.apache.commons.logging.Log;
 36
 37/**
 38 * Logs data to the wire LOG.
 39 *
 40 *
 41 * @since 4.0
 42 */
 43@Immutable
 44public class Wire {
 45
 46    private final Log log;
 47
 48    public Wire(Log log) {
 49        this.log = log;
 50    }
 51
 52    private void wire(String header, InputStream instream)
 53      throws IOException {
 54        StringBuilder buffer = new StringBuilder();
 55        int ch;
 56        while ((ch = instream.read()) != -1) {
 57            if (ch == 13) {
 58                buffer.append("[\\r]");
 59            } else if (ch == 10) {
 60                    buffer.append("[\\n]\"");
 61                    buffer.insert(0, "\"");
 62                    buffer.insert(0, header);
 63                    log.debug(buffer.toString());
 64                    buffer.setLength(0);
 65            } else if ((ch < 32) || (ch > 127)) {
 66                buffer.append("[0x");
 67                buffer.append(Integer.toHexString(ch));
 68                buffer.append("]");
 69            } else {
 70                buffer.append((char) ch);
 71            }
 72        }
 73        if (buffer.length() > 0) {
 74            buffer.append('\"');
 75            buffer.insert(0, '\"');
 76            buffer.insert(0, header);
 77            log.debug(buffer.toString());
 78        }
 79    }
 80
 81
 82    public boolean enabled() {
 83        return log.isDebugEnabled();
 84    }
 85
 86    public void output(InputStream outstream)
 87      throws IOException {
 88        if (outstream == null) {
 89            throw new IllegalArgumentException("Output may not be null");
 90        }
 91        wire(">> ", outstream);
 92    }
 93
 94    public void input(InputStream instream)
 95      throws IOException {
 96        if (instream == null) {
 97            throw new IllegalArgumentException("Input may not be null");
 98        }
 99        wire("<< ", instream);
100    }
101
102    public void output(byte[] b, int off, int len)
103      throws IOException {
104        if (b == null) {
105            throw new IllegalArgumentException("Output may not be null");
106        }
107        wire(">> ", new ByteArrayInputStream(b, off, len));
108    }
109
110    public void input(byte[] b, int off, int len)
111      throws IOException {
112        if (b == null) {
113            throw new IllegalArgumentException("Input may not be null");
114        }
115        wire("<< ", new ByteArrayInputStream(b, off, len));
116    }
117
118    public void output(byte[] b)
119      throws IOException {
120        if (b == null) {
121            throw new IllegalArgumentException("Output may not be null");
122        }
123        wire(">> ", new ByteArrayInputStream(b));
124    }
125
126    public void input(byte[] b)
127      throws IOException {
128        if (b == null) {
129            throw new IllegalArgumentException("Input may not be null");
130        }
131        wire("<< ", new ByteArrayInputStream(b));
132    }
133
134    public void output(int b)
135      throws IOException {
136        output(new byte[] {(byte) b});
137    }
138
139    public void input(int b)
140      throws IOException {
141        input(new byte[] {(byte) b});
142    }
143
144    @Deprecated
145    public void output(final String s)
146      throws IOException {
147        if (s == null) {
148            throw new IllegalArgumentException("Output may not be null");
149        }
150        output(s.getBytes());
151    }
152
153    @Deprecated
154    public void input(final String s)
155      throws IOException {
156        if (s == null) {
157            throw new IllegalArgumentException("Input may not be null");
158        }
159        input(s.getBytes());
160    }
161}