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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user