#include "async.h"


void
http_read(int fd)
{
  strbuf resp;

  int n = resp.tosuio()->input(fd);
  if(n < 0)
    fatal << "read\n";

  if(n == 0) {
    fdcb(fd, selread, 0);
    close(fd);
    exit(0);
  };

  warn << resp;
}

void
http_write(int fd, strbuf req)
{
  int n = req.tosuio()->output(fd);

  if(n < 0)
    fatal << "write\n";

  // still stuff to write: don't disable writability callback
  if(req.tosuio()->resid())
    return;

  // done writing request.
  fdcb(fd, selwrite, 0);
  fdcb(fd, selread, wrap(http_read, fd));
}

void
connected(int fd)
{
  if(fd < 0)
    fatal << "connect\n";

  strbuf req("GET / HTTP/1.0\r\n\r\n");
  fdcb(fd, selwrite, wrap(http_write, fd, req));
}
  

int
main(int argc, char *argv[]) 
{
  async_init();
  if(argc < 2)
    fatal << "usage: fdcb host\n";

  tcpconnect(argv[1], 80, wrap(connected));
  amain();
}
