- int (*open)(struct writer_node *);
- int (*write)(char *data, size_t nbytes, struct writer_node *);
+ /**
+ * The command line parser of the writer.
+ *
+ * It should check whether the command line options given by \a options
+ * are valid and return a pointer to the writer-specific configuration
+ * data determined by \a options. This function must either succeed or
+ * call exit(). Note that parse_config_or_die() might be called more
+ * than once with different values of \a options. \sa \ref
+ * free_config().
+ */
+ void *(*parse_config_or_die)(const char *options);
+ /**
+ * Dellocate all configuration resources.
+ *
+ * This should free whatever was allocated by \ref parse_config_or_die().
+ */
+ void (*free_config)(void *config);
+ /**
+ * Prepare the fd sets for select.
+ *
+ * This is called from scheduler. It may use the sched pointer to add
+ * any file descriptors or to decrease the select timeout.
+ */
+ void (*pre_select)(struct sched *s, struct task *t);
+ /**
+ * Write audio data.
+ *
+ * Called from the post_select function of the writer node's task.
+ */
+ void (*post_select)(struct sched *s, struct task *t);
+ /**
+ * Close one instance of the writer.
+ *
+ * This function is assumed to succeed.
+ */