view src/main/java/alice/datasegment/ReceiveData.java @ 503:79d5b317b2b6 dispose

remove unused method
author sugi
date Thu, 18 Dec 2014 17:28:45 +0900
parents 7ef0ebb40c9b
children 145c425db88d
line wrap: on
line source

package alice.datasegment;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.DataFormatException;
import java.util.zip.Inflater;
import java.util.zip.InflaterOutputStream;

import org.msgpack.type.Value;

import alice.codesegment.SingletonMessage;

public class ReceiveData {
    private Object val;

    // both flag have to be true or false except DataSegment is byteArray;
    private boolean compressed = false;
    private boolean serialized = false;
    private boolean byteArray = false;

    public long time;
    public boolean setTime = false;
    public int depth = 1;

    public ReceiveData(Object obj, boolean cFlag, boolean sFlag){
        val = obj;
        compressed = cFlag;
        serialized = sFlag;
    }

    public ReceiveData(byte[] obj, boolean cFlag, boolean sFlag){
        val = obj;
        byteArray = true;
        compressed = cFlag;
        serialized = sFlag;
    }

    public boolean isByteArray(){
        return byteArray;
    }

    public boolean compressed(){
        return compressed;
    }

    public boolean serialized(){
        return serialized;
    }

    public Object getObj(){
        return val;
    }

    public String asString(){
        if (serialized){
            return asClass(String.class);
        } else {
            return (String) val;
        }
    }

    public int asInteger(){
        if (serialized){
            return asClass(Integer.class);
        } else {
            return (Integer) val;
        }
    }

    public Float asFloat(){
        if (serialized){
            return asClass(Float.class);
        } else {
            return (Float) val;
        }
    }

    public Value getVal(){
        if (serialized){
            return asClass(Value.class);
        } else {
            try {
                return SingletonMessage.getInstance().unconvert(val);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    }

    @SuppressWarnings("unchecked")
    public <T> T asClass(Class<T> clazz) {
        try {
            if (!byteArray) {
                return (T) val;
            }
            byte[] b = null;
            if (compressed) {
                b = unzip((byte[]) val);
            } else {
                b = (byte[]) val;
            }

            if (serialized) {
                return SingletonMessage.getInstance().read(b, clazz);
            } else {
                return (T) b;
            }
        } catch (IOException | DataFormatException e) {
            e.printStackTrace();
            return null;
        }
    }

    public byte[] unzip(byte[] input) throws IOException, DataFormatException{
        Inflater inflater = new Inflater();
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        InflaterOutputStream ios = new InflaterOutputStream(os, inflater);
        ios.write(input);
        ios.finish();
        return os.toByteArray();
    }

}