Fix python server bugs and go to new protocol wraps transport model
Reviewed By: ccheever
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@664849 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/py/src/protocol/TBinaryProtocol.py b/lib/py/src/protocol/TBinaryProtocol.py
index 25f3218..8275e34 100644
--- a/lib/py/src/protocol/TBinaryProtocol.py
+++ b/lib/py/src/protocol/TBinaryProtocol.py
@@ -5,164 +5,172 @@
"""Binary implementation of the Thrift protocol driver."""
- def writeMessageBegin(self, otrans, name, type, seqid):
- self.writeString(otrans, name)
- self.writeByte(otrans, type)
- self.writeI32(otrans, seqid)
+ def __init__(self, itrans, otrans=None):
+ TProtocolBase.__init__(self, itrans, otrans)
- def writeMessageEnd(self, otrans):
+ def writeMessageBegin(self, name, type, seqid):
+ self.writeString(name)
+ self.writeByte(type)
+ self.writeI32(seqid)
+
+ def writeMessageEnd(self):
pass
- def writeStructBegin(self, otrans, name):
+ def writeStructBegin(self, name):
pass
- def writeStructEnd(self, otrans):
+ def writeStructEnd(self):
pass
- def writeFieldBegin(self, otrans, name, type, id):
- self.writeByte(otrans, type)
- self.writeI16(otrans, id)
+ def writeFieldBegin(self, name, type, id):
+ self.writeByte(type)
+ self.writeI16(id)
- def writeFieldEnd(self, otrans):
+ def writeFieldEnd(self):
pass
- def writeFieldStop(self, otrans):
- self.writeByte(otrans, TType.STOP);
+ def writeFieldStop(self):
+ self.writeByte(TType.STOP);
- def writeMapBegin(self, otrans, ktype, vtype, size):
- self.writeByte(otrans, ktype)
- self.writeByte(otrans, vtype)
- self.writeI32(otrans, size)
+ def writeMapBegin(self, ktype, vtype, size):
+ self.writeByte(ktype)
+ self.writeByte(vtype)
+ self.writeI32(size)
- def writeMapEnd(self, otrans):
+ def writeMapEnd(self):
pass
- def writeListBegin(self, otrans, etype, size):
- self.writeByte(otrans, etype)
- self.writeI32(otrans, size)
+ def writeListBegin(self, etype, size):
+ self.writeByte(etype)
+ self.writeI32(size)
- def writeListEnd(self, otrans):
+ def writeListEnd(self):
pass
- def writeSetBegin(self, otrans, etype, size):
- self.writeByte(otrans, etype)
- self.writeI32(otrans, size)
+ def writeSetBegin(self, etype, size):
+ self.writeByte(etype)
+ self.writeI32(size)
- def writeSetEnd(self, otrans):
+ def writeSetEnd(self):
pass
- def writeBool(self, otrans, bool):
+ def writeBool(self, bool):
if bool:
- self.writeByte(otrans, 1)
+ self.writeByte(1)
else:
- self.writeByte(otrans, 0)
+ self.writeByte(0)
- def writeByte(self, otrans, byte):
+ def writeByte(self, byte):
buff = pack("!b", byte)
- otrans.write(buff)
+ self.otrans.write(buff)
- def writeI16(self, otrans, i16):
+ def writeI16(self, i16):
buff = pack("!h", i16)
- otrans.write(buff)
+ self.otrans.write(buff)
- def writeI32(self, otrans, i32):
+ def writeI32(self, i32):
buff = pack("!i", i32)
- otrans.write(buff)
+ self.otrans.write(buff)
- def writeI64(self, otrans, i64):
+ def writeI64(self, i64):
buff = pack("!q", i64)
- otrans.write(buff)
+ self.otrans.write(buff)
- def writeDouble(self, otrans, dub):
+ def writeDouble(self, dub):
buff = pack("!d", dub)
- otrans.write(buff)
+ self.otrans.write(buff)
- def writeString(self, otrans, str):
- self.writeI32(otrans, len(str))
- otrans.write(str)
+ def writeString(self, str):
+ self.writeI32(len(str))
+ self.otrans.write(str)
- def readMessageBegin(self, itrans):
- name = self.readString(itrans)
- type = self.readByte(itrans)
- seqid = self.readI32(itrans)
+ def readMessageBegin(self):
+ name = self.readString()
+ type = self.readByte()
+ seqid = self.readI32()
return (name, type, seqid)
- def readMessageEnd(self, itrans):
+ def readMessageEnd(self):
pass
- def readStructBegin(self, itrans):
+ def readStructBegin(self):
pass
- def readStructEnd(self, itrans):
+ def readStructEnd(self):
pass
- def readFieldBegin(self, itrans):
- type = self.readByte(itrans)
+ def readFieldBegin(self):
+ type = self.readByte()
if type == TType.STOP:
return (None, type, 0)
- id = self.readI16(itrans)
+ id = self.readI16()
return (None, type, id)
- def readFieldEnd(self, itrans):
+ def readFieldEnd(self):
pass
- def readMapBegin(self, itrans):
- ktype = self.readByte(itrans)
- vtype = self.readByte(itrans)
- size = self.readI32(itrans)
+ def readMapBegin(self):
+ ktype = self.readByte()
+ vtype = self.readByte()
+ size = self.readI32()
return (ktype, vtype, size)
- def readMapEnd(self, itrans):
+ def readMapEnd(self):
pass
- def readListBegin(self, itrans):
- etype = self.readByte(itrans)
- size = self.readI32(itrans)
+ def readListBegin(self):
+ etype = self.readByte()
+ size = self.readI32()
return (etype, size)
- def readListEnd(self, itrans):
+ def readListEnd(self):
pass
- def readSetBegin(self, itrans):
- etype = self.readByte(itrans)
- size = self.readI32(itrans)
+ def readSetBegin(self):
+ etype = self.readByte()
+ size = self.readI32()
return (etype, size)
- def readSetEnd(self, itrans):
+ def readSetEnd(self):
pass
- def readBool(self, itrans):
- byte = self.readByte(itrans)
+ def readBool(self):
+ byte = self.readByte()
if byte == 0:
return False
return True
- def readByte(self, itrans):
- buff = itrans.readAll(1)
+ def readByte(self):
+ buff = self.itrans.readAll(1)
val, = unpack('!b', buff)
return val
- def readI16(self, itrans):
- buff = itrans.readAll(2)
+ def readI16(self):
+ buff = self.itrans.readAll(2)
val, = unpack('!h', buff)
return val
- def readI32(self, itrans):
- buff = itrans.readAll(4)
+ def readI32(self):
+ buff = self.itrans.readAll(4)
val, = unpack('!i', buff)
return val
- def readI64(self, itrans):
- buff = itrans.readAll(8)
+ def readI64(self):
+ buff = self.itrans.readAll(8)
val, = unpack('!q', buff)
return val
- def readDouble(self, itrans):
- buff = itrans.readAll(8)
+ def readDouble(self):
+ buff = self.itrans.readAll(8)
val, = unpack('!d', buff)
return val
- def readString(self, itrans):
- len = self.readI32(itrans)
- str = itrans.readAll(len)
+ def readString(self):
+ len = self.readI32()
+ str = self.itrans.readAll(len)
return str
+
+class TBinaryProtocolFactory:
+ def getIOProtocols(self, itrans, otrans):
+ prot = TBinaryProtocol(itrans, otrans)
+ return (prot, prot)