changeset 82773ace39fa in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=82773ace39fa
description:
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.
diffstat:
util/decode_packet_trace.py | 19 ++-----------------
util/protolib.py | 25 +++++++++++++++++++++++++
2 files changed, 27 insertions(+), 17 deletions(-)
diffs (73 lines):
diff -r 9dac4c781ad6 -r 82773ace39fa util/decode_packet_trace.py
--- a/util/decode_packet_trace.py Sun Aug 10 05:39:16 2014 -0400
+++ b/util/decode_packet_trace.py Sun Aug 10 05:39:20 2014 -0400
@@ -48,7 +48,6 @@
# r,128,64,4000,0
# w,232123,64,500000,0
-import gzip
import protolib
import sys
@@ -81,22 +80,8 @@
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')
diff -r 9dac4c781ad6 -r 82773ace39fa util/protolib.py
--- a/util/protolib.py Sun Aug 10 05:39:16 2014 -0400
+++ b/util/protolib.py Sun Aug 10 05:39:20 2014 -0400
@@ -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
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev