text: #include <iostream>
  
  #include "network_types.h"
  
  #define BLOCK_SIZE 4096
  
  uint8_t page[BLOCK_SIZE];
  v3i entity_positions[32];
  health entity_health[32];
  image entity_image[32];
  
  int
  main()
  {
    rbuff_t no_source[] = {
      { 0 },
    };
    rbuff_t one_source[] = {
      { .buffer = entity_positions,
        .buffer_bytes = sizeof(entity_positions),
        .buffer_type = 1 },
      { 0 },
    };
    rbuff_t two_source[] = {
      one_source[0],
      { .buffer = entity_health,
        .buffer_bytes = sizeof(entity_health),
        .buffer_type = 2 },
      { 0 },
    };
    rbuff_t three_source[] = {
      one_source[0],
      two_source[1],
      { .buffer = entity_image,
        .buffer_bytes = sizeof(entity_image),
        .buffer_type = 3 },
      { 0 },
    };
  
    rbuff_t *sources[] = {
      no_source, one_source, two_source, three_source, 0,
    };
  
    rbuff_t **iter = sources;
    for (; *iter; ++iter) {
      uint32_t bytes = rbuff_gather(*iter, BLOCK_SIZE, page);
  
      std::cout << "rbuff_gather " << bytes << " bytes" << std::endl;
    }
  
    return 0;
  }
  