Client::Client(int sock)
: sock(sock),
- connect_time(time(NULL)),
state(Client::READING_REQUEST),
stream(NULL),
header_or_error_bytes_sent(0),
{
request.reserve(1024);
+ if (clock_gettime(CLOCK_MONOTONIC_COARSE, &connect_time) == -1) {
+ log_perror("clock_gettime(CLOCK_MONOTONIC_COARSE)");
+ return;
+ }
+
// Find the remote address, and convert it to ASCII.
sockaddr_in6 addr;
socklen_t addr_len = sizeof(addr);
Client::Client(const ClientProto &serialized, Stream *stream)
: sock(serialized.sock()),
remote_addr(serialized.remote_addr()),
- connect_time(serialized.connect_time()),
state(State(serialized.state())),
request(serialized.request()),
url(serialized.url()),
}
}
}
+ connect_time.tv_sec = serialized.connect_time_sec();
+ connect_time.tv_nsec = serialized.connect_time_nsec();
}
ClientProto Client::serialize() const
ClientProto serialized;
serialized.set_sock(sock);
serialized.set_remote_addr(remote_addr);
- serialized.set_connect_time(connect_time);
+ serialized.set_connect_time_sec(connect_time.tv_sec);
+ serialized.set_connect_time_nsec(connect_time.tv_nsec);
serialized.set_state(state);
serialized.set_request(request);
serialized.set_url(url);