messagepack 1.0.0

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 (47) hide show
  1. checksums.yaml +7 -0
  2. data/README.adoc +773 -0
  3. data/Rakefile +8 -0
  4. data/docs/Gemfile +7 -0
  5. data/docs/README.md +85 -0
  6. data/docs/_config.yml +137 -0
  7. data/docs/_guides/index.adoc +14 -0
  8. data/docs/_guides/io-streaming.adoc +226 -0
  9. data/docs/_guides/migration.adoc +218 -0
  10. data/docs/_guides/performance.adoc +189 -0
  11. data/docs/_pages/buffer.adoc +85 -0
  12. data/docs/_pages/extension-types.adoc +117 -0
  13. data/docs/_pages/factory-pattern.adoc +115 -0
  14. data/docs/_pages/index.adoc +20 -0
  15. data/docs/_pages/serialization.adoc +159 -0
  16. data/docs/_pages/streaming.adoc +97 -0
  17. data/docs/_pages/symbol-extension.adoc +69 -0
  18. data/docs/_pages/timestamp-extension.adoc +88 -0
  19. data/docs/_references/api.adoc +360 -0
  20. data/docs/_references/extensions.adoc +198 -0
  21. data/docs/_references/format.adoc +301 -0
  22. data/docs/_references/index.adoc +14 -0
  23. data/docs/_tutorials/extension-types.adoc +170 -0
  24. data/docs/_tutorials/getting-started.adoc +165 -0
  25. data/docs/_tutorials/index.adoc +14 -0
  26. data/docs/_tutorials/thread-safety.adoc +157 -0
  27. data/docs/index.adoc +77 -0
  28. data/docs/lychee.toml +42 -0
  29. data/lib/messagepack/bigint.rb +131 -0
  30. data/lib/messagepack/buffer.rb +534 -0
  31. data/lib/messagepack/core_ext.rb +34 -0
  32. data/lib/messagepack/error.rb +24 -0
  33. data/lib/messagepack/extensions/base.rb +55 -0
  34. data/lib/messagepack/extensions/registry.rb +154 -0
  35. data/lib/messagepack/extensions/symbol.rb +38 -0
  36. data/lib/messagepack/extensions/timestamp.rb +110 -0
  37. data/lib/messagepack/extensions/value.rb +38 -0
  38. data/lib/messagepack/factory.rb +349 -0
  39. data/lib/messagepack/format.rb +99 -0
  40. data/lib/messagepack/packer.rb +702 -0
  41. data/lib/messagepack/symbol.rb +4 -0
  42. data/lib/messagepack/time.rb +29 -0
  43. data/lib/messagepack/timestamp.rb +4 -0
  44. data/lib/messagepack/unpacker.rb +1418 -0
  45. data/lib/messagepack/version.rb +5 -0
  46. data/lib/messagepack.rb +81 -0
  47. metadata +94 -0
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Messagepack
4
+ # MessagePack format specification constants
5
+ #
6
+ # See: https://github.com/msgpack/msgpack/blob/master/spec.md
7
+ #
8
+ module Format
9
+ # Format type markers (single-byte)
10
+ NIL = 0xc0
11
+ FALSE = 0xc2
12
+ TRUE = 0xc3
13
+ BIN8 = 0xc4
14
+ BIN16 = 0xc5
15
+ BIN32 = 0xc6
16
+ EXT8 = 0xc7
17
+ EXT16 = 0xc8
18
+ EXT32 = 0xc9
19
+ FLOAT32 = 0xca
20
+ FLOAT64 = 0xcb
21
+ UINT8 = 0xcc
22
+ UINT16 = 0xcd
23
+ UINT32 = 0xce
24
+ UINT64 = 0xcf
25
+ INT8 = 0xd0
26
+ INT16 = 0xd1
27
+ INT32 = 0xd2
28
+ INT64 = 0xd3
29
+ FIXEXT1 = 0xd4
30
+ FIXEXT2 = 0xd5
31
+ FIXEXT4 = 0xd6
32
+ FIXEXT8 = 0xd7
33
+ FIXEXT16 = 0xd8
34
+ STR8 = 0xd9
35
+ STR16 = 0xda
36
+ STR32 = 0xdb
37
+ ARRAY16 = 0xdc
38
+ ARRAY32 = 0xdd
39
+ MAP16 = 0xde
40
+ MAP32 = 0xdf
41
+
42
+ # Range constants for fix formats
43
+ POSITIVE_FIXNUM_MIN = 0x00
44
+ POSITIVE_FIXNUM_MAX = 0x7f
45
+ NEGATIVE_FIXNUM_MIN = 0xe0 # represents -32
46
+ NEGATIVE_FIXNUM_MAX = 0xff # represents -1
47
+ FIXARRAY_MIN = 0x90
48
+ FIXARRAY_MAX = 0x9f
49
+ FIXMAP_MIN = 0x80
50
+ FIXMAP_MAX = 0x8f
51
+ FIXRAW_MIN = 0xa0
52
+ FIXRAW_MAX = 0xbf
53
+
54
+ # Helper methods to determine format type
55
+ class << self
56
+ def positive_fixnum?(byte)
57
+ byte >= POSITIVE_FIXNUM_MIN && byte <= POSITIVE_FIXNUM_MAX
58
+ end
59
+
60
+ def negative_fixnum?(byte)
61
+ byte >= NEGATIVE_FIXNUM_MIN && byte <= NEGATIVE_FIXNUM_MAX
62
+ end
63
+
64
+ def fixnum?(byte)
65
+ positive_fixnum?(byte) || negative_fixnum?(byte)
66
+ end
67
+
68
+ def fixarray?(byte)
69
+ byte >= FIXARRAY_MIN && byte <= FIXARRAY_MAX
70
+ end
71
+
72
+ def fixmap?(byte)
73
+ byte >= FIXMAP_MIN && byte <= FIXMAP_MAX
74
+ end
75
+
76
+ def fixstr?(byte)
77
+ byte >= FIXRAW_MIN && byte <= FIXRAW_MAX
78
+ end
79
+
80
+ # Extract count from fix format header
81
+ def fixarray_count(byte)
82
+ byte - FIXARRAY_MIN
83
+ end
84
+
85
+ def fixmap_count(byte)
86
+ byte - FIXMAP_MIN
87
+ end
88
+
89
+ def fixstr_length(byte)
90
+ byte - FIXRAW_MIN
91
+ end
92
+
93
+ # Convert negative fixnum byte to integer value
94
+ def negative_fixnum_value(byte)
95
+ byte - 256
96
+ end
97
+ end
98
+ end
99
+ end