import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import se.lth.control.labcomm.LabCommEncoderChannel;

public class Encoder 
{

  LabCommEncoderChannel encoder;

  public Encoder(OutputStream out) 
    throws Exception 
  {
    encoder = new LabCommEncoderChannel(out);
    TwoInts.register(encoder);
    IntString.register(encoder);
  }

  public void doEncode() throws java.io.IOException {
    TwoInts x = new TwoInts();
    x.a = 17;
    x.b = 42;

    IntString y = new IntString();
    y.x = 37;
    y.s = "Testing, testing";

    System.out.println("Encoding TwoInts, a="+x.a+", b="+x.b);
    TwoInts.encode(encoder, x);

    System.out.println("Encoding IntString, x="+y.x+", s="+y.s);
    IntString.encode(encoder, y);
  }


  public static void main(String[] arg) throws Exception {
    FileOutputStream fos = new FileOutputStream(new File(arg[0]));
    Encoder example = new Encoder(fos);
    example.doEncode();
    fos.close();
  }

}