#include <stdio.h>
#include <rpc/xdr.h>
#include <unix.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/ioctl.h> // IO Control of socket.


#include "StatePacketSender.h"

int main(int argc, char **argv) {

  // Allocate XDR state buffer - allocate lots of extra
  unsigned int outBufSize = 10*sizeof(StatePacket);
  char *outBuf = (char *)malloc(outBufSize);

  XDR xdrStream;
  xdrmem_create(&xdrStream, outBuf, outBufSize, XDR_ENCODE); 

  fprintf(stderr, "TEST xdr_getpos()\n");
  int pos = xdr_getpos(&xdrStream);
  fprintf(stderr, "xdr_getpos() OK\n");

  fprintf(stderr, "TEST xdr_setpos()\n");
  if (!xdr_setpos(&xdrStream, 0)) {
    fprintf(stderr, "xdr_setpos() failed!\n");
  }
  else {
    fprintf(stderr, "xdr_setpos() OK\n");
  }

  StatePacket packet;
  bzero(&packet, sizeof(StatePacket));

  fprintf(stderr, "Now encode state packet to XDR\n");
  if (xdr_StatePacket(&xdrStream, &packet)) {
    fprintf(stderr, " Successfully encoded data to XDR\n");
  }
  else {
    fprintf(stderr, " ERROR while data to XDR\n");
  }

  return 0;
}
