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
|
# r,128,64,4000,0
|
||||||
# w,232123,64,500000,0
|
# w,232123,64,500000,0
|
||||||
|
|
||||||
import gzip
|
|
||||||
import protolib
|
import protolib
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
@ -81,22 +80,8 @@ def main():
|
||||||
print "Usage: ", sys.argv[0], " <protobuf input> <ASCII output>"
|
print "Usage: ", sys.argv[0], " <protobuf input> <ASCII output>"
|
||||||
exit(-1)
|
exit(-1)
|
||||||
|
|
||||||
try:
|
# Open the file in read mode
|
||||||
# First see if this file is gzipped
|
proto_in = protolib.openFileRd(sys.argv[1])
|
||||||
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)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ascii_out = open(sys.argv[2], 'w')
|
ascii_out = open(sys.argv[2], 'w')
|
||||||
|
|
|
@ -71,8 +71,33 @@
|
||||||
# with protobuf python messages. For eg, the decode scripts for different
|
# 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
|
# types of proto objects can use the same function to decode a single message
|
||||||
|
|
||||||
|
import gzip
|
||||||
import struct
|
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):
|
def DecodeVarint(in_file):
|
||||||
"""
|
"""
|
||||||
The decoding of the Varint32 is copied from
|
The decoding of the Varint32 is copied from
|
||||||
|
|
Loading…
Reference in a new issue