// Path: app/src/main/java/org/hexpresso/elm327/commands/Command.java
// public interface Command {
// 
//     void execute(InputStream in, OutputStream out) throws IOException, InterruptedException;
// 
//     Response getResponse();
// }


import org.hexpresso.elm327.commands.Command;
import java.util.concurrent.atomic.AtomicLong;

package org.hexpresso.elm327.io;



/**
 * Created by Pierre-Etienne Messier <pierre.etienne.messier@gmail.com> on 2015-10-28.
 */
public class Message {

    public enum State {
        READY,
        EXECUTING,
        FINISHED,

        // Errors
        ERROR_EXECUTION,
        ERROR_NOT_SUPPORTED,
        ERROR_QUEUE,
        ERROR_TIMEOUT
    }

    private static AtomicLong messageIdentifier = new AtomicLong(0L);

    private final Command mCommand;
    private final long  mIdentifier;

// Path: app/src/main/java/org/hexpresso/elm327/commands/Command.java
// public interface Command {
// 
//     void execute(InputStream in, OutputStream out) throws IOException, InterruptedException;
// 
//     Response getResponse();
// }


// Path: app/src/main/java/org/hexpresso/elm327/io/Message.java
import org.hexpresso.elm327.commands.Command;
import java.util.concurrent.atomic.AtomicLong;

package org.hexpresso.elm327.io;



/**
 * Created by Pierre-Etienne Messier <pierre.etienne.messier@gmail.com> on 2015-10-28.
 */
public class Message {

    public enum State {
        READY,
        EXECUTING,
        FINISHED,

        // Errors
        ERROR_EXECUTION,
        ERROR_NOT_SUPPORTED,
        ERROR_QUEUE,
        ERROR_TIMEOUT
    }

    private static AtomicLong messageIdentifier = new AtomicLong(0L);

    private final Command mCommand;
    private final long  mIdentifier;

    private State mState;
