 1Content-type: application/x-Unknown; charset=UTF8package nmc.common;

import java.io.IOException;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.lang.Exception;

public class DecerealizingFactory extends Object {

    public static Message parse(byte[] buf) throws IOException {
    	Message retval = null;
    	ByteArrayInputStream bis= new ByteArrayInputStream(buf);
    	DataInputStream dis = new DataInputStream(bis);
    	int msgType = dis.readInt();
    	switch (msgType) {
	case Message.ACK_REPLY:
    	    retval = (Message)new AckReply(dis);
    	    break;
	case Message.POLL_CMD:
	    retval = (Message)new PollCmd(dis);
	    break;
	case Message.POLLED_DATA_REPLY:
	    retval = (Message)new PolledDataReply(dis);
	    break;
	case Message.INITIALIZE_INSTRUMENT_CMD:
	    retval = (Message)new InitializeInstrumentCmd(dis);
	    break;
	case Message.INITIALIZE_INSTRUMENT_REPLY:
	    retval = (Message)new InitializeInstrumentReply(dis);
	    break;
        case Message.CONFIGURATION_CMD:
            retval = (Message)new ConfigurationCmd(dis);
            break;
        case Message.CONFIGURATION_REPLY:
            retval = (Message)new ConfigurationReply(dis);
            break;
        case Message.WAKEUP_CMD:
            retval = (Message)new WakeupCmd(dis);
            break;
        case Message.GET_ABSOLUTE_TIME_CMD:
            retval = (Message)new GetAbsoluteTimeCmd(dis);
            break;
        case Message.ABSOLUTE_TIME_REPLY:
            retval = (Message)new AbsoluteTimeReply(dis);
            break;
	default:
            int seqno = dis.readInt();
            throw new IOException("DecerealizationFactory:  bad msgType "
                                  + "(" 
                                  + msgType 
                                  + ") " 
                                  + "from message seqNo="
                                  + seqno);
    	}
    	return retval;
    }
}
