X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Foserver%2Foserver.h;h=bf2b0ead5b7c362f09f2688ea89ab82bb492fb14;hb=ae1b22bc94d77de4c204769cce4b15456d46f771;hp=fa214b4c951db53f78a8d0ecba418e03a3b02856;hpb=b3458dbe49ae218f183affcb239433d66839e2c9;p=ccan-lca-2011.git diff --git a/ccan/oserver/oserver.h b/ccan/oserver/oserver.h index fa214b4..bf2b0ea 100644 --- a/ccan/oserver/oserver.h +++ b/ccan/oserver/oserver.h @@ -2,8 +2,42 @@ #define CCAN_OSERVER_H #include -void NORETURN oserver_serve(int fd); +/** + * oserver_setup - get a listening filedescriptor for an oserver + * + * Opens a socket and binds it to OSERVER_PORT, then sets it up to listen + * for connections and returns it. + * + * Example: + * int serverfd; + * + * serverfd = oserver_setup(); + * if (serverfd < 0) + * err(1, "Failed to set up server"); + */ int oserver_setup(void); +/** + * oserver_serve - serve an oserver client via a file descriptor + * @fd: the file descriptor (usually a connected socket) + * + * This does not return, but exits with status 0 if served OK. + * + * Example: + * #include + * #include + * ... + * int clientfd; + * ... + * clientfd = accept(serverfd, NULL, NULL); + * if (clientfd < 0) + * err(1, "Accepting connection from client"); + * if (fork() == 0) + * oserver_serve(clientfd); + * else + * close(clientfd); + */ +void NORETURN oserver_serve(int fd); + #define OSERVER_PORT 2727 #endif /* CCAN_OSERVER_H */