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:
parent
dbdce42b88
commit
2ee47fc8d1
2 changed files with 27 additions and 17 deletions
|
@ -48,7 +48,6 @@
|
|||
# r,128,64,4000,0
|
||||
# w,232123,64,500000,0
|
||||
|
||||
import gzip
|
||||
import protolib
|
||||
import sys
|
||||
|
||||
|
@ -81,22 +80,8 @@ def main():
|
|||
print "Usage: ", sys.argv[0], " <protobuf input> <ASCII output>"
|
||||
exit(-1)
|
||||
|
||||
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(sys.argv[1], '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(sys.argv[1], 'rb')
|
||||
except IOError:
|
||||
print "Failed to open ", sys.argv[1], " for reading"
|
||||
exit(-1)
|
||||
# Open the file in read mode
|
||||
proto_in = protolib.openFileRd(sys.argv[1])
|
||||
|
||||
try:
|
||||
ascii_out = open(sys.argv[2], 'w')
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue