]> git.ozlabs.org Git - ccan-lca-2011.git/blobdiff - ccan/oserver/_info
lca2011: dump, re-exec with --restore on restart.
[ccan-lca-2011.git] / ccan / oserver / _info
index 5dfc5f88fb27a001e1e9b68fb807cbbf9ff669e0..7bfaa3b129e6cbd101b9c9804d22ec903709fcd1 100644 (file)
@@ -8,10 +8,6 @@
  *
  * License: GPL
  *
- * Ccanlint:
- *     // hack to make valgrind show the error.  FIXME!
- *     tests_pass_valgrind  --child-silent-after-fork=no
- *
  * Example:
  *     #include <sys/types.h>
  *     #include <sys/socket.h>
  *     #include <err.h>
  *     #include <stdlib.h>
  *
+ *     #define STATE_FILE "/var/run/oserver/dump"
+ *
  *     int main(int argc, char *argv[])
  *     {
  *             struct tevent_context *ev = tevent_context_init(NULL);
  *             unsigned int port = OSERVER_PORT;
+ *             bool restore = false;
+ *             char **restore_argv;
+ *
+ *             // Save args before opt_parse mangles them.
+ *             restore_argv = talloc_array(NULL, char *, argc+2);
+ *             restore_argv[0] = argv[0];
+ *             restore_argv[1] = "--restore";
+ *             memcpy(restore_argv+2, argv+1, sizeof(argv[0])*argc);
  *
  *             opt_register_noarg("--help|--usage|-h", opt_usage_and_exit,
  *                                "\nA oserver program", "Usage information");
  *             opt_register_arg("--port", opt_set_uintval, opt_show_uintval,
  *                              &port, "Server port number");
+ *             opt_register_noarg("--restore", opt_set_bool,
+ *                                &restore, opt_hidden);
  *
  *             opt_parse(&argc, argv, opt_log_stderr_exit);
  *             if (argc != 1)
  *                     opt_log_stderr_exit("Unknown extra arguments");
  *
- *             if (!oserver_setup(ev, port))
+ *             if (restore) {
+ *                     if (!oserver_restore(ev, STATE_FILE))
+ *                             err(1, "Restoring server");
+ *             } else if (!oserver_setup(ev, port, STATE_FILE, restore_argv))
  *                     err(1, "Failed to set up server");
  *
  *             while (tevent_loop_wait(ev) == 0);
@@ -55,6 +66,8 @@ int main(int argc, char *argv[])
                printf("ccan/opt\n");
                printf("ccan/array_size\n");
                printf("ccan/tevent\n");
+               printf("ccan/cdump\n");
+               printf("ccan/grab_file\n");
                return 0;
        }