#include "httpinput.h"
#include "log.h"
#include "metacube2.h"
-#include "mutexlock.h"
#include "parse.h"
#include "serverpool.h"
#include "state.pb.h"
url(url),
encoding(encoding)
{
- pthread_mutex_init(&stats_mutex, nullptr);
stats.url = url;
stats.bytes_received = 0;
stats.data_bytes_received = 0;
string protocol, user;
parse_url(url, &protocol, &user, &host, &port, &path); // Don't care if it fails.
- pthread_mutex_init(&stats_mutex, nullptr);
stats.url = url;
stats.bytes_received = serialized.bytes_received();
stats.data_bytes_received = serialized.data_bytes_received();
sock = -1;
}
- MutexLock lock(&stats_mutex);
+ lock_guard<mutex> lock(stats_mutex);
stats.connect_time = -1;
}
}
}
- // Set “Connection: close”.
+ // Erase “Connection: close”; we'll set it on the sending side if needed.
// TODO: Make case-insensitive.
parameters.erase("Connection");
- parameters.insert(make_pair("Connection", "close"));
// Construct the new HTTP header.
http_header = "HTTP/1.0 200 OK\r\n";
request_bytes_sent = 0;
}
- MutexLock lock(&stats_mutex);
+ lock_guard<mutex> lock(stats_mutex);
stats.connect_time = time(nullptr);
clock_gettime(CLOCK_MONOTONIC_COARSE, &last_activity);
}
void HTTPInput::process_data(char *ptr, size_t bytes)
{
{
- MutexLock mutex(&stats_mutex);
+ lock_guard<mutex> lock(stats_mutex);
stats.bytes_received += bytes;
}
// TODO: Keep metadata when sending on to other Metacube users.
if (flags & METACUBE_FLAGS_METADATA) {
{
- MutexLock lock(&stats_mutex);
+ lock_guard<mutex> lock(stats_mutex);
stats.metadata_bytes_received += size;
}
process_metacube_metadata_block(hdr, pending_data.data() + sizeof(hdr), size);
} else {
// Send this block on to the servers.
{
- MutexLock lock(&stats_mutex);
+ lock_guard<mutex> lock(stats_mutex);
stats.data_bytes_received += size;
}
char *inner_data = pending_data.data() + sizeof(metacube2_block_header);
InputStats HTTPInput::get_stats() const
{
- MutexLock lock(&stats_mutex);
+ lock_guard<mutex> lock(stats_mutex);
return stats;
}
double elapsed = now.tv_sec - be64toh(pkt->tv_sec) +
1e-9 * (now.tv_nsec - long(be64toh(pkt->tv_nsec)));
{
- MutexLock lock(&stats_mutex);
+ lock_guard<mutex> lock(stats_mutex);
stats.latency_sec = elapsed;
}
}