Rename bytes_sent to stream_pos, because that is what it really is.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 14 Apr 2013 00:30:47 +0000 (02:30 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 14 Apr 2013 00:30:47 +0000 (02:30 +0200)
client.cpp
client.h
server.cpp
state.proto

index c74209d..54373d4 100644 (file)
@@ -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;
 }
index e82b487..47770d1 100644 (file)
--- 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)
index 0cbc453..949d6a4 100644 (file)
@@ -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);
index 17d5edc..9644120 100644 (file)
@@ -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.