storage.cpp 1.2 KB

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