| #include "a.h" |
| |
| struct Pfd |
| { |
| int fd; |
| }; |
| |
| static Pfd* |
| httpconnect(char *host) |
| { |
| char buf[1024]; |
| Pfd *pfd; |
| int fd; |
| |
| snprint(buf, sizeof buf, "tcp!%s!http", host); |
| if((fd = dial(buf, nil, nil, nil)) < 0) |
| return nil; |
| pfd = emalloc(sizeof *pfd); |
| pfd->fd = fd; |
| return pfd; |
| } |
| |
| static void |
| httpclose(Pfd *pfd) |
| { |
| if(pfd == nil) |
| return; |
| close(pfd->fd); |
| free(pfd); |
| } |
| |
| static int |
| httpwrite(Pfd *pfd, void *v, int n) |
| { |
| return writen(pfd->fd, v, n); |
| } |
| |
| static int |
| httpread(Pfd *pfd, void *v, int n) |
| { |
| return read(pfd->fd, v, n); |
| } |
| |
| Protocol http = { |
| httpconnect, |
| httpread, |
| httpwrite, |
| httpclose, |
| }; |
| |