You need to use something like the following. Not 100% sure it works but it should be close? Hope this helps,
Evan
# Output a message to be read with Java's parseDelimitedFrom
import google.protobuf.internal.encoder as encoder
out = message.SerializeToString()
out = encoder._VarintBytes(len(out)) + out
# Read a message from Java's writeDelimitedTo:
import google.protobuf.internal.decoder as decoder
# Read length
(size, position) = decoder._DecodeVarint(buffer, 0)
# Read the message
message_object.ParseFromString(buffer[position:position+size])
Sadly these functions aren't actually documented. The Python API doesn't expose these routines for some reason I don't understand / remember. Glad it worked!
Evan
# Read a message from Java's writeDelimitedTo:
import google.protobuf.internal.decoder as decoder
# Read length
(size, position) = decoder._DecodeVarint(buffer, 0)
# Read the message
message_object.ParseFromString(buffer[position:position+size])
i assume i need to set 'buffer' somehow, right? here is what i'm trying and not working...
----------------------------------------------------------
import sys
import ELINT_pb2
import google.protobuf.internal.decoder as decoder
if len(sys.argv) != 2:
print "Usage: ", sys.argv[0], "<protobuf-file>"
sys.exit(-1)
elintWrapper = ELINT_pb2.ELINTWrapper()
# Read length
(size, position) = decoder._DecodeVarint(buffer, 0)
# Read the message
#message_object.ParseFromString(buffer[position:position+size])
f = open(sys.argv[1], "rb")
#elintWrapper.ParseFromString(f.read())
elintWrapper.ParseFromString(buffer[position:position+size])
f.close()
----------------------------------------------------------
running it produces this error:
Traceback (most recent call last):
File "./measurement-reader.py", line 16, in <module>
(size, position) = decoder._DecodeVarint(buffer, 0)
File "build/bdist.linux-x86_64/egg/google/protobuf/internal/decoder.py", line 116, in DecodeVarint
TypeError: 'type' object is unsubscriptable
any help would be greatly appreciated!! mahalo everyone!!