|
|
@@ -10,6 +10,7 @@ use proto::fileformat;
|
|
10
|
10
|
use std::fs::File;
|
|
11
|
11
|
use std::io::{BufReader, ErrorKind, Read};
|
|
12
|
12
|
use std::path::Path;
|
|
|
13
|
+use util::{parse_message_from_bytes, parse_message_from_reader};
|
|
13
|
14
|
|
|
14
|
15
|
#[cfg(feature = "system-libz")]
|
|
15
|
16
|
use flate2::read::ZlibDecoder;
|
|
|
@@ -179,7 +180,7 @@ impl<R: Read> Iterator for BlobReader<R> {
|
|
179
|
180
|
},
|
|
180
|
181
|
};
|
|
181
|
182
|
|
|
182
|
|
- let header: fileformat::BlobHeader = match protobuf::parse_from_reader(&mut self.reader.by_ref().take(size)) {
|
|
|
183
|
+ let header: fileformat::BlobHeader = match parse_message_from_reader(&mut self.reader.by_ref().take(size)) {
|
|
183
|
184
|
Ok(header) => header,
|
|
184
|
185
|
Err(e) => {
|
|
185
|
186
|
self.last_blob_ok = false;
|
|
|
@@ -187,7 +188,7 @@ impl<R: Read> Iterator for BlobReader<R> {
|
|
187
|
188
|
},
|
|
188
|
189
|
};
|
|
189
|
190
|
|
|
190
|
|
- let blob: fileformat::Blob = match protobuf::parse_from_reader(&mut self.reader.by_ref().take(header.get_datasize() as u64)) {
|
|
|
191
|
+ let blob: fileformat::Blob = match parse_message_from_reader(&mut self.reader.by_ref().take(header.get_datasize() as u64)) {
|
|
191
|
192
|
Ok(blob) => blob,
|
|
192
|
193
|
Err(e) => {
|
|
193
|
194
|
self.last_blob_ok = false;
|
|
|
@@ -203,10 +204,10 @@ impl<R: Read> Iterator for BlobReader<R> {
|
|
203
|
204
|
pub(crate) fn decode_blob<T>(blob: &fileformat::Blob) -> Result<T>
|
|
204
|
205
|
where T: protobuf::Message + protobuf::MessageStatic {
|
|
205
|
206
|
if blob.has_raw() {
|
|
206
|
|
- protobuf::parse_from_bytes(blob.get_raw()).chain_err(|| "Could not parse raw data")
|
|
|
207
|
+ parse_message_from_bytes(blob.get_raw()).chain_err(|| "Could not parse raw data")
|
|
207
|
208
|
} else if blob.has_zlib_data() {
|
|
208
|
209
|
let mut decoder = ZlibDecoder::new(blob.get_zlib_data());
|
|
209
|
|
- protobuf::parse_from_reader(&mut decoder).chain_err(|| "Could not parse zlib data")
|
|
|
210
|
+ parse_message_from_reader(&mut decoder).chain_err(|| "Could not parse zlib data")
|
|
210
|
211
|
} else {
|
|
211
|
212
|
bail!("Blob is missing fields 'raw' and 'zlib_data")
|
|
212
|
213
|
}
|
|
|
@@ -216,10 +217,10 @@ pub(crate) fn decode_blob<T>(blob: &fileformat::Blob) -> Result<T>
|
|
216
|
217
|
pub(crate) fn decode_blob<T>(blob: &fileformat::Blob) -> Result<T>
|
|
217
|
218
|
where T: protobuf::Message + protobuf::MessageStatic {
|
|
218
|
219
|
if blob.has_raw() {
|
|
219
|
|
- protobuf::parse_from_bytes(blob.get_raw()).chain_err(|| "Could not parse raw data")
|
|
|
220
|
+ parse_message_from_bytes(blob.get_raw()).chain_err(|| "Could not parse raw data")
|
|
220
|
221
|
} else if blob.has_zlib_data() {
|
|
221
|
222
|
let mut decoder = DeflateDecoder::from_zlib(blob.get_zlib_data());
|
|
222
|
|
- protobuf::parse_from_reader(&mut decoder).chain_err(|| "Could not parse zlib data")
|
|
|
223
|
+ parse_message_from_reader(&mut decoder).chain_err(|| "Could not parse zlib data")
|
|
223
|
224
|
} else {
|
|
224
|
225
|
bail!("Blob is missing fields 'raw' and 'zlib_data")
|
|
225
|
226
|
}
|