]> git.ozlabs.org Git - ccan-lca-2011.git/blobdiff - ccan/oserver/oserver.h
Add slides images.
[ccan-lca-2011.git] / ccan / oserver / oserver.h
index a465b2d3bbba175d6382ebe60c2b795682eab77f..597d7ee97887ab9346f99843c5dc41115df61cd3 100644 (file)
@@ -4,12 +4,12 @@
 #include <ccan/tevent/tevent.h>
 
 /**
- * oserver_setup - set up an oserver
+ * oserver_restore - restore an oserver from dump
  * @ev: tevent context to use.
- * @port: port to use (usually OSERVER_PORT)
+ * @dumpfile: file to with saved state.
  *
- * Opens a socket and binds it to @port, then sets it up to listen
- * for connections.  talloc_free() the pointer returned to shut it down
+ * Tries to restore an oserver from the dump file.  Returns NULL on failure.
+ * talloc_free() the pointer returned to shut it down
  * (its parent is the tevent_context).
  *
  * Example:
  *     struct tevent_context *ev;
  *
  *     ev = tevent_context_init(NULL);
- *     oserver = oserver_setup(ev, OSERVER_PORT);
- *     if (!oserver)
- *             err(1, "Failed to set up server");
+ *     oserver = oserver_restore(ev, "oserver.dump");
+ *     if (oserver)
+ *             printf("Restored oserver!");
+ */
+struct oserver *oserver_restore(struct tevent_context *ev,
+                               const char *dumpfile);
+
+
+/**
+ * oserver_setup - set up an oserver
+ * @ev: tevent context to use.
+ * @port: port to use (usually OSERVER_PORT)
+ * @dumpfile: file to save state to on SIGHUP (if non-NULL).
+ * @argv: arguments to re-exec on SIGHUP (if non-NULL).
+ *
+ * Opens a socket and binds it to @port, then sets it up to listen
+ * for connections.  talloc_free() the pointer returned to shut it down
+ * (its parent is the tevent_context).
  *
+ * Example:
+ *     ...
+ *     else {
+ *             oserver = oserver_setup(ev, OSERVER_PORT, "oserver.dump", argv);
+ *             if (!oserver)
+ *                     err(1, "Failed to set up server");
+ *     }
  *     while (tevent_loop_wait(ev) == 0);
  *     err(1, "Event loop failed");
  */
-struct oserver *oserver_setup(struct tevent_context *ev, unsigned short port);
+struct oserver *oserver_setup(struct tevent_context *ev, unsigned short port,
+                             const char *dumpfile, char *argv[]);
 
 #define OSERVER_PORT 2828
 #endif /* CCAN_OSERVER_H */