/*
- * Copyright (C) 2005-2009 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2011 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
struct receiver_node {
/** Points to the corresponding receiver. */
struct receiver *receiver;
- /** The output buffer. */
- char *buf;
- /** The amount of bytes in \a buf. */
- size_t loaded;
/** Receiver-specific data. */
void *private_data;
- /** Pointer to the error member of the consumer. */
- int *output_error;
/** Pointer to the configuration data for this instance. */
void *conf;
/** The task associated with this instance. */
struct task task;
+ /** The receiver node is always the root of the buffer tree. */
+ struct btr_node *btrn;
};
/**
* \a argc and \a argv.
*/
void *(*parse_config)(int argc, char **argv);
+ /**
+ * Deallocate the configuration structure of a receiver node.
+ *
+ * This calls the receiver-specific cleanup function generated by
+ * gengetopt.
+ */
+ void (*free_config)(void *conf);
/**
* Open one instance of the receiver.
*
* \sa receiver_node.
*/
void (*close)(struct receiver_node *rn);
- /**
- * Deactivate the receiver.
- *
- * Clean up what init has allocated.
- */
- void (*shutdown)(void);
/**
* Add file descriptors to fd_sets and compute timeout for select(2).
*
*/
void (*post_select)(struct sched *s, struct task *t);
+ /** The two help texts of this receiver. */
struct ggo_help help;
};
+/** Define an array of all available receivers. */
+#define DEFINE_RECEIVER_ARRAY struct receiver receivers[] = { \
+ HTTP_RECEIVER \
+ DCCP_RECEIVER \
+ UDP_RECEIVER \
+ {.name = NULL}};
+
+/** Iterate over all available receivers. */
+#define FOR_EACH_RECEIVER(i) for (i = 0; receivers[i].name; i++)
+
+void recv_init(void);
+void *check_receiver_arg(char *ra, int *receiver_num);
+void print_receiver_helps(int detailed);
+int generic_recv_pre_select(struct sched *s, struct task *t);
/** \cond */
extern void http_recv_init(struct receiver *r);
extern struct receiver receivers[];
/** \endcond */
-/** Define an array of all available receivers. */
-#define DEFINE_RECEIVER_ARRAY struct receiver receivers[] = { \
- HTTP_RECEIVER \
- DCCP_RECEIVER \
- UDP_RECEIVER \
- {.name = NULL}};
-
-#define FOR_EACH_RECEIVER(i) for (i = 0; receivers[i].name; i++)
-
-void *check_receiver_arg(char *ra, int *receiver_num);
-void print_receiver_helps(int detailed);