apache-iggy 0.7.4.dev1__tar.gz → 0.7.5.dev1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/Cargo.toml +7 -7
  2. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/PKG-INFO +1 -1
  3. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/Cargo.toml +2 -3
  4. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/alloc/buffer.rs +98 -47
  5. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/alloc/memory_pool.rs +42 -20
  6. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/messages/send_messages.rs +48 -27
  7. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/lib.rs +0 -1
  8. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_mapper.rs +1 -4
  9. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/iggy_message.rs +45 -18
  10. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/messages_batch_mut.rs +13 -12
  11. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/messages_batch_set.rs +13 -5
  12. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/mod.rs +0 -1
  13. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/permissions/personal_access_token.rs +2 -14
  14. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/segment.rs +28 -1
  15. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/segment_storage/index_reader.rs +11 -20
  16. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/segment_storage/messages_reader.rs +12 -20
  17. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/user/user_identity_info.rs +2 -15
  18. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/crypto.rs +70 -0
  19. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/Cargo.toml +1 -1
  20. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/binary_message.rs +12 -0
  21. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/consumer.rs +17 -2
  22. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/producer.rs +6 -0
  23. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/http_client.rs +1 -2
  24. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/Cargo.lock +99 -153
  25. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/Cargo.toml +2 -2
  26. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/uv.lock +3 -3
  27. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/pyproject.toml +1 -1
  28. apache_iggy-0.7.4.dev1/core/common/src/types/consensus/header.rs +0 -879
  29. apache_iggy-0.7.4.dev1/core/common/src/types/consensus/message.rs +0 -719
  30. apache_iggy-0.7.4.dev1/core/common/src/types/consensus/mod.rs +0 -19
  31. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/LICENSE +0 -0
  32. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/NOTICE +0 -0
  33. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/README.md +0 -0
  34. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/apache_iggy.pyi +0 -0
  35. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/README.md +0 -0
  36. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/alloc/mod.rs +0 -0
  37. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/certificates.rs +0 -0
  38. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/consumer_groups/create_consumer_group.rs +0 -0
  39. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/consumer_groups/delete_consumer_group.rs +0 -0
  40. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/consumer_groups/get_consumer_group.rs +0 -0
  41. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/consumer_groups/get_consumer_groups.rs +0 -0
  42. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/consumer_groups/join_consumer_group.rs +0 -0
  43. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/consumer_groups/leave_consumer_group.rs +0 -0
  44. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/consumer_groups/mod.rs +0 -0
  45. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/consumer_offsets/delete_consumer_offset.rs +0 -0
  46. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/consumer_offsets/get_consumer_offset.rs +0 -0
  47. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/consumer_offsets/mod.rs +0 -0
  48. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/consumer_offsets/store_consumer_offset.rs +0 -0
  49. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/messages/flush_unsaved_buffer.rs +0 -0
  50. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/messages/mod.rs +0 -0
  51. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/messages/poll_messages.rs +0 -0
  52. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/mod.rs +0 -0
  53. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/partitions/create_partitions.rs +0 -0
  54. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/partitions/delete_partitions.rs +0 -0
  55. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/partitions/mod.rs +0 -0
  56. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/personal_access_tokens/create_personal_access_token.rs +0 -0
  57. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/personal_access_tokens/delete_personal_access_token.rs +0 -0
  58. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/personal_access_tokens/get_personal_access_tokens.rs +0 -0
  59. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/personal_access_tokens/login_with_personal_access_token.rs +0 -0
  60. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/personal_access_tokens/mod.rs +0 -0
  61. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/segments/delete_segments.rs +0 -0
  62. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/segments/mod.rs +0 -0
  63. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/streams/create_stream.rs +0 -0
  64. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/streams/delete_stream.rs +0 -0
  65. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/streams/get_stream.rs +0 -0
  66. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/streams/get_streams.rs +0 -0
  67. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/streams/mod.rs +0 -0
  68. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/streams/purge_stream.rs +0 -0
  69. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/streams/update_stream.rs +0 -0
  70. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/system/get_client.rs +0 -0
  71. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/system/get_clients.rs +0 -0
  72. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/system/get_cluster_metadata.rs +0 -0
  73. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/system/get_me.rs +0 -0
  74. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/system/get_snapshot.rs +0 -0
  75. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/system/get_stats.rs +0 -0
  76. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/system/mod.rs +0 -0
  77. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/system/ping.rs +0 -0
  78. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/topics/create_topic.rs +0 -0
  79. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/topics/delete_topic.rs +0 -0
  80. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/topics/get_topic.rs +0 -0
  81. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/topics/get_topics.rs +0 -0
  82. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/topics/mod.rs +0 -0
  83. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/topics/purge_topic.rs +0 -0
  84. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/topics/update_topic.rs +0 -0
  85. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/users/change_password.rs +0 -0
  86. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/users/create_user.rs +0 -0
  87. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/users/defaults.rs +0 -0
  88. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/users/delete_user.rs +0 -0
  89. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/users/get_user.rs +0 -0
  90. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/users/get_users.rs +0 -0
  91. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/users/login_user.rs +0 -0
  92. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/users/logout_user.rs +0 -0
  93. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/users/mod.rs +0 -0
  94. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/users/update_permissions.rs +0 -0
  95. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/commands/users/update_user.rs +0 -0
  96. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/deduplication/message_deduplicator.rs +0 -0
  97. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/deduplication/mod.rs +0 -0
  98. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/error/client_error.rs +0 -0
  99. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/error/iggy_error.rs +0 -0
  100. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/error/mod.rs +0 -0
  101. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/locking/mod.rs +0 -0
  102. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/locking/tokio_lock.rs +0 -0
  103. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/macros.rs +0 -0
  104. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/sender/mod.rs +0 -0
  105. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/sender/quic_sender.rs +0 -0
  106. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/sender/tcp_sender.rs +0 -0
  107. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/sender/tcp_tls_sender.rs +0 -0
  108. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/sender/websocket_sender.rs +0 -0
  109. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/sender/websocket_tls_sender.rs +0 -0
  110. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/sharding/local_idx.rs +0 -0
  111. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/sharding/mod.rs +0 -0
  112. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/sharding/namespace.rs +0 -0
  113. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/sharding/partition_location.rs +0 -0
  114. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/sharding/shard_id.rs +0 -0
  115. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_auth.rs +0 -0
  116. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_client.rs +0 -0
  117. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_impls/cluster.rs +0 -0
  118. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_impls/consumer_groups.rs +0 -0
  119. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_impls/consumer_offsets.rs +0 -0
  120. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_impls/messages.rs +0 -0
  121. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_impls/mod.rs +0 -0
  122. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_impls/partitions.rs +0 -0
  123. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_impls/personal_access_tokens.rs +0 -0
  124. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_impls/segments.rs +0 -0
  125. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_impls/streams.rs +0 -0
  126. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_impls/system.rs +0 -0
  127. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_impls/topics.rs +0 -0
  128. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_impls/users.rs +0 -0
  129. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/binary_transport.rs +0 -0
  130. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/bytes_serializable.rs +0 -0
  131. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/client.rs +0 -0
  132. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/cluster_client.rs +0 -0
  133. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/consumer_group_client.rs +0 -0
  134. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/consumer_offset_client.rs +0 -0
  135. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/message_client.rs +0 -0
  136. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/mod.rs +0 -0
  137. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/partition_client.rs +0 -0
  138. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/partitioner.rs +0 -0
  139. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/personal_access_token_client.rs +0 -0
  140. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/segment_client.rs +0 -0
  141. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/sizeable.rs +0 -0
  142. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/stream_client.rs +0 -0
  143. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/system_client.rs +0 -0
  144. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/topic_client.rs +0 -0
  145. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/user_client.rs +0 -0
  146. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/traits/validatable.rs +0 -0
  147. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/args/mod.rs +0 -0
  148. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/client/client_info.rs +0 -0
  149. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/client/mod.rs +0 -0
  150. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/client_state/mod.rs +0 -0
  151. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/cluster/metadata.rs +0 -0
  152. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/cluster/mod.rs +0 -0
  153. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/cluster/node.rs +0 -0
  154. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/cluster/role.rs +0 -0
  155. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/cluster/status.rs +0 -0
  156. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/cluster/transport_endpoints.rs +0 -0
  157. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/command/mod.rs +0 -0
  158. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/compression/compression_algorithm.rs +0 -0
  159. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/compression/mod.rs +0 -0
  160. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/auth_config/auto_login.rs +0 -0
  161. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/auth_config/connection_string.rs +0 -0
  162. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/auth_config/connection_string_options.rs +0 -0
  163. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/auth_config/credentials.rs +0 -0
  164. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/auth_config/mod.rs +0 -0
  165. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/http_config/http_client_config.rs +0 -0
  166. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/http_config/http_client_config_builder.rs +0 -0
  167. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/http_config/http_connection_string_options.rs +0 -0
  168. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/http_config/mod.rs +0 -0
  169. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/mod.rs +0 -0
  170. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/quic_config/mod.rs +0 -0
  171. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/quic_config/quic_client_config.rs +0 -0
  172. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/quic_config/quic_client_config_builder.rs +0 -0
  173. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/quic_config/quic_client_reconnection_config.rs +0 -0
  174. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/quic_config/quic_connection_string_options.rs +0 -0
  175. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/tcp_config/mod.rs +0 -0
  176. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/tcp_config/tcp_client_config.rs +0 -0
  177. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/tcp_config/tcp_client_config_builder.rs +0 -0
  178. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/tcp_config/tcp_client_reconnection_config.rs +0 -0
  179. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/tcp_config/tcp_connection_string_options.rs +0 -0
  180. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/transport.rs +0 -0
  181. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/websocket_config/mod.rs +0 -0
  182. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/websocket_config/websocket_client_config.rs +0 -0
  183. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/websocket_config/websocket_client_config_builder.rs +0 -0
  184. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/websocket_config/websocket_client_reconnection_config.rs +0 -0
  185. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/configuration/websocket_config/websocket_connection_string_options.rs +0 -0
  186. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/consumer/consumer_group.rs +0 -0
  187. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/consumer/consumer_group_id.rs +0 -0
  188. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/consumer/consumer_group_offsets.rs +0 -0
  189. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/consumer/consumer_kind.rs +0 -0
  190. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/consumer/consumer_offset.rs +0 -0
  191. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/consumer/consumer_offset_info.rs +0 -0
  192. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/consumer/consumer_offsets.rs +0 -0
  193. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/consumer/mod.rs +0 -0
  194. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/diagnostic/diagnostic_event.rs +0 -0
  195. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/diagnostic/mod.rs +0 -0
  196. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/either.rs +0 -0
  197. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/identifier/mod.rs +0 -0
  198. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/in_flight.rs +0 -0
  199. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/index.rs +0 -0
  200. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/index_view.rs +0 -0
  201. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/indexes.rs +0 -0
  202. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/indexes_mut.rs +0 -0
  203. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/message_boundaries.rs +0 -0
  204. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/message_header.rs +0 -0
  205. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/message_header_view.rs +0 -0
  206. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/message_header_view_mut.rs +0 -0
  207. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/message_view.rs +0 -0
  208. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/message_view_mut.rs +0 -0
  209. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/messages_batch.rs +0 -0
  210. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/mod.rs +0 -0
  211. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/partitioning.rs +0 -0
  212. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/partitioning_kind.rs +0 -0
  213. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/poll_metadata.rs +0 -0
  214. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/polled_messages.rs +0 -0
  215. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/polling_kind.rs +0 -0
  216. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/polling_strategy.rs +0 -0
  217. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/message/user_headers.rs +0 -0
  218. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/partition/mod.rs +0 -0
  219. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/permissions/mod.rs +0 -0
  220. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/permissions/permissions_global.rs +0 -0
  221. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/personal_access_tokens/mod.rs +0 -0
  222. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/segment_storage/index_writer.rs +0 -0
  223. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/segment_storage/messages_writer.rs +0 -0
  224. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/segment_storage/mod.rs +0 -0
  225. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/snapshot/mod.rs +0 -0
  226. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/stats/mod.rs +0 -0
  227. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/stream/mod.rs +0 -0
  228. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/streaming_stats.rs +0 -0
  229. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/topic/mod.rs +0 -0
  230. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/user/mod.rs +0 -0
  231. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/user/user_info.rs +0 -0
  232. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/types/user/user_status.rs +0 -0
  233. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/byte_size.rs +0 -0
  234. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/checksum.rs +0 -0
  235. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/duration.rs +0 -0
  236. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/expiry.rs +0 -0
  237. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/hash.rs +0 -0
  238. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/mod.rs +0 -0
  239. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/personal_access_token_expiry.rs +0 -0
  240. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/random_id.rs +0 -0
  241. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/serde_secret.rs +0 -0
  242. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/text.rs +0 -0
  243. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/timestamp.rs +0 -0
  244. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/topic_size.rs +0 -0
  245. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/common/src/utils/versioning.rs +0 -0
  246. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/README.md +0 -0
  247. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/binary/mod.rs +0 -0
  248. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_provider.rs +0 -0
  249. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/binary_client.rs +0 -0
  250. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/binary_cluster_client.rs +0 -0
  251. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/binary_consumer_group_client.rs +0 -0
  252. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/binary_consumer_offset_client.rs +0 -0
  253. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/binary_message_client.rs +0 -0
  254. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/binary_partition_client.rs +0 -0
  255. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/binary_personal_access_token_client.rs +0 -0
  256. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/binary_segment_client.rs +0 -0
  257. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/binary_stream_client.rs +0 -0
  258. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/binary_system_client.rs +0 -0
  259. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/binary_topic_client.rs +0 -0
  260. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/binary_user_client.rs +0 -0
  261. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/client_wrapper.rs +0 -0
  262. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/connection_info.rs +0 -0
  263. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/client_wrappers/mod.rs +0 -0
  264. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/binary_cluster.rs +0 -0
  265. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/binary_consumer_group.rs +0 -0
  266. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/binary_consumer_offset.rs +0 -0
  267. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/binary_partitions.rs +0 -0
  268. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/binary_personal_access_tokens.rs +0 -0
  269. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/binary_segments.rs +0 -0
  270. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/binary_streams.rs +0 -0
  271. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/binary_system.rs +0 -0
  272. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/binary_topics.rs +0 -0
  273. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/binary_users.rs +0 -0
  274. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/client.rs +0 -0
  275. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/client_builder.rs +0 -0
  276. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/consumer_builder.rs +0 -0
  277. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/mod.rs +0 -0
  278. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/producer_builder.rs +0 -0
  279. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/producer_config.rs +0 -0
  280. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/producer_dispatcher.rs +0 -0
  281. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/producer_error_callback.rs +0 -0
  282. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/clients/producer_sharding.rs +0 -0
  283. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/consumer_ext/consumer_message_ext.rs +0 -0
  284. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/consumer_ext/consumer_message_trait.rs +0 -0
  285. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/consumer_ext/mod.rs +0 -0
  286. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/cluster.rs +0 -0
  287. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/consumer_groups.rs +0 -0
  288. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/consumer_offsets.rs +0 -0
  289. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/http_transport.rs +0 -0
  290. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/messages.rs +0 -0
  291. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/mod.rs +0 -0
  292. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/partitions.rs +0 -0
  293. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/personal_access_tokens.rs +0 -0
  294. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/segments.rs +0 -0
  295. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/streams.rs +0 -0
  296. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/system.rs +0 -0
  297. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/topics.rs +0 -0
  298. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/http/users.rs +0 -0
  299. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/leader_aware.rs +0 -0
  300. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/lib.rs +0 -0
  301. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/prelude.rs +0 -0
  302. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/quic/mod.rs +0 -0
  303. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/quic/quic_client.rs +0 -0
  304. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/quic/skip_server_verification.rs +0 -0
  305. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/stream_builder/build/build_iggy_client.rs +0 -0
  306. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/stream_builder/build/build_iggy_consumer.rs +0 -0
  307. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/stream_builder/build/build_iggy_producer.rs +0 -0
  308. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/stream_builder/build/build_stream_topic.rs +0 -0
  309. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/stream_builder/build/mod.rs +0 -0
  310. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/stream_builder/config/config_iggy_consumer.rs +0 -0
  311. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/stream_builder/config/config_iggy_producer.rs +0 -0
  312. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/stream_builder/config/config_iggy_stream.rs +0 -0
  313. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/stream_builder/config/mod.rs +0 -0
  314. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/stream_builder/iggy_stream.rs +0 -0
  315. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/stream_builder/iggy_stream_consumer.rs +0 -0
  316. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/stream_builder/iggy_stream_producer.rs +0 -0
  317. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/stream_builder/mod.rs +0 -0
  318. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/tcp/mod.rs +0 -0
  319. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/tcp/tcp_client.rs +0 -0
  320. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/tcp/tcp_connection_stream.rs +0 -0
  321. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/tcp/tcp_connection_stream_kind.rs +0 -0
  322. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/tcp/tcp_stream.rs +0 -0
  323. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/tcp/tcp_tls_connection_stream.rs +0 -0
  324. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/tcp/tcp_tls_verifier.rs +0 -0
  325. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/websocket/mod.rs +0 -0
  326. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/websocket/websocket_client.rs +0 -0
  327. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/websocket/websocket_connection_stream.rs +0 -0
  328. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/websocket/websocket_stream.rs +0 -0
  329. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/websocket/websocket_stream_kind.rs +0 -0
  330. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/core/sdk/src/websocket/websocket_tls_connection_stream.rs +0 -0
  331. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/.devcontainer/Dockerfile +0 -0
  332. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/.devcontainer/devcontainer.json +0 -0
  333. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/.devcontainer/docker-compose.yml +0 -0
  334. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/.gitignore +0 -0
  335. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/Dockerfile.test +0 -0
  336. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/LICENSE +0 -0
  337. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/NOTICE +0 -0
  338. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/README.md +0 -0
  339. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/apache_iggy.pyi +0 -0
  340. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/docker-compose.test.yml +0 -0
  341. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/scripts/test.sh +0 -0
  342. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/src/bin/stub_gen.rs +0 -0
  343. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/src/client.rs +0 -0
  344. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/src/consumer.rs +0 -0
  345. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/src/identifier.rs +0 -0
  346. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/src/iterator.rs +0 -0
  347. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/src/lib.rs +0 -0
  348. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/src/receive_message.rs +0 -0
  349. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/src/send_message.rs +0 -0
  350. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/src/stream.rs +0 -0
  351. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/src/topic.rs +0 -0
  352. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/tests/__init__.py +0 -0
  353. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/tests/conftest.py +0 -0
  354. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/tests/test_iggy_sdk.py +0 -0
  355. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/tests/test_tls.py +0 -0
  356. {apache_iggy-0.7.4.dev1 → apache_iggy-0.7.5.dev1}/foreign/python/tests/utils.py +0 -0
@@ -66,6 +66,7 @@ actix-files = "0.6.10"
66
66
  actix-web = "4.13.0"
67
67
  aes-gcm = "0.10.3"
68
68
  ahash = { version = "0.8.12", features = ["serde"] }
69
+ aligned-vec = "0.6.4"
69
70
  anyhow = "1.0.102"
70
71
  argon2 = "0.5.3"
71
72
  arrow = "57.3.0"
@@ -134,7 +135,6 @@ dirs = "6.0.0"
134
135
  dlopen2 = "0.8.2"
135
136
  dotenvy = "0.15.7"
136
137
  elasticsearch = { version = "9.1.0-alpha.1", features = ["rustls-tls"], default-features = false }
137
- enum_dispatch = "0.3.13"
138
138
  enumset = "1.1"
139
139
  env_logger = "0.11.9"
140
140
  err_trail = { version = "0.11.0", features = ["tracing"] }
@@ -160,11 +160,11 @@ hwlocality = "1.0.0-alpha.11"
160
160
  iceberg = "0.9.0"
161
161
  iceberg-catalog-rest = "0.9.0"
162
162
  iceberg-storage-opendal = "0.9.0"
163
- iggy = { path = "core/sdk", version = "0.9.3-edge.1" }
164
- iggy-cli = { path = "core/cli", version = "0.11.3-edge.1" }
165
- iggy_binary_protocol = { path = "core/binary_protocol", version = "0.9.3-edge.1" }
166
- iggy_common = { path = "core/common", version = "0.9.3-edge.1" }
167
- iggy_connector_sdk = { path = "core/connectors/sdk", version = "0.2.1-edge.1" }
163
+ iggy = { path = "core/sdk", version = "0.9.5-edge.1" }
164
+ iggy-cli = { path = "core/cli", version = "0.12.1-edge.1" }
165
+ iggy_binary_protocol = { path = "core/binary_protocol", version = "0.9.5-edge.1" }
166
+ iggy_common = { path = "core/common", version = "0.9.5-edge.1" }
167
+ iggy_connector_sdk = { path = "core/connectors/sdk", version = "0.2.2-edge.1" }
168
168
  integration = { path = "core/integration" }
169
169
  journal = { path = "core/journal" }
170
170
  js-sys = "0.3"
@@ -183,7 +183,7 @@ mime_guess = "2.0"
183
183
  mockall = "0.14.0"
184
184
  moka = { version = "0.12.14", features = ["future"] }
185
185
  mongodb = { version = "3.5.2", features = ["rustls-tls"] }
186
- nix = { version = "0.31.2", features = ["fs", "resource", "sched"] }
186
+ nix = { version = "0.31.2", features = ["feature", "fs", "resource", "sched"] }
187
187
  nonzero_lit = "0.1.2"
188
188
  notify = "8.2.0"
189
189
  octocrab = "0.49.5"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-iggy
3
- Version: 0.7.4.dev1
3
+ Version: 0.7.5.dev1
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: Apache Software License
@@ -16,7 +16,7 @@
16
16
  # under the License.
17
17
  [package]
18
18
  name = "iggy_common"
19
- version = "0.9.3-edge.1"
19
+ version = "0.9.5-edge.1"
20
20
  description = "Iggy is the persistent message streaming platform written in Rust, supporting QUIC, TCP and HTTP transport protocols, capable of processing millions of messages per second."
21
21
  edition = "2024"
22
22
  license = "Apache-2.0"
@@ -30,13 +30,13 @@ readme = "README.md"
30
30
  [dependencies]
31
31
  aes-gcm = { workspace = true }
32
32
  ahash = { workspace = true }
33
+ aligned-vec = { workspace = true }
33
34
  async-broadcast = { workspace = true }
34
35
  async-trait = { workspace = true }
35
36
  base64 = { workspace = true }
36
37
  blake3 = { workspace = true }
37
38
  bon = { workspace = true }
38
39
  byte-unit = { workspace = true }
39
- bytemuck = { workspace = true }
40
40
  bytes = { workspace = true }
41
41
  chrono = { workspace = true }
42
42
  clap = { workspace = true }
@@ -44,7 +44,6 @@ comfy-table = { workspace = true }
44
44
  compio = { workspace = true }
45
45
  crossbeam = { workspace = true }
46
46
  derive_more = { workspace = true }
47
- enumset = { workspace = true }
48
47
  err_trail = { workspace = true }
49
48
  human-repr = { workspace = true }
50
49
  humantime = { workspace = true }
@@ -16,11 +16,15 @@
16
16
  * under the License.
17
17
  */
18
18
 
19
- use super::memory_pool::{BytesMutExt, memory_pool};
20
- use bytes::{Buf, BufMut, Bytes, BytesMut};
19
+ use crate::alloc::memory_pool::{ALIGNMENT, AlignedBuffer};
20
+
21
+ use super::memory_pool::{AlignedBufferExt, memory_pool};
22
+ use bytes::Bytes;
21
23
  use compio::buf::{IoBuf, IoBufMut, SetLen};
22
- use std::mem::MaybeUninit;
23
- use std::ops::{Deref, DerefMut};
24
+ use std::{
25
+ mem::MaybeUninit,
26
+ ops::{Deref, DerefMut},
27
+ };
24
28
 
25
29
  /// A buffer wrapper that participates in memory pooling.
26
30
  ///
@@ -32,7 +36,7 @@ pub struct PooledBuffer {
32
36
  from_pool: bool,
33
37
  original_capacity: usize,
34
38
  original_bucket_idx: Option<usize>,
35
- inner: BytesMut,
39
+ inner: AlignedBuffer,
36
40
  }
37
41
 
38
42
  impl Default for PooledBuffer {
@@ -48,13 +52,21 @@ impl PooledBuffer {
48
52
  ///
49
53
  /// * `capacity` - The capacity of the buffer
50
54
  pub fn with_capacity(capacity: usize) -> Self {
51
- let (buffer, was_pool_allocated) = memory_pool().acquire_buffer(capacity);
55
+ let (buffer, was_pool_allocated) = memory_pool().acquire_buffer(capacity.max(ALIGNMENT));
52
56
  let original_capacity = buffer.capacity();
53
57
  let original_bucket_idx = if was_pool_allocated {
54
58
  memory_pool().best_fit(original_capacity)
55
59
  } else {
56
60
  None
57
61
  };
62
+
63
+ debug_assert_eq!(
64
+ buffer.as_ptr() as usize % ALIGNMENT,
65
+ 0,
66
+ "PooledBuffer not aligned to {} bytes",
67
+ ALIGNMENT
68
+ );
69
+
58
70
  Self {
59
71
  from_pool: was_pool_allocated,
60
72
  original_capacity,
@@ -63,12 +75,12 @@ impl PooledBuffer {
63
75
  }
64
76
  }
65
77
 
66
- /// Creates a new pooled buffer from an existing `BytesMut`.
78
+ /// Creates a new pooled buffer from an existing `AlignedBuffer`.
67
79
  ///
68
80
  /// # Arguments
69
81
  ///
70
- /// * `existing` - The existing `BytesMut` buffer
71
- pub fn from_existing(existing: BytesMut) -> Self {
82
+ /// * `existing` - The existing `AlignedBuffer` buffer
83
+ pub fn from_existing(existing: AlignedBuffer) -> Self {
72
84
  Self {
73
85
  from_pool: false,
74
86
  original_capacity: existing.capacity(),
@@ -83,7 +95,7 @@ impl PooledBuffer {
83
95
  from_pool: false,
84
96
  original_capacity: 0,
85
97
  original_bucket_idx: None,
86
- inner: BytesMut::new(),
98
+ inner: AlignedBuffer::new(ALIGNMENT),
87
99
  }
88
100
  }
89
101
 
@@ -127,6 +139,52 @@ impl PooledBuffer {
127
139
  }
128
140
  }
129
141
 
142
+ /// Split the buffer at given position, returning a new PooledBuffer
143
+ /// containing byte [0, at) and leaving [at, len)
144
+ ///
145
+ /// # Panic
146
+ /// Panics if at > len
147
+ pub fn split_to(&mut self, at: usize) -> PooledBuffer {
148
+ assert!(
149
+ at <= self.len(),
150
+ "split_to out of bounds: at={}, len={}",
151
+ at,
152
+ self.len()
153
+ );
154
+
155
+ let mut new_buff = PooledBuffer::with_capacity(at);
156
+ new_buff.inner.extend_from_slice(&self.inner[..at]);
157
+
158
+ // SAFETY:
159
+ // - `self.inner.as_ptr().add(at)` is valid for `new_len` because
160
+ // `at + new_len === old_len <= cap`. Similar with `self.inner.as_mut_ptr()`
161
+ //
162
+ // - source range is `[at, at + new_len)` and the destination is
163
+ // `[0, new_len)`. These ranges do not overlap when `at > 0`.
164
+ // - when `at == 0`, the operation is noop
165
+ let new_len = self.len() - at;
166
+ if new_len > 0 {
167
+ unsafe {
168
+ // move [at..] to [0..]
169
+ std::ptr::copy(
170
+ self.inner.as_ptr().add(at),
171
+ self.inner.as_mut_ptr(),
172
+ new_len,
173
+ );
174
+
175
+ self.inner.set_len(new_len);
176
+ }
177
+ } else {
178
+ self.inner.clear();
179
+ }
180
+
181
+ new_buff
182
+ }
183
+
184
+ pub fn put<T: AsRef<[u8]>>(&mut self, src: T) {
185
+ self.extend_from_slice(src.as_ref());
186
+ }
187
+
130
188
  /// Wrapper for extend_from_slice which might cause resize
131
189
  pub fn extend_from_slice(&mut self, extend_from: &[u8]) {
132
190
  let before_cap = self.inner.capacity();
@@ -140,7 +198,9 @@ impl PooledBuffer {
140
198
  /// Wrapper for put_bytes which might cause resize
141
199
  pub fn put_bytes(&mut self, byte: u8, len: usize) {
142
200
  let before_cap = self.inner.capacity();
143
- self.inner.put_bytes(byte, len);
201
+
202
+ let start = self.inner.len();
203
+ self.inner.resize(start + len, byte);
144
204
 
145
205
  if self.inner.capacity() != before_cap {
146
206
  self.check_for_resize();
@@ -149,18 +209,18 @@ impl PooledBuffer {
149
209
 
150
210
  /// Wrapper for put_slice which might cause resize
151
211
  pub fn put_slice(&mut self, src: &[u8]) {
152
- let before_cap = self.inner.capacity();
153
- self.inner.put_slice(src);
154
-
155
- if self.inner.capacity() != before_cap {
156
- self.check_for_resize();
157
- }
212
+ self.extend_from_slice(src);
213
+ // let before_cap = self.inner.capacity();
214
+ //
215
+ // if self.inner.capacity() != before_cap {
216
+ // self.check_for_resize();
217
+ // }
158
218
  }
159
219
 
160
220
  /// Wrapper for put_u32_le which might cause resize
161
221
  pub fn put_u32_le(&mut self, value: u32) {
162
222
  let before_cap = self.inner.capacity();
163
- self.inner.put_u32_le(value);
223
+ self.inner.extend_from_slice(&value.to_le_bytes());
164
224
 
165
225
  if self.inner.capacity() != before_cap {
166
226
  self.check_for_resize();
@@ -170,7 +230,7 @@ impl PooledBuffer {
170
230
  /// Wrapper for put_u64_le which might cause resize
171
231
  pub fn put_u64_le(&mut self, value: u64) {
172
232
  let before_cap = self.inner.capacity();
173
- self.inner.put_u64_le(value);
233
+ self.inner.extend_from_slice(&value.to_le_bytes());
174
234
 
175
235
  if self.inner.capacity() != before_cap {
176
236
  self.check_for_resize();
@@ -192,11 +252,12 @@ impl PooledBuffer {
192
252
  self.inner.is_empty()
193
253
  }
194
254
 
195
- /// Consumes the PooledBuffer and returns the inner BytesMut.
255
+ /// Consumes the PooledBuffer and returns the inner AlignedBuffer.
196
256
  /// Note: This bypasses pool return logic, use with caution.
197
- pub fn into_inner(self) -> BytesMut {
257
+ pub fn into_inner(self) -> AlignedBuffer {
198
258
  let mut this = std::mem::ManuallyDrop::new(self);
199
- std::mem::take(&mut this.inner)
259
+
260
+ std::mem::replace(&mut this.inner, AlignedBuffer::new(ALIGNMENT))
200
261
  }
201
262
 
202
263
  /// Freezes the buffer, converting it to an immutable `Bytes`.
@@ -205,24 +266,26 @@ impl PooledBuffer {
205
266
  /// return memory to the pool on drop (the frozen Bytes owns the allocation).
206
267
  /// The returned `Bytes` is Arc-backed, allowing cheap clones.
207
268
  pub fn freeze(&mut self) -> Bytes {
208
- // Decrement pool counter since memory is transferred to Bytes
209
- // and won't be returned to the pool.
269
+ let buf = std::mem::replace(&mut self.inner, AlignedBuffer::new(ALIGNMENT));
270
+
271
+ // Update pool accounting
210
272
  if self.from_pool
211
273
  && let Some(bucket_idx) = self.original_bucket_idx
212
274
  {
213
275
  memory_pool().dec_bucket_in_use(bucket_idx);
214
276
  }
215
-
216
- let inner = std::mem::take(&mut self.inner);
217
277
  self.from_pool = false;
218
278
  self.original_capacity = 0;
219
279
  self.original_bucket_idx = None;
220
- inner.freeze()
280
+
281
+ // Zero copy: Bytes takes ownership of the AlignedBuffer
282
+ // and will drop it when refcount reaches zero
283
+ Bytes::from_owner(buf)
221
284
  }
222
285
  }
223
286
 
224
287
  impl Deref for PooledBuffer {
225
- type Target = BytesMut;
288
+ type Target = AlignedBuffer;
226
289
 
227
290
  fn deref(&self) -> &Self::Target {
228
291
  &self.inner
@@ -238,7 +301,7 @@ impl DerefMut for PooledBuffer {
238
301
  impl Drop for PooledBuffer {
239
302
  fn drop(&mut self) {
240
303
  if self.from_pool {
241
- let buf = std::mem::take(&mut self.inner);
304
+ let buf = std::mem::replace(&mut self.inner, AlignedBuffer::new(ALIGNMENT));
242
305
  buf.return_to_pool(self.original_capacity, true);
243
306
  }
244
307
  }
@@ -252,27 +315,15 @@ impl From<&[u8]> for PooledBuffer {
252
315
  }
253
316
  }
254
317
 
255
- impl From<BytesMut> for PooledBuffer {
256
- fn from(bytes: BytesMut) -> Self {
257
- Self::from_existing(bytes)
318
+ impl AsRef<[u8]> for PooledBuffer {
319
+ fn as_ref(&self) -> &[u8] {
320
+ &self.inner
258
321
  }
259
322
  }
260
323
 
261
- impl Buf for PooledBuffer {
262
- fn remaining(&self) -> usize {
263
- self.inner.remaining()
264
- }
265
-
266
- fn chunk(&self) -> &[u8] {
267
- self.inner.chunk()
268
- }
269
-
270
- fn advance(&mut self, cnt: usize) {
271
- Buf::advance(&mut self.inner, cnt)
272
- }
273
-
274
- fn chunks_vectored<'t>(&'t self, dst: &mut [std::io::IoSlice<'t>]) -> usize {
275
- self.inner.chunks_vectored(dst)
324
+ impl From<AlignedBuffer> for PooledBuffer {
325
+ fn from(buffer: AlignedBuffer) -> Self {
326
+ Self::from_existing(buffer)
276
327
  }
277
328
  }
278
329
 
@@ -16,7 +16,7 @@
16
16
  * under the License.
17
17
  */
18
18
 
19
- use bytes::BytesMut;
19
+ use aligned_vec::{AVec, ConstAlign};
20
20
  use crossbeam::queue::ArrayQueue;
21
21
  use human_repr::HumanCount;
22
22
  use once_cell::sync::OnceCell;
@@ -24,18 +24,17 @@ use std::sync::Arc;
24
24
  use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
25
25
  use tracing::{info, trace, warn};
26
26
 
27
+ pub const ALIGNMENT: usize = 4096;
28
+ pub type AlignedBuffer = AVec<u8, ConstAlign<4096>>;
29
+
27
30
  /// Global memory pool instance. Use `memory_pool()` to access it.
28
31
  pub static MEMORY_POOL: OnceCell<MemoryPool> = OnceCell::new();
29
32
 
30
33
  /// Total number of distinct bucket sizes.
31
- const NUM_BUCKETS: usize = 32;
34
+ const NUM_BUCKETS: usize = 28;
32
35
 
33
36
  /// Array of bucket sizes in ascending order. Each entry is a distinct buffer size (in bytes).
34
37
  const BUCKET_SIZES: [usize; NUM_BUCKETS] = [
35
- 256,
36
- 512,
37
- 1024,
38
- 2 * 1024,
39
38
  4 * 1024,
40
39
  8 * 1024,
41
40
  16 * 1024,
@@ -87,7 +86,7 @@ pub struct MemoryPoolConfigOther {
87
86
  pub bucket_capacity: u32,
88
87
  }
89
88
 
90
- /// A memory pool that maintains fixed-size buckets for reusing `BytesMut` buffers.
89
+ /// A memory pool that maintains fixed-size buckets for reusing `AlignedBuffer` buffers.
91
90
  ///
92
91
  /// Each bucket corresponds to a particular size in `BUCKET_SIZES`. The pool tracks:
93
92
  /// - Buffers currently in use (`in_use`)
@@ -109,7 +108,7 @@ pub struct MemoryPool {
109
108
  /// Array of queues for reusable buffers. Each queue can store up to `bucket_capacity` buffers.
110
109
  /// The length of each queue (`buckets[i].len()`) is how many **free** buffers are currently available.
111
110
  /// Free doesn't mean the buffer is allocated, it just means it's not in use.
112
- buckets: [Arc<ArrayQueue<BytesMut>>; NUM_BUCKETS],
111
+ buckets: [Arc<ArrayQueue<AlignedBuffer>>; NUM_BUCKETS],
113
112
 
114
113
  /// Number of buffers **in use** for each bucket size (grow/shrink as they are acquired/released).
115
114
  in_use: [Arc<AtomicUsize>; NUM_BUCKETS],
@@ -175,29 +174,47 @@ impl MemoryPool {
175
174
  MEMORY_POOL.get_or_init(|| MemoryPool::new(is_enabled, memory_limit, bucket_capacity));
176
175
  }
177
176
 
178
- /// Acquire a `BytesMut` buffer with at least `capacity` bytes.
177
+ /// Acquire a `AlignedBuffer` buffer with at least `capacity` bytes.
179
178
  ///
180
179
  /// - If a bucket can fit `capacity`, try to pop from its free buffer queue; otherwise create a new buffer.
181
180
  /// - If `memory_limit` would be exceeded, allocate outside the pool.
182
181
  ///
183
182
  /// Returns a tuple of (buffer, was_pool_allocated) where was_pool_allocated indicates if the buffer
184
183
  /// was allocated from the pool (true) or externally (false).
185
- pub fn acquire_buffer(&self, capacity: usize) -> (BytesMut, bool) {
184
+ pub fn acquire_buffer(&self, capacity: usize) -> (AlignedBuffer, bool) {
186
185
  if !self.is_enabled {
187
- return (BytesMut::with_capacity(capacity), false);
186
+ return (allocate_aligned_buffer(capacity), false);
188
187
  }
189
188
 
190
189
  let current = self.pool_current_size();
191
190
 
192
191
  match self.best_fit(capacity) {
193
192
  Some(idx) => {
193
+ let new_size = BUCKET_SIZES[idx];
194
+
194
195
  if let Some(mut buf) = self.buckets[idx].pop() {
195
196
  buf.clear();
197
+
198
+ if buf.capacity() < capacity {
199
+ warn!(
200
+ "Pooled buffer too small! bucket[{}]={}, buf.capacity()={}, requested={}. Dropping and allocating new.",
201
+ idx,
202
+ new_size,
203
+ buf.capacity(),
204
+ capacity
205
+ );
206
+ drop(buf);
207
+
208
+ let new_buf = allocate_aligned_buffer(new_size);
209
+ self.inc_bucket_alloc(idx);
210
+ self.inc_bucket_in_use(idx);
211
+ return (new_buf, true);
212
+ }
213
+
196
214
  self.inc_bucket_in_use(idx);
197
215
  return (buf, true);
198
216
  }
199
217
 
200
- let new_size = BUCKET_SIZES[idx];
201
218
  if current + new_size > self.memory_limit {
202
219
  self.set_capacity_warning(true);
203
220
  trace!(
@@ -205,12 +222,12 @@ impl MemoryPool {
205
222
  new_size, current, self.memory_limit
206
223
  );
207
224
  self.inc_external_allocations();
208
- return (BytesMut::with_capacity(new_size), false);
225
+ return (allocate_aligned_buffer(new_size), false);
209
226
  }
210
227
 
211
228
  self.inc_bucket_alloc(idx);
212
229
  self.inc_bucket_in_use(idx);
213
- (BytesMut::with_capacity(new_size), true)
230
+ (allocate_aligned_buffer(new_size), true)
214
231
  }
215
232
  None => {
216
233
  if current + capacity > self.memory_limit {
@@ -219,16 +236,16 @@ impl MemoryPool {
219
236
  capacity, current, self.memory_limit
220
237
  );
221
238
  self.inc_external_allocations();
222
- return (BytesMut::with_capacity(capacity), false);
239
+ return (allocate_aligned_buffer(capacity), false);
223
240
  }
224
241
 
225
242
  self.inc_external_allocations();
226
- (BytesMut::with_capacity(capacity), false)
243
+ (allocate_aligned_buffer(capacity), false)
227
244
  }
228
245
  }
229
246
  }
230
247
 
231
- /// Return a `BytesMut` buffer previously acquired from the pool.
248
+ /// Return a `AlignedBuffer` buffer previously acquired from the pool.
232
249
  ///
233
250
  /// - If `current_capacity` differs from `original_capacity`, increments `resize_events`.
234
251
  /// - If a matching bucket exists, place it back in that bucket's queue (if space is available).
@@ -236,7 +253,7 @@ impl MemoryPool {
236
253
  /// - The `was_pool_allocated` flag indicates if this buffer was originally allocated from the pool.
237
254
  pub fn release_buffer(
238
255
  &self,
239
- buffer: BytesMut,
256
+ buffer: AlignedBuffer,
240
257
  original_capacity: usize,
241
258
  was_pool_allocated: bool,
242
259
  ) {
@@ -448,16 +465,21 @@ impl MemoryPool {
448
465
 
449
466
  /// Return a buffer to the pool by calling `release_buffer` with the original capacity.
450
467
  /// This extension trait makes it easy to do `some_bytes.return_to_pool(orig_cap, was_pool_allocated)`.
451
- pub trait BytesMutExt {
468
+ pub trait AlignedBufferExt {
452
469
  fn return_to_pool(self, original_capacity: usize, was_pool_allocated: bool);
453
470
  }
454
471
 
455
- impl BytesMutExt for BytesMut {
472
+ impl AlignedBufferExt for AlignedBuffer {
456
473
  fn return_to_pool(self, original_capacity: usize, was_pool_allocated: bool) {
457
474
  memory_pool().release_buffer(self, original_capacity, was_pool_allocated);
458
475
  }
459
476
  }
460
477
 
478
+ fn allocate_aligned_buffer(capacity: usize) -> AlignedBuffer {
479
+ let aligned_capacity = capacity.next_multiple_of(ALIGNMENT).max(ALIGNMENT);
480
+ AlignedBuffer::with_capacity(ALIGNMENT, aligned_capacity)
481
+ }
482
+
461
483
  /// Convert a size in bytes to a string like "8KiB" or "2MiB".
462
484
  fn size_str(size: usize) -> String {
463
485
  if size >= 1024 * 1024 {
@@ -203,12 +203,19 @@ impl Serialize for SendMessages {
203
203
  let payload_base64 = BASE64.encode(msg_view.payload());
204
204
  map.insert("payload", serde_json::to_value(payload_base64).unwrap());
205
205
 
206
- if let Ok(Some(headers)) = msg_view.user_headers_map() {
207
- let entries: Vec<HeaderEntry> = headers
208
- .into_iter()
209
- .map(|(k, v)| HeaderEntry { key: k, value: v })
210
- .collect();
211
- map.insert("user_headers", serde_json::to_value(&entries).unwrap());
206
+ match msg_view.user_headers_map() {
207
+ Ok(Some(headers)) => {
208
+ let entries: Vec<HeaderEntry> = headers
209
+ .into_iter()
210
+ .map(|(k, v)| HeaderEntry { key: k, value: v })
211
+ .collect();
212
+ map.insert("user_headers", serde_json::to_value(&entries).unwrap());
213
+ }
214
+ _ if msg_view.user_headers().is_some() => {
215
+ let raw_base64 = BASE64.encode(msg_view.user_headers().unwrap());
216
+ map.insert("user_headers", serde_json::to_value(raw_base64).unwrap());
217
+ }
218
+ _ => {}
212
219
  }
213
220
 
214
221
  map
@@ -310,29 +317,38 @@ impl<'de> Deserialize<'de> for SendMessages {
310
317
  .decode(payload)
311
318
  .map_err(|_| de::Error::custom("Invalid base64 payload"))?;
312
319
 
313
- let headers_map = if let Some(headers) = msg.get("user_headers") {
314
- if headers.is_null() {
315
- None
316
- } else {
317
- let entries: Vec<HeaderEntry> = serde_json::from_value(
318
- headers.clone(),
319
- )
320
- .map_err(|e| {
321
- de::Error::custom(format!(
322
- "Invalid headers format: {e}"
323
- ))
324
- })?;
325
- let mut map = HashMap::new();
326
- for entry in entries {
327
- map.insert(entry.key, entry.value);
320
+ let (headers_map, raw_headers) =
321
+ if let Some(headers) = msg.get("user_headers") {
322
+ if headers.is_null() {
323
+ (None, None)
324
+ } else if let Some(base64_str) = headers.as_str() {
325
+ // Raw base64-encoded header bytes (e.g. client-side encrypted)
326
+ let raw = BASE64.decode(base64_str).map_err(|e| {
327
+ de::Error::custom(format!(
328
+ "Invalid base64 headers: {e}"
329
+ ))
330
+ })?;
331
+ (None, Some(Bytes::from(raw)))
332
+ } else {
333
+ let entries: Vec<HeaderEntry> = serde_json::from_value(
334
+ headers.clone(),
335
+ )
336
+ .map_err(|e| {
337
+ de::Error::custom(format!(
338
+ "Invalid headers format: {e}"
339
+ ))
340
+ })?;
341
+ let mut map = HashMap::new();
342
+ for entry in entries {
343
+ map.insert(entry.key, entry.value);
344
+ }
345
+ (Some(map), None)
328
346
  }
329
- Some(map)
330
- }
331
- } else {
332
- None
333
- };
347
+ } else {
348
+ (None, None)
349
+ };
334
350
 
335
- let iggy_message = if let Some(headers) = headers_map {
351
+ let mut iggy_message = if let Some(headers) = headers_map {
336
352
  IggyMessage::builder()
337
353
  .id(id)
338
354
  .payload(payload_bytes.into())
@@ -355,6 +371,11 @@ impl<'de> Deserialize<'de> for SendMessages {
355
371
  })?
356
372
  };
357
373
 
374
+ if let Some(raw) = raw_headers {
375
+ iggy_message.header.user_headers_length = raw.len() as u32;
376
+ iggy_message.user_headers = Some(raw);
377
+ }
378
+
358
379
  iggy_messages.push(iggy_message);
359
380
  }
360
381
 
@@ -96,7 +96,6 @@ pub use types::configuration::websocket_config::websocket_client_config::*;
96
96
  pub use types::configuration::websocket_config::websocket_client_config_builder::*;
97
97
  pub use types::configuration::websocket_config::websocket_client_reconnection_config::*;
98
98
  pub use types::configuration::websocket_config::websocket_connection_string_options::*;
99
- pub use types::consensus::*;
100
99
  pub use types::consumer::consumer_group::*;
101
100
  pub use types::consumer::consumer_group_id::*;
102
101
  pub use types::consumer::consumer_group_offsets::*;
@@ -24,7 +24,6 @@ use crate::{
24
24
  Stream, StreamDetails, Topic, TopicDetails, UserInfo, UserInfoDetails, UserStatus,
25
25
  };
26
26
  use bytes::Bytes;
27
- use secrecy::SecretString;
28
27
  use std::collections::HashMap;
29
28
  use std::str::from_utf8;
30
29
 
@@ -508,9 +507,7 @@ pub fn map_raw_pat(payload: Bytes) -> Result<RawPersonalAccessToken, IggyError>
508
507
  let token = from_utf8(&payload[1..1 + token_length as usize])
509
508
  .map_err(|_| IggyError::InvalidUtf8)?
510
509
  .to_string();
511
- Ok(RawPersonalAccessToken {
512
- token: SecretString::from(token),
513
- })
510
+ Ok(RawPersonalAccessToken { token })
514
511
  }
515
512
 
516
513
  pub fn map_client(payload: Bytes) -> Result<ClientInfoDetails, IggyError> {