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);
+ 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).
*
/** 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);