Loading CMakeLists.txt +2 −1 Original line number Diff line number Diff line Loading @@ -5,7 +5,8 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_CXX_FLAGS "-fstack-protector -fstack-protector-all -Wall -pedantic " ) SET(CMAKE_C_FLAGS "-O2 -Wall -std=c11 -D_XOPEN_SOURCE=600" ) set(CMAKE_CXX_FLAGS "-fstack-protector -fstack-protector-all -Wall -std=c++11 -D_XOPEN_SOURCE=600" ) set(CMAKE_CXX_FLAGS_DEBUG "-O2 -Wall -ggdb" ) set(CMAKE_CXX_FLAGS_RELEASE "-Os -Wall" ) Loading prrt/proto/block.c +3 −3 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ #include "block.h" #include "codingParams.h" void gather_redundancy_packets(const PrrtBlock *block_ptr, gf *const *fec, int *idx_p) static void gather_redundancy_packets(const PrrtBlock *block_ptr, gf *const *fec, int *idx_p) { uint32_t i; uint32_t m = 0; Loading @@ -27,7 +27,7 @@ void gather_redundancy_packets(const PrrtBlock *block_ptr, gf *const *fec, int * } } void gather_data_packets(PrrtBlock *block_ptr, gf *const *fec, int *idx_p) static void gather_data_packets(PrrtBlock *block_ptr, gf *const *fec, int *idx_p) { LIST_FOREACH(block_ptr->dataPackets, first, next, current) { PrrtPacket *packet = current->value; Loading @@ -36,7 +36,7 @@ void gather_data_packets(PrrtBlock *block_ptr, gf *const *fec, int *idx_p) } } void clear_list(gf *const *src, uint8_t k) static void clear_list(gf *const *src, uint8_t k) { int j = 0; for(j = 0; j < k; j++) { Loading prrt/proto/packet.c +9 −9 Original line number Diff line number Diff line Loading @@ -10,19 +10,19 @@ #include "packet.h" #include "clock.h" void *encode_general_header(void *buf_ptr, const PrrtPacket *packet); static void *encode_general_header(void *buf_ptr, const PrrtPacket *packet); void *encode_data_header(void *buf_ptr, const void *payload); static void *encode_data_header(void *buf_ptr, const void *payload); void *encode_redundancy_header(void *buf_ptr, const void *payload); static void *encode_redundancy_header(void *buf_ptr, const void *payload); void *encode_feedback_header(void *buf_ptr, const void *payload); static void *encode_feedback_header(void *buf_ptr, const void *payload); void *decode_data_header(void *dstBuffer, const void *srcBuffer); static void *decode_data_header(void *dstBuffer, const void *srcBuffer); void *decode_redundancy_header(void *dstBuffer, const void *srcBuffer); static void *decode_redundancy_header(void *dstBuffer, const void *srcBuffer); void *decode_feedback_header(void *dstBuffer, const void *srcBuffer); static void *decode_feedback_header(void *dstBuffer, const void *srcBuffer); prrtPacketType_t PrrtPacket_type(PrrtPacket *packet_ptr) { Loading Loading @@ -131,7 +131,7 @@ PrrtPacket *PrrtPacket_copy(PrrtPacket *original) return NULL; } PrrtPacket *create_header(uint8_t priority, prrtSequenceNumber_t seqno, prrtPacketLength_t size, uint8_t type, uint8_t index) static PrrtPacket *create_header(uint8_t priority, prrtSequenceNumber_t seqno, prrtPacketLength_t size, uint8_t type, uint8_t index) { PrrtPacket *packet = calloc(1, sizeof(PrrtPacket)); check_mem(packet); Loading prrt/proto/processes/dataReceiver.c +5 −5 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ #include "../socket.h" #include "dataReceiver.h" void retrieve_data_blocks(PrrtSocket *sock_ptr, prrtSequenceNumber_t base_seqno, uint8_t k, const PrrtBlock *block) static void retrieve_data_blocks(PrrtSocket *sock_ptr, prrtSequenceNumber_t base_seqno, uint8_t k, const PrrtBlock *block) { List *res = List_create(); Loading @@ -27,7 +27,7 @@ void retrieve_data_blocks(PrrtSocket *sock_ptr, prrtSequenceNumber_t base_seqno, List_destroy(res); } void decode_block(PrrtSocket *socket, PrrtBlock *block) static void decode_block(PrrtSocket *socket, PrrtBlock *block) { if(block != NULL && PrrtBlock_decode_ready(block)) { check(PrrtBlock_decode(block), "Decoding failed"); Loading @@ -54,7 +54,7 @@ void decode_block(PrrtSocket *socket, PrrtBlock *block) PERROR("Decoding failed.%s", "") } bool send_feedback(const PrrtSocket *sock_ptr, struct sockaddr_in remote) static bool send_feedback(const PrrtSocket *sock_ptr, struct sockaddr_in remote) { uint16_t remote_port = ntohs(remote.sin_port); char *remote_host = inet_ntoa(remote.sin_addr); Loading Loading @@ -94,7 +94,7 @@ bool send_feedback(const PrrtSocket *sock_ptr, struct sockaddr_in remote) return false; } void handle_data_packet(PrrtSocket *sock_ptr, PrrtPacket *packet, struct sockaddr_in remote) static void handle_data_packet(PrrtSocket *sock_ptr, PrrtPacket *packet, struct sockaddr_in remote) { PrrtPacketDataPayload *payload = packet->payload; Loading Loading @@ -146,7 +146,7 @@ void handle_data_packet(PrrtSocket *sock_ptr, PrrtPacket *packet, struct sockadd return; } void handle_redundancy_packet(PrrtSocket *socket, PrrtPacket *packet) static void handle_redundancy_packet(PrrtSocket *socket, PrrtPacket *packet) { PrrtPacketRedundancyPayload *redundancyPayload = packet->payload; Loading prrt/proto/processes/dataTransmitter.c +3 −17 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ #include "dataTransmitter.h" bool send_packet(PrrtSocket *sock_ptr, PrrtPacket *packet) static bool send_packet(PrrtSocket *sock_ptr, PrrtPacket *packet) { uint8_t buf[MAX_PAYLOAD_LENGTH]; memset(buf, 0, sizeof(buf)); Loading @@ -24,19 +24,8 @@ bool send_packet(PrrtSocket *sock_ptr, PrrtPacket *packet) LIST_FOREACH(sock_ptr->receivers, first, next, cur) { PrrtReceiver *recv = cur->value; struct hostent *hp; struct sockaddr_in targetaddr; memset((char *) &targetaddr, 0, sizeof(targetaddr)); targetaddr.sin_family = AF_INET; targetaddr.sin_port = htons(recv->port); hp = gethostbyname(recv->host_name); check(hp != NULL, "Could not resolve host '%s'.", recv->host_name) memcpy((void *) &targetaddr.sin_addr, hp->h_addr_list[0], (size_t) hp->h_length); // TODO: [LATENCY] By knowing the time encoding etc. that happens upfront, one could make an adjustment here. check(sendto(sock_ptr->dataSocketFd, buf, length, 0, (struct sockaddr *) &targetaddr, sizeof(targetaddr)) == check(sendto(sock_ptr->dataSocketFd, buf, length, 0, recv->ai->ai_addr, recv->ai->ai_addrlen) == length, "Sendto failed."); usleep(1); } Loading @@ -61,17 +50,14 @@ void *send_data_loop(void *ptr) while(1) { check(pthread_mutex_lock(&sock_ptr->outQueueFilledMutex) == 0, "Lock failed."); while(List_count(sock_ptr->outQueue) == 0) { check(pthread_mutex_lock(&sock_ptr->closingMutex) == 0, "Lock failed."); if(sock_ptr->closing) { if (atomic_load_explicit(&sock_ptr->closing, memory_order_acquire)) { PrrtCodingParams_destroy(cpar); if(block != NULL) { PrrtBlock_destroy(block); } check(pthread_mutex_unlock(&sock_ptr->closingMutex) == 0, "Unlock failed."); check(pthread_mutex_unlock(&sock_ptr->outQueueFilledMutex) == 0, "Unlock failed."); return NULL; } check(pthread_mutex_unlock(&sock_ptr->closingMutex) == 0, "Unlock failed."); check(pthread_cond_wait(&sock_ptr->outQueueFilledCv, &sock_ptr->outQueueFilledMutex) == 0, "Cond wait failed."); } Loading Loading
CMakeLists.txt +2 −1 Original line number Diff line number Diff line Loading @@ -5,7 +5,8 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_CXX_FLAGS "-fstack-protector -fstack-protector-all -Wall -pedantic " ) SET(CMAKE_C_FLAGS "-O2 -Wall -std=c11 -D_XOPEN_SOURCE=600" ) set(CMAKE_CXX_FLAGS "-fstack-protector -fstack-protector-all -Wall -std=c++11 -D_XOPEN_SOURCE=600" ) set(CMAKE_CXX_FLAGS_DEBUG "-O2 -Wall -ggdb" ) set(CMAKE_CXX_FLAGS_RELEASE "-Os -Wall" ) Loading
prrt/proto/block.c +3 −3 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ #include "block.h" #include "codingParams.h" void gather_redundancy_packets(const PrrtBlock *block_ptr, gf *const *fec, int *idx_p) static void gather_redundancy_packets(const PrrtBlock *block_ptr, gf *const *fec, int *idx_p) { uint32_t i; uint32_t m = 0; Loading @@ -27,7 +27,7 @@ void gather_redundancy_packets(const PrrtBlock *block_ptr, gf *const *fec, int * } } void gather_data_packets(PrrtBlock *block_ptr, gf *const *fec, int *idx_p) static void gather_data_packets(PrrtBlock *block_ptr, gf *const *fec, int *idx_p) { LIST_FOREACH(block_ptr->dataPackets, first, next, current) { PrrtPacket *packet = current->value; Loading @@ -36,7 +36,7 @@ void gather_data_packets(PrrtBlock *block_ptr, gf *const *fec, int *idx_p) } } void clear_list(gf *const *src, uint8_t k) static void clear_list(gf *const *src, uint8_t k) { int j = 0; for(j = 0; j < k; j++) { Loading
prrt/proto/packet.c +9 −9 Original line number Diff line number Diff line Loading @@ -10,19 +10,19 @@ #include "packet.h" #include "clock.h" void *encode_general_header(void *buf_ptr, const PrrtPacket *packet); static void *encode_general_header(void *buf_ptr, const PrrtPacket *packet); void *encode_data_header(void *buf_ptr, const void *payload); static void *encode_data_header(void *buf_ptr, const void *payload); void *encode_redundancy_header(void *buf_ptr, const void *payload); static void *encode_redundancy_header(void *buf_ptr, const void *payload); void *encode_feedback_header(void *buf_ptr, const void *payload); static void *encode_feedback_header(void *buf_ptr, const void *payload); void *decode_data_header(void *dstBuffer, const void *srcBuffer); static void *decode_data_header(void *dstBuffer, const void *srcBuffer); void *decode_redundancy_header(void *dstBuffer, const void *srcBuffer); static void *decode_redundancy_header(void *dstBuffer, const void *srcBuffer); void *decode_feedback_header(void *dstBuffer, const void *srcBuffer); static void *decode_feedback_header(void *dstBuffer, const void *srcBuffer); prrtPacketType_t PrrtPacket_type(PrrtPacket *packet_ptr) { Loading Loading @@ -131,7 +131,7 @@ PrrtPacket *PrrtPacket_copy(PrrtPacket *original) return NULL; } PrrtPacket *create_header(uint8_t priority, prrtSequenceNumber_t seqno, prrtPacketLength_t size, uint8_t type, uint8_t index) static PrrtPacket *create_header(uint8_t priority, prrtSequenceNumber_t seqno, prrtPacketLength_t size, uint8_t type, uint8_t index) { PrrtPacket *packet = calloc(1, sizeof(PrrtPacket)); check_mem(packet); Loading
prrt/proto/processes/dataReceiver.c +5 −5 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ #include "../socket.h" #include "dataReceiver.h" void retrieve_data_blocks(PrrtSocket *sock_ptr, prrtSequenceNumber_t base_seqno, uint8_t k, const PrrtBlock *block) static void retrieve_data_blocks(PrrtSocket *sock_ptr, prrtSequenceNumber_t base_seqno, uint8_t k, const PrrtBlock *block) { List *res = List_create(); Loading @@ -27,7 +27,7 @@ void retrieve_data_blocks(PrrtSocket *sock_ptr, prrtSequenceNumber_t base_seqno, List_destroy(res); } void decode_block(PrrtSocket *socket, PrrtBlock *block) static void decode_block(PrrtSocket *socket, PrrtBlock *block) { if(block != NULL && PrrtBlock_decode_ready(block)) { check(PrrtBlock_decode(block), "Decoding failed"); Loading @@ -54,7 +54,7 @@ void decode_block(PrrtSocket *socket, PrrtBlock *block) PERROR("Decoding failed.%s", "") } bool send_feedback(const PrrtSocket *sock_ptr, struct sockaddr_in remote) static bool send_feedback(const PrrtSocket *sock_ptr, struct sockaddr_in remote) { uint16_t remote_port = ntohs(remote.sin_port); char *remote_host = inet_ntoa(remote.sin_addr); Loading Loading @@ -94,7 +94,7 @@ bool send_feedback(const PrrtSocket *sock_ptr, struct sockaddr_in remote) return false; } void handle_data_packet(PrrtSocket *sock_ptr, PrrtPacket *packet, struct sockaddr_in remote) static void handle_data_packet(PrrtSocket *sock_ptr, PrrtPacket *packet, struct sockaddr_in remote) { PrrtPacketDataPayload *payload = packet->payload; Loading Loading @@ -146,7 +146,7 @@ void handle_data_packet(PrrtSocket *sock_ptr, PrrtPacket *packet, struct sockadd return; } void handle_redundancy_packet(PrrtSocket *socket, PrrtPacket *packet) static void handle_redundancy_packet(PrrtSocket *socket, PrrtPacket *packet) { PrrtPacketRedundancyPayload *redundancyPayload = packet->payload; Loading
prrt/proto/processes/dataTransmitter.c +3 −17 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ #include "dataTransmitter.h" bool send_packet(PrrtSocket *sock_ptr, PrrtPacket *packet) static bool send_packet(PrrtSocket *sock_ptr, PrrtPacket *packet) { uint8_t buf[MAX_PAYLOAD_LENGTH]; memset(buf, 0, sizeof(buf)); Loading @@ -24,19 +24,8 @@ bool send_packet(PrrtSocket *sock_ptr, PrrtPacket *packet) LIST_FOREACH(sock_ptr->receivers, first, next, cur) { PrrtReceiver *recv = cur->value; struct hostent *hp; struct sockaddr_in targetaddr; memset((char *) &targetaddr, 0, sizeof(targetaddr)); targetaddr.sin_family = AF_INET; targetaddr.sin_port = htons(recv->port); hp = gethostbyname(recv->host_name); check(hp != NULL, "Could not resolve host '%s'.", recv->host_name) memcpy((void *) &targetaddr.sin_addr, hp->h_addr_list[0], (size_t) hp->h_length); // TODO: [LATENCY] By knowing the time encoding etc. that happens upfront, one could make an adjustment here. check(sendto(sock_ptr->dataSocketFd, buf, length, 0, (struct sockaddr *) &targetaddr, sizeof(targetaddr)) == check(sendto(sock_ptr->dataSocketFd, buf, length, 0, recv->ai->ai_addr, recv->ai->ai_addrlen) == length, "Sendto failed."); usleep(1); } Loading @@ -61,17 +50,14 @@ void *send_data_loop(void *ptr) while(1) { check(pthread_mutex_lock(&sock_ptr->outQueueFilledMutex) == 0, "Lock failed."); while(List_count(sock_ptr->outQueue) == 0) { check(pthread_mutex_lock(&sock_ptr->closingMutex) == 0, "Lock failed."); if(sock_ptr->closing) { if (atomic_load_explicit(&sock_ptr->closing, memory_order_acquire)) { PrrtCodingParams_destroy(cpar); if(block != NULL) { PrrtBlock_destroy(block); } check(pthread_mutex_unlock(&sock_ptr->closingMutex) == 0, "Unlock failed."); check(pthread_mutex_unlock(&sock_ptr->outQueueFilledMutex) == 0, "Unlock failed."); return NULL; } check(pthread_mutex_unlock(&sock_ptr->closingMutex) == 0, "Unlock failed."); check(pthread_cond_wait(&sock_ptr->outQueueFilledCv, &sock_ptr->outQueueFilledMutex) == 0, "Cond wait failed."); } Loading