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.
- checksums.yaml +7 -0
- data/README.adoc +773 -0
- data/Rakefile +8 -0
- data/docs/Gemfile +7 -0
- data/docs/README.md +85 -0
- data/docs/_config.yml +137 -0
- data/docs/_guides/index.adoc +14 -0
- data/docs/_guides/io-streaming.adoc +226 -0
- data/docs/_guides/migration.adoc +218 -0
- data/docs/_guides/performance.adoc +189 -0
- data/docs/_pages/buffer.adoc +85 -0
- data/docs/_pages/extension-types.adoc +117 -0
- data/docs/_pages/factory-pattern.adoc +115 -0
- data/docs/_pages/index.adoc +20 -0
- data/docs/_pages/serialization.adoc +159 -0
- data/docs/_pages/streaming.adoc +97 -0
- data/docs/_pages/symbol-extension.adoc +69 -0
- data/docs/_pages/timestamp-extension.adoc +88 -0
- data/docs/_references/api.adoc +360 -0
- data/docs/_references/extensions.adoc +198 -0
- data/docs/_references/format.adoc +301 -0
- data/docs/_references/index.adoc +14 -0
- data/docs/_tutorials/extension-types.adoc +170 -0
- data/docs/_tutorials/getting-started.adoc +165 -0
- data/docs/_tutorials/index.adoc +14 -0
- data/docs/_tutorials/thread-safety.adoc +157 -0
- data/docs/index.adoc +77 -0
- data/docs/lychee.toml +42 -0
- data/lib/messagepack/bigint.rb +131 -0
- data/lib/messagepack/buffer.rb +534 -0
- data/lib/messagepack/core_ext.rb +34 -0
- data/lib/messagepack/error.rb +24 -0
- data/lib/messagepack/extensions/base.rb +55 -0
- data/lib/messagepack/extensions/registry.rb +154 -0
- data/lib/messagepack/extensions/symbol.rb +38 -0
- data/lib/messagepack/extensions/timestamp.rb +110 -0
- data/lib/messagepack/extensions/value.rb +38 -0
- data/lib/messagepack/factory.rb +349 -0
- data/lib/messagepack/format.rb +99 -0
- data/lib/messagepack/packer.rb +702 -0
- data/lib/messagepack/symbol.rb +4 -0
- data/lib/messagepack/time.rb +29 -0
- data/lib/messagepack/timestamp.rb +4 -0
- data/lib/messagepack/unpacker.rb +1418 -0
- data/lib/messagepack/version.rb +5 -0
- data/lib/messagepack.rb +81 -0
- 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
|