X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=send.h;h=c84545c97bac51e1ad0fb3755cc878b48021acf9;hp=e606738bf8e2b7549ccfa10007aab1c006cff8c7;hb=fd864cc2fb78f1fac3af849743909aa23b2cb633;hpb=013337ae0d58f56f036685f3ffa1aebad0b2602f diff --git a/send.h b/send.h index e606738b..c84545c9 100644 --- a/send.h +++ b/send.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2010 Andre Noll + * Copyright (C) 2005-2012 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -87,6 +87,15 @@ struct sender { * pointer means this command is not implemented by this sender. */ int (*client_cmds[NUM_SENDER_CMDS])(struct sender_command_data*); + /** + * Resolve target-specific URL string + * + * This method must be defined if the sender supports the add/delete + * subcommands. It interprets a string specifying a target URL in a + * sender-specific fashion (e.g. embedded FEC string). It can also + * fill in sender-specific defaults if necessary. + */ + int (*resolve_target)(const char *, struct sender_command_data *); }; /** Describes one client, connected to a paraslash sender. */ @@ -122,8 +131,8 @@ struct fec_client_parms { uint8_t slices_per_group; /** Number of slices minus number of redundant slices. */ uint8_t data_slices_per_group; - /** Maximal number of bytes per slice, initially zero. */ - uint16_t max_slice_bytes; + /** Whether the header must be sent periodically. */ + bool need_periodic_header; /** * Transport-layer initialisation for FEC support. * @@ -137,7 +146,7 @@ struct fec_client_parms { */ int (*init_fec)(struct sender_client *sc); /** Push out FEC-encoded packets */ - int (*send_fec)(struct sender_client *sc, char *buf, size_t len); + void (*send_fec)(struct sender_client *sc, char *buf, size_t len); }; /** Describes the current status of one paraslash sender. */ @@ -160,10 +169,6 @@ struct sender_status { void shutdown_client(struct sender_client *sc, struct sender_status *ss); void shutdown_clients(struct sender_status *ss); -void send_chunk(struct sender_client *sc, struct sender_status *ss, - size_t max_bytes_per_write, long unsigned current_chunk, - const char *buf, size_t len, const char *header_buf, - size_t header_len); void init_sender_status(struct sender_status *ss, char **access_arg, int num_access_args, int port, int max_clients, int default_deny); char *get_sender_info(struct sender_status *ss, const char *name); @@ -176,6 +181,5 @@ int generic_com_on(struct sender_status *ss, unsigned protocol); 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); -int send_queued_chunks(int fd, struct chunk_queue *cq, - size_t max_bytes_per_write); +int send_queued_chunks(int fd, struct chunk_queue *cq); int parse_fec_url(const char *arg, struct sender_command_data *scd);