]> git.sesse.net Git - cubemap/blobdiff - udpinput.cpp
Use C++11 std::mutex and std::lock_guard instead of our RAII wrapper.
[cubemap] / udpinput.cpp
index 5e39d6632c9b72ca6916816283df44ffa8ef1820..0035640ad4a91bd6ed2d4d59f3a6db8feb677a6d 100644 (file)
@@ -6,11 +6,11 @@
 #include <sys/socket.h>
 #include <time.h>
 #include <unistd.h>
+#include <math.h>
 #include <string>
 
 #include "acceptor.h"
 #include "log.h"
-#include "mutexlock.h"
 #include "serverpool.h"
 #include "state.pb.h"
 #include "stream.h"
@@ -40,8 +40,9 @@ bool parse_ip_address(const string &ip, sockaddr_storage *addr)
                                ip.c_str());
                        return false;
                }
-               if (inet_pton(AF_INET6, ip.c_str(), &addr6->sin6_addr) != 1) {
-                       log(ERROR, "'%s' is not a valid IPv6 address");
+               string raw_ip(ip.begin() + 1, ip.end() - 1);
+               if (inet_pton(AF_INET6, raw_ip.c_str(), &addr6->sin6_addr) != 1) {
+                       log(ERROR, "'%s' is not a valid IPv6 address", raw_ip.c_str());
                        return false;
                }
        } else {
@@ -111,11 +112,8 @@ UDPInput::UDPInput(const string &url)
 
        construct_header();
 
-       pthread_mutex_init(&stats_mutex, NULL);
        stats.url = url;
-       stats.bytes_received = 0;
-       stats.data_bytes_received = 0;
-       stats.connect_time = time(NULL);
+       stats.connect_time = time(nullptr);
 }
 
 UDPInput::UDPInput(const InputProto &serialized)
@@ -129,14 +127,13 @@ UDPInput::UDPInput(const InputProto &serialized)
 
        construct_header();
 
-       pthread_mutex_init(&stats_mutex, NULL);
        stats.url = url;
        stats.bytes_received = serialized.bytes_received();
        stats.data_bytes_received = serialized.data_bytes_received();
        if (serialized.has_connect_time()) {
                stats.connect_time = serialized.connect_time();
        } else {
-               stats.connect_time = time(NULL);
+               stats.connect_time = time(nullptr);
        }
 }
 
@@ -148,6 +145,7 @@ InputProto UDPInput::serialize() const
        serialized.set_bytes_received(stats.bytes_received);
        serialized.set_data_bytes_received(stats.data_bytes_received);
        serialized.set_connect_time(stats.connect_time);
+       serialized.set_is_metacube_encoded(false);
        return serialized;
 }
 
@@ -178,7 +176,7 @@ void UDPInput::do_work()
        while (!should_stop()) {
                if (sock == -1) {
                        int port_num = atoi(port.c_str());
-                       sockaddr_in6 addr = CreateAnyAddress(port_num);
+                       sockaddr_in6 addr = create_any_address(port_num);
                        sock = create_server_socket(addr, UDP_SOCKET);
                        if (sock == -1) {
                                log(WARNING, "[%s] UDP socket creation failed. Waiting 0.2 seconds and trying again...",
@@ -201,7 +199,7 @@ void UDPInput::do_work()
                }
 
                // Wait for a packet, or a wakeup.
-               bool activity = wait_for_activity(sock, POLLIN, NULL);
+               bool activity = wait_for_activity(sock, POLLIN, nullptr);
                if (!activity) {
                        // Most likely, should_stop was set.
                        continue;
@@ -219,19 +217,19 @@ void UDPInput::do_work()
                }
 
                {
-                       MutexLock lock(&stats_mutex);
+                       lock_guard<mutex> lock(stats_mutex);
                        stats.bytes_received += ret;
                        stats.data_bytes_received += ret;
                }
-               
-               for (size_t i = 0; i < stream_indices.size(); ++i) {
-                       servers->add_data(stream_indices[i], packet_buf, ret, SUITABLE_FOR_STREAM_START);
+       
+               for (size_t stream_index : stream_indices) {    
+                       servers->add_data(stream_index, packet_buf, ret, /*metacube_flags=*/0);
                }
        }
 }
 
 InputStats UDPInput::get_stats() const
 {
-       MutexLock lock(&stats_mutex);
+       lock_guard<mutex> lock(stats_mutex);
        return stats;
 }