void (*send)(long unsigned current_chunk, long unsigned chunks_sent,
const char *buf, size_t len, const char *header_buf,
size_t header_len);
- /**
- * Add file descriptors to fd_sets.
- *
- * The pre_select function of each supported sender is called just before
- * para_server enters its main select loop. Each sender may add its own
- * file descriptors to the \a rfds or the \a wfds set.
- *
- * If a file descriptor was added, \a max_fileno must be increased by
- * this function, if necessary.
- *
- * \sa select(2).
- */
- void (*pre_select)(int *max_fileno, fd_set *rfds, fd_set *wfds);
- /**
- * Handle the file descriptors which are ready for I/O.
- *
- * If the pre_select hook added one ore more file descriptors to the
- * read or write set, this is the hook to check the result and do any
- * I/O on those descriptors which are ready for reading/writing.
- */
- void (*post_select)(fd_set *rfds, fd_set *wfds);
+ /** Ask the scheduler to monitor file descriptors. */
+ void (*pre_monitor)(struct sched *s);
+ /** Perform I/O on the file descriptors which are ready. */
+ void (*post_monitor)(struct sched *s);
/**
* Terminate all connected clients.
*
const struct lls_opt_result *acl_opt_result,
const struct lls_opt_result *listen_address_opt_result,
int default_port, int max_clients, int default_deny);
-char *generic_sender_status(struct sender_status *ss, const char *name);
+void free_sender_status(const struct sender_status *ss);
+__malloc char *generic_sender_status(struct sender_status *ss, const char *name);
void generic_com_allow(struct sender_command_data *scd,
struct sender_status *ss);
void generic_com_deny(struct sender_command_data *scd,
void generic_com_on(struct sender_status *ss, unsigned protocol);
void generic_acl_deplete(struct list_head *acl);
void generic_com_off(struct sender_status *ss);
-char *generic_sender_help(void);
-struct sender_client *accept_sender_client(struct sender_status *ss, fd_set *rfds);
+__malloc char *generic_sender_help(void);
+struct sender_client *accept_sender_client(struct sender_status *ss);
int send_queued_chunks(int fd, struct chunk_queue *cq);
int parse_fec_url(const char *arg, struct sender_command_data *scd);