-/**
- * deactivate the receiver
- *
- * Clean up what init has allocated.
- */
- void (*shutdown)(void);
-/**
- * add file descriptors to fd_sets and compute timeout for select(2)
- *
- * The pre_select function gets called from the driving application before
- * entering its select loop. The receiver may use this hook to add any file
- * descriptors to the sets of file descriptors given by \a s.
- *
- * \sa select(2), time.c struct task, struct sched
- */
- void (*pre_select)(struct sched *s, struct task *t);
-/**
- * evaluate the result from select()
- *
- * This hook gets called after the call to select(). It should check all file
- * descriptors which were added to any of the the fd sets during the previous
- * call to pre_select. According to the result, it may then use any
- * non-blocking I/O to establish a connection or to receive the audio data.
- *
- * \sa select(2), struct receiver
- */
- void (*post_select)(struct sched *s, struct task *t);
+ /**
+ * Add file descriptors to fd_sets and compute timeout for select(2).
+ *
+ * If this is not NULL, the function is called in each iteration of the
+ * scheduler's select loop. The receiver may define it to add file
+ * descriptors to the file descriptor sets given by s. Those will be
+ * monitored in the subsequent call to select(2). The function may also
+ * lower the timeout value of s to make select(2) return earlier if no
+ * file descriptors are ready for I/O.
+ *
+ * \sa select(2), \ref time.c, struct \ref sched.
+ */
+ void (*pre_select)(struct sched *s, void *context);
+ /**
+ * Evaluate the result from select(2).
+ *
+ * This is called after the call to select(2). It should check all file
+ * descriptors which were added to any of the fd sets in the previous
+ * call to ->pre_select() and perform (non-blocking) I/O operations on
+ * those fds which are ready for I/O, for example in order to establish
+ * a connection or to receive a part of the audio stream.
+ *
+ * \sa select(2), struct \ref receiver.
+ */
+ int (*post_select)(struct sched *s, void *context);
+ /**
+ * Answer a buffer tree query.
+ *
+ * This optional function pointer allows for inter node communication
+ * of the buffer tree nodes. See \ref btr_command_handler for details.
+ */
+ btr_command_handler execute;