From: Steinar H. Gunderson Date: Sun, 14 Apr 2013 00:30:47 +0000 (+0200) Subject: Rename bytes_sent to stream_pos, because that is what it really is. X-Git-Tag: 1.0.0~116 X-Git-Url: https://git.sesse.net/?p=cubemap;a=commitdiff_plain;h=1071b76d8e60d51d88d4e1310e7d6261b628a454 Rename bytes_sent to stream_pos, because that is what it really is. --- diff --git a/client.cpp b/client.cpp index c74209d..54373d4 100644 --- a/client.cpp +++ b/client.cpp @@ -17,7 +17,7 @@ Client::Client(int sock) state(Client::READING_REQUEST), stream(NULL), header_or_error_bytes_sent(0), - bytes_sent(0) + stream_pos(0) { request.reserve(1024); @@ -49,7 +49,7 @@ Client::Client(const ClientProto &serialized, Stream *stream) stream(stream), header_or_error(serialized.header_or_error()), header_or_error_bytes_sent(serialized.header_or_error_bytes_sent()), - bytes_sent(serialized.bytes_sent()) + stream_pos(serialized.stream_pos()) { if (stream->mark_pool != NULL) { fwmark = stream->mark_pool->get_mark(); @@ -74,7 +74,7 @@ ClientProto Client::serialize() const serialized.set_stream_id(stream_id); serialized.set_header_or_error(header_or_error); serialized.set_header_or_error_bytes_sent(serialized.header_or_error_bytes_sent()); - serialized.set_bytes_sent(bytes_sent); + serialized.set_stream_pos(stream_pos); return serialized; } @@ -84,6 +84,6 @@ ClientStats Client::get_stats() const stats.stream_id = stream_id; stats.remote_addr = remote_addr; stats.connect_time = connect_time; - stats.bytes_sent = bytes_sent; + stats.bytes_sent = stream_pos; return stats; } diff --git a/client.h b/client.h index e82b487..47770d1 100644 --- a/client.h +++ b/client.h @@ -59,8 +59,9 @@ struct Client { // or SENDING_ERROR. size_t header_or_error_bytes_sent; - // Number of bytes we've sent of data. Only relevant for SENDING_DATA. - size_t bytes_sent; + // Number of bytes we are into the stream (ie., the end of last send). + // Only relevant for SENDING_DATA. + size_t stream_pos; }; #endif // !defined(_CLIENT_H) diff --git a/server.cpp b/server.cpp index 0cbc453..949d6a4 100644 --- a/server.cpp +++ b/server.cpp @@ -174,7 +174,7 @@ void Server::add_client_from_serialized(const ClientProto &client) } if (client_ptr->state == Client::SENDING_DATA && - client_ptr->bytes_sent == client_ptr->stream->bytes_received) { + client_ptr->stream_pos == client_ptr->stream->bytes_received) { client_ptr->stream->put_client_to_sleep(client_ptr); } else { process_client(client_ptr); @@ -212,7 +212,7 @@ void Server::set_header(const string &stream_id, const string &header) ++client_it) { Client *client = &client_it->second; if (client->state == Client::SENDING_DATA && - client->bytes_sent == 0) { + client->stream_pos == 0) { construct_header(client); } } @@ -339,7 +339,7 @@ sending_header_or_error_again: // but we'll start sending immediately as we get data. // This is postcondition #3. client->state = Client::SENDING_DATA; - client->bytes_sent = client->stream->bytes_received; + client->stream_pos = client->stream->bytes_received; client->stream->put_client_to_sleep(client); return; } @@ -348,7 +348,7 @@ sending_data_again: // See if there's some data we've lost. Ideally, we should drop to a block boundary, // but resync will be the mux's problem. Stream *stream = client->stream; - size_t bytes_to_send = stream->bytes_received - client->bytes_sent; + size_t bytes_to_send = stream->bytes_received - client->stream_pos; if (bytes_to_send == 0) { return; } @@ -356,20 +356,20 @@ sending_data_again: fprintf(stderr, "WARNING: fd %d lost %lld bytes, maybe too slow connection\n", client->sock, (long long int)(bytes_to_send - stream->backlog_size)); - client->bytes_sent = stream->bytes_received - stream->backlog_size; + client->stream_pos = stream->bytes_received - stream->backlog_size; bytes_to_send = stream->backlog_size; } // See if we need to split across the circular buffer. bool more_data = false; - if ((client->bytes_sent % stream->backlog_size) + bytes_to_send > stream->backlog_size) { - bytes_to_send = stream->backlog_size - (client->bytes_sent % stream->backlog_size); + if ((client->stream_pos % stream->backlog_size) + bytes_to_send > stream->backlog_size) { + bytes_to_send = stream->backlog_size - (client->stream_pos % stream->backlog_size); more_data = true; } ssize_t ret; do { - loff_t offset = client->bytes_sent % stream->backlog_size; + loff_t offset = client->stream_pos % stream->backlog_size; ret = sendfile(client->sock, stream->data_fd, &offset, bytes_to_send); } while (ret == -1 && errno == EINTR); @@ -385,9 +385,9 @@ sending_data_again: close_client(client); return; } - client->bytes_sent += ret; + client->stream_pos += ret; - if (client->bytes_sent == stream->bytes_received) { + if (client->stream_pos == stream->bytes_received) { // We don't have any more data for this client, so put it to sleep. // This is postcondition #3. stream->put_client_to_sleep(client); diff --git a/state.proto b/state.proto index 17d5edc..9644120 100644 --- a/state.proto +++ b/state.proto @@ -8,7 +8,7 @@ message ClientProto { optional string stream_id = 4; optional bytes header_or_error = 5; optional int64 header_or_error_bytes_sent = 6; - optional int64 bytes_sent = 7; + optional int64 stream_pos = 7; }; // Corresponds to struct Stream.