X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=send_common.c;h=dea96081d43a51209a0d667cbf8f73a9ff11e08d;hb=7b20f3f9b6e77a21dc66ba6d4037a90e857ccb4c;hp=cf1cd37b7863ec438af70e246ca41538d4638408;hpb=72d73eb53316768a5a3527cf56afad7158d9ef4d;p=paraslash.git diff --git a/send_common.c b/send_common.c index cf1cd37b..dea96081 100644 --- a/send_common.c +++ b/send_common.c @@ -96,15 +96,6 @@ void shutdown_clients(struct sender_status *ss) shutdown_client(sc, ss); } -static int queue_chunk_or_shutdown(struct sender_client *sc, - struct sender_status *ss, const char *buf, size_t num_bytes) -{ - int ret = cq_enqueue(sc->cq, buf, num_bytes); - if (ret < 0) - shutdown_client(sc, ss); - return ret; -} - /** * Try to empty the chunk queue for this fd. * @@ -133,57 +124,6 @@ int send_queued_chunks(int fd, struct chunk_queue *cq) return 1; } -/** - * Send one chunk of audio data to a connected client. - * - * \param sc The client. - * \param ss The sender. - * \param current_chunk The number of the chunk to write. - * \param buf The data to write. - * \param len The number of bytes of \a buf. - * \param header_buf The audio file header. - * \param header_len The number of bytes of \a header_buf. - * - * On errors, the client is shut down. If only a part of the buffer could be - * written, the remainder is put into the chunk queue for that client. - */ -void send_chunk(struct sender_client *sc, struct sender_status *ss, - long unsigned current_chunk, const char *buf, size_t len, - const char *header_buf, size_t header_len) -{ - int ret; - - if (!sc->header_sent && current_chunk) { - if (header_buf && header_len > 0) { - ret = queue_chunk_or_shutdown(sc, ss, header_buf, header_len); - if (ret < 0) - goto out; - } - } - sc->header_sent = 1; - ret = send_queued_chunks(sc->fd, sc->cq); - if (ret < 0) { - shutdown_client(sc, ss); - goto out; - } - if (!len) - goto out; - if (!ret) { /* still data left in the queue */ - ret = queue_chunk_or_shutdown(sc, ss, buf, len); - goto out; - } - ret = write_nonblock(sc->fd, buf, len); - if (ret < 0) { - shutdown_client(sc, ss); - goto out; - } - if (ret != len) - ret = queue_chunk_or_shutdown(sc, ss, buf + ret, len - ret); -out: - if (ret < 0) - PARA_NOTICE_LOG("%s\n", para_strerror(-ret)); -} - /** * Initialize a struct sender status. *