Commit 7650f453 authored by rna's avatar rna
Browse files

Merge branch 'develop' into feature/congestionControl

parents 0672d883 b98eda49
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@ host = sys.argv[1]
port = int(sys.argv[2])
localport = int(sys.argv[3])

s = prrt.PrrtSocket(("127.0.1.1", localport), mtu=150)
s = prrt.PrrtSocket(("127.0.1.1", localport), maximum_payload_size=150)
s.connect((host, port))

for i in range(10):
+1 −1
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ cdef extern from "proto/socket.h":

    ctypedef prrtSocket PrrtSocket

    cdef PrrtSocket* PrrtSocket_create(const uint32_t mtu, const uint32_t target_delay)
    cdef PrrtSocket* PrrtSocket_create(const uint32_t maximum_payload_size, const uint32_t target_delay)
    bint PrrtSocket_bind(PrrtSocket *sock_ptr, const_char *ipAddress, const uint16_t port)
    int PrrtSocket_close(const PrrtSocket *sock_ptr)
    int PrrtSocket_connect(PrrtSocket *sock_ptr, const_char *host, const uint16_t port)
+1 −2
Original line number Diff line number Diff line
@@ -85,7 +85,6 @@ static bool send_packet(PrrtSocket *sock_ptr, PrrtPacket *packet) {
        do {
            prrtTimeDifference_t now = (prrtTimeDifference_t) PrrtClock_get_current_time_us();
            diff = ((prrtTimeDifference_t) sock_ptr->nextSendTime) - now;
            debug(DEBUG_DATATRANSMITTER, "C: %u, P: %u, S: %d", cwnd, pipe, space);
            if (diff > 0) {
                debug(DEBUG_DATATRANSMITTER, "S: %u, Pacing for %d (%u).", packet->sequenceNumber, diff, now);
                usleep_nano((uint32_t) diff);
@@ -96,7 +95,7 @@ static bool send_packet(PrrtSocket *sock_ptr, PrrtPacket *packet) {
    }

    int64_t space = PrrtReceiver_get_space(sock_ptr->receiver);
    while (space < sock_ptr->mtu) {
    while (space < sock_ptr->maximum_payload_size) {
        //PrrtReceiver_check_rto(sock_ptr->receiver, packet->sequenceNumber, PrrtPacket_type(packet));
        PrrtReceiver_wait_for_space(sock_ptr->receiver);
        space = PrrtReceiver_get_space(sock_ptr->receiver);
+12 −10
Original line number Diff line number Diff line
@@ -10,8 +10,9 @@
#include <assert.h>
#include <sys/ioctl.h>
#include "../defines.h"
#include "../util/dbg.h"
#include "../util/common.h"
#include "../util/dbg.h"
#include "../util/time.h"
#include "processes/dataTransmitter.h"
#include "processes/dataReceiver.h"
#include "stores/deliveredPacketTable.h"
@@ -44,14 +45,14 @@ static inline prrtPacketLength_t deliver_packet(const PrrtSocket *s, void *buffe
    return len;
}

PrrtSocket *PrrtSocket_create(prrtByteCount_t mtu, prrtTimedelta_t target_delay_us) {
PrrtSocket *PrrtSocket_create(prrtByteCount_t maximum_payload_size, prrtTimedelta_t target_delay_us) {
    assert(sizeof(float) == 4);
    PrrtSocket *s = (PrrtSocket *) calloc(1, sizeof(PrrtSocket));
    check_mem(s);

    s->nextSendTime = 0;
    s->pacingEnabled = true;
    s->mtu = mtu;
    s->maximum_payload_size = maximum_payload_size;
    s->isHardwareTimestamping = false;
    s->interfaceName = NULL;

@@ -213,13 +214,13 @@ int PrrtSocket_connect(PrrtSocket *s, const char *host, const uint16_t port) {
    if(s->receiver != NULL) {
        PrrtReceiver_destroy(s->receiver);
    }
    s->receiver = PrrtReceiver_create(host, port, s->mtu);
    s->receiver = PrrtReceiver_create(host, port, s->maximum_payload_size);
    return 0;
}

int PrrtSocket_send(PrrtSocket *s, const uint8_t *data, const size_t data_len) {
    if (data_len > s->mtu) {
        PERROR("Data to be sent (%ld bytes) is too long, as MTU is %d.\n", data_len, s->mtu);
    if (data_len > s->maximum_payload_size) {
        PERROR("Data to be sent (%ld bytes) is too long, as MTU is %d.\n", data_len, s->maximum_payload_size);
        return -1;
    }
    XlapTimestampPlaceholder tsph;
@@ -254,7 +255,7 @@ int32_t PrrtSocket_receive_asap(PrrtSocket *s, void *buf_ptr, struct sockaddr* a
int32_t PrrtSocket_receive_asap_wait(PrrtSocket *s, void *buf_ptr, struct sockaddr* addr) {
    PrrtPacket *packet;
    do {
        packet = PrrtPacketDeliveryStore_get_packet_wait(s->packetDeliveryStore, 0, MAX_TIMESTAMP);
        packet = PrrtPacketDeliveryStore_get_packet_wait(s->packetDeliveryStore);
        if (PrrtSocket_closing(s)) {
            return -1;
        }
@@ -286,7 +287,8 @@ int32_t PrrtSocket_receive_ordered_wait(PrrtSocket *s, void *buf_ptr, struct soc
    PrrtPacket *packet;
    do {
        prrtTimestamp_t now = PrrtClock_get_current_time_us();
        packet = PrrtPacketDeliveryStore_get_packet_wait(s->packetDeliveryStore, now, now + time_window_us);
        struct timespec deadline = abstime_from_now(time_window_us);
        packet = PrrtPacketDeliveryStore_get_packet_timedwait(s->packetDeliveryStore, now, now + time_window_us, &deadline);
        if (PrrtSocket_closing(s)) {
            return -1;
        }
@@ -429,8 +431,8 @@ int PrrtSocket_close(PrrtSocket *s) {
uint32_t PrrtSocket_get_sock_opt(PrrtSocket *s, const char *name) {
    if (strcmp(name, "targetdelay") == 0) {
        return PrrtApplicationConstraints_get_target_delay(s->applicationConstraints);
    } else if (strcmp(name, "mtu") == 0) {
        return s->mtu;
    } else if (strcmp(name, "maximum_payload_size") == 0) {
        return s->maximum_payload_size;
    } else {
        PERROR("Unknown property %s\n", name);
        return 0;
+2 −2
Original line number Diff line number Diff line
@@ -85,11 +85,11 @@ typedef struct prrtSocket {
    PrrtChannelStateInformation* senderChannelStateInformation;

    atomic_bool isThreadPinning;
    prrtByteCount_t mtu;
    prrtByteCount_t maximum_payload_size;
} PrrtSocket;


PrrtSocket *PrrtSocket_create(prrtByteCount_t mtu, prrtTimedelta_t target_delay_us);
PrrtSocket *PrrtSocket_create(prrtByteCount_t maximum_payload_size, prrtTimedelta_t target_delay_us);

bool PrrtSocket_enable_hardware_timestamping(PrrtSocket *s, const char * interface_name);

Loading