util: Move packet trace file read to protolib

This patch moves the code for opening an input protobuf packet trace into
a function defined in the protobuf library. This is because the code is
commonly used in decode scripts and is independent of the src protobuf
message.
This commit is contained in:
Radhika Jagtap
2014-08-10 05:39:20 -04:00
parent dbdce42b88
commit 2ee47fc8d1
2 changed files with 27 additions and 17 deletions

View File

@@ -71,8 +71,33 @@
# with protobuf python messages. For eg, the decode scripts for different
# types of proto objects can use the same function to decode a single message
import gzip
import struct
def openFileRd(in_file):
"""
This opens the file passed as argument for reading using an appropriate
function depending on if it is gzipped or not. It returns the file
handle.
"""
try:
# First see if this file is gzipped
try:
# Opening the file works even if it is not a gzip file
proto_in = gzip.open(in_file, 'rb')
# Force a check of the magic number by seeking in the
# file. If we do not do it here the error will occur when
# reading the first message.
proto_in.seek(1)
proto_in.seek(0)
except IOError:
proto_in = open(in_file, 'rb')
except IOError:
print "Failed to open ", in_file, " for reading"
exit(-1)
return proto_in
def DecodeVarint(in_file):
"""
The decoding of the Varint32 is copied from