Package ch.aonyx.broker.ib.api.util

Source Code of ch.aonyx.broker.ib.api.util.InputStreamUtils

/*
* Copyright (C) 2012 Aonyx
*
* 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 ch.aonyx.broker.ib.api.util;

import static ch.aonyx.broker.ib.api.ClientMessageCode.INPUT_OUTPUT_STREAM_EXCEPTION;

import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.lang3.text.StrBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ch.aonyx.broker.ib.api.io.IOStreamException;

/**
* @author Christophe Marcourt
* @since 1.0.0
*/
public abstract class InputStreamUtils {

    private static final Logger LOGGER = LoggerFactory.getLogger(InputStreamUtils.class);
    private static final StrBuilder BUILDER = new StrBuilder();

    public static final int readInt(final InputStream inputStream) {
        final String string = readString(inputStream);
        return string == null ? 0 : Integer.parseInt(string);
    }

    public static final String readString(final InputStream inputStream) {
        BUILDER.clear();
        while (true) {
            final byte c = readByte(inputStream);
            if (c == 0) {
                break;
            }
            BUILDER.append((char) c);
        }
        final String s = BUILDER.toString();
        return s.length() == 0 ? null : s;
    }

    private static byte readByte(final InputStream inputStream) {
        try {
            final byte c = (byte) inputStream.read();
            return c;
        } catch (final IOException e) {
            final String detailedMessage = "problem reading byte";
            LOGGER.error("{}: ", detailedMessage, e);
            throw new IOStreamException(INPUT_OUTPUT_STREAM_EXCEPTION, detailedMessage, e);
        }
    }

    public static final boolean readBoolean(final InputStream inputStream) {
        final String string = readString(inputStream);
        return string == null ? false : (Integer.parseInt(string) != 0);
    }

    public static final long readLong(final InputStream inputStream) {
        final String string = readString(inputStream);
        return string == null ? 0 : Long.parseLong(string);
    }

    public static final double readDouble(final InputStream inputStream) {
        final String string = readString(inputStream);
        return string == null ? 0 : Double.parseDouble(string);
    }

    public static final int readIntMax(final InputStream inputStream) {
        final String string = readString(inputStream);
        return string == null ? Integer.MAX_VALUE : Integer.parseInt(string);
    }

    public static final double readDoubleMax(final InputStream inputStream) {
        final String string = readString(inputStream);
        return string == null ? Double.MAX_VALUE : Double.parseDouble(string);
    }
}
TOP

Related Classes of ch.aonyx.broker.ib.api.util.InputStreamUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.