Browse Source

Tweaks && remove debug

master
Denis Tereshkin 5 months ago
parent
commit
107fb3a083
  1. 17
      eblapp-server/src/main.c

17
eblapp-server/src/main.c

@ -11,9 +11,9 @@
#include "eblapp.h" #include "eblapp.h"
#include "ring_buffer.h" #include "ring_buffer.h"
#define BUFFER_SIZE 65536 #define BUFFER_SIZE 20000
#define PORT 1069 #define PORT 1069
#define MAX_PACKET_SIZE 1024 #define MAX_PACKET_SIZE 1400
#define TIMEOUT 5 #define TIMEOUT 5
void error(const char* msg) void error(const char* msg)
@ -90,12 +90,10 @@ int main()
size_t space_left = 0; size_t space_left = 0;
size_t bytes_left = 0; size_t bytes_left = 0;
ring_buffer__get_free_bytes(ring_buffer, &space_left); ring_buffer__get_free_bytes(ring_buffer, &space_left);
printf("space_left: %zu\n", space_left);
while(space_left) while(space_left)
{ {
size_t toread = space_left > MAX_PACKET_SIZE ? MAX_PACKET_SIZE : space_left; size_t toread = space_left > MAX_PACKET_SIZE ? MAX_PACKET_SIZE : space_left;
int bytes_read = read(fd, buffer, toread); int bytes_read = read(fd, buffer, toread);
printf("bytes_read: %d\n", bytes_read);
if(bytes_read <= 0) if(bytes_read <= 0)
{ {
break; break;
@ -107,11 +105,9 @@ int main()
} }
ring_buffer__get_free_bytes(ring_buffer, &space_left); ring_buffer__get_free_bytes(ring_buffer, &space_left);
printf("space_left: %zu\n", space_left);
} }
ring_buffer__get_unread_bytes(ring_buffer, &bytes_left); ring_buffer__get_unread_bytes(ring_buffer, &bytes_left);
printf("bytes_left: %zu\n", bytes_left);
while(bytes_left) while(bytes_left)
{ {
struct Eblapp_transfer_data* data = (struct Eblapp_transfer_data*)buffer; struct Eblapp_transfer_data* data = (struct Eblapp_transfer_data*)buffer;
@ -120,6 +116,13 @@ int main()
{ {
toread = MAX_PACKET_SIZE - 8; toread = MAX_PACKET_SIZE - 8;
} }
if (st.st_size - current_offset > 256)
{
// Keep destination nice and aligned
toread &= ~(0x0f);
if (toread == 0)
break;
}
if(ring_buffer__read(ring_buffer, buffer + 8, &toread) < 0) if(ring_buffer__read(ring_buffer, buffer + 8, &toread) < 0)
{ {
perror("ring_buffer__read() failed"); perror("ring_buffer__read() failed");
@ -135,7 +138,6 @@ int main()
current_offset += (n - 8); current_offset += (n - 8);
ring_buffer__get_unread_bytes(ring_buffer, &bytes_left); ring_buffer__get_unread_bytes(ring_buffer, &bytes_left);
printf("bytes_left: %zu (sent: %d)\n", bytes_left, current_offset);
} }
// Wait for ACKs // Wait for ACKs
@ -158,7 +160,6 @@ int main()
if(ack_packet->opcode == EBLAPP_ACK) if(ack_packet->opcode == EBLAPP_ACK)
{ {
uint32_t acked_byte = ack_packet->ack_byte; uint32_t acked_byte = ack_packet->ack_byte;
printf("ack %d/%zu\n", acked_byte, st.st_size);
if(acked_byte >= st.st_size) if(acked_byte >= st.st_size)
{ {
printf("Transfer done\n"); printf("Transfer done\n");

Loading…
Cancel
Save