storage.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. #include "utils.hpp"
  2. #include "config.hpp"
  3. #include "storage.hpp"
  4. // Handle the messages received by a storage node
  5. void storage_received(const uint8_t *msgs, uint32_t num_msgs)
  6. {
  7. // A dummy function for now that just counts how many real and
  8. // padding messages arrived
  9. uint16_t msg_size = g_teems_config.msg_size;
  10. nodenum_t my_node_num = g_teems_config.my_node_num;
  11. uint32_t real = 0, padding = 0;
  12. uint32_t uid_mask = (1 << DEST_UID_BITS) - 1;
  13. printf("Storage server received %u messages:\n", num_msgs);
  14. for (uint32_t i=0; i<num_msgs; ++i) {
  15. uint32_t dest_addr = *(const uint32_t*)msgs;
  16. nodenum_t dest_node =
  17. g_teems_config.storage_map[dest_addr >> DEST_UID_BITS];
  18. if (dest_node != my_node_num) {
  19. char hexbuf[2*msg_size + 1];
  20. for (uint32_t j=0;j<msg_size;++j) {
  21. snprintf(hexbuf+2*j, 3, "%02x", msgs[j]);
  22. }
  23. printf("Misrouted message: %s\n", hexbuf);
  24. } else if ((dest_addr & uid_mask) == uid_mask) {
  25. ++padding;
  26. } else {
  27. ++real;
  28. }
  29. msgs += msg_size;
  30. }
  31. printf("%u real, %u padding\n", real, padding);
  32. }