large_object_store 1.3.2 → 1.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/large_object_store.rb +12 -5
- data/lib/large_object_store/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa3354f66bbf118e295bdbb97df3ae3888f597d1
|
4
|
+
data.tar.gz: 5e1017c6505b0af50dbe8fdcf7cf6fbc2e834a5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5822c54bd33b67647f1b313335a1e6dfe19ab2ecc0e93cb8e43efe7fea858f8978aceaa4b3781dde541f902e19e7686e2efb29ffabf67ac851a7c238c154b1b
|
7
|
+
data.tar.gz: e7e9a2d1816777a5e06a73b924b1671bd437d1ed721d029e9f1e470d0a2cf11106a9c42b617933ca73fc1f02bc1f7022e605c03511642383f45270368450467e
|
data/lib/large_object_store.rb
CHANGED
@@ -12,7 +12,7 @@ module LargeObjectStore
|
|
12
12
|
NORMAL = 0
|
13
13
|
COMPRESSED = 1
|
14
14
|
RAW = 2
|
15
|
-
|
15
|
+
FLAG_RADIX = 32 # we can store 32 different states
|
16
16
|
|
17
17
|
def self.wrap(store)
|
18
18
|
RailsWrapper.new(store)
|
@@ -67,8 +67,14 @@ module LargeObjectStore
|
|
67
67
|
# use values_at to enforce key order because read_multi doesn't guarantee a return order
|
68
68
|
slices = @store.read_multi(*keys).values_at(*keys)
|
69
69
|
return nil if slices.compact.size != pages
|
70
|
-
|
70
|
+
|
71
|
+
slices = slices.map do |slice|
|
72
|
+
s = slice.dup
|
73
|
+
[s.slice!(0, UUID_SIZE), s]
|
74
|
+
end
|
75
|
+
|
71
76
|
return nil unless slices.map(&:first).uniq == [uuid]
|
77
|
+
|
72
78
|
slices.map!(&:last).join("")
|
73
79
|
else
|
74
80
|
pages
|
@@ -112,12 +118,13 @@ module LargeObjectStore
|
|
112
118
|
value = Zlib::Deflate.deflate(value)
|
113
119
|
end
|
114
120
|
|
115
|
-
value.prepend(flag.to_s(
|
121
|
+
value.prepend(flag.to_s(FLAG_RADIX))
|
116
122
|
end
|
117
123
|
|
118
124
|
# opposite operations and order of serialize
|
119
|
-
def deserialize(
|
120
|
-
|
125
|
+
def deserialize(raw_data)
|
126
|
+
data = raw_data.dup
|
127
|
+
flag = data.slice!(0, 1).to_i(FLAG_RADIX)
|
121
128
|
data = Zlib::Inflate.inflate(data) if flag & COMPRESSED == COMPRESSED
|
122
129
|
data = Marshal.load(data) if flag & RAW != RAW
|
123
130
|
data
|