Former-commit-id:9f19e3f712
[formerly 64fa9254b946eae7e61bbc3f513b7c3696c4f54f] Former-commit-id:06a8b51d6d
111 lines
2.5 KiB
Python
111 lines
2.5 KiB
Python
#!/usr/bin/env python
|
|
#
|
|
# Copyright (c) 2006- Facebook
|
|
# Distributed under the Thrift Software License
|
|
#
|
|
# See accompanying file LICENSE or visit the Thrift site at:
|
|
# http://developers.facebook.com/thrift/
|
|
|
|
class TType:
|
|
STOP = 0
|
|
VOID = 1
|
|
BOOL = 2
|
|
BYTE = 3
|
|
I08 = 3
|
|
DOUBLE = 4
|
|
I16 = 6
|
|
I32 = 8
|
|
I64 = 10
|
|
STRING = 11
|
|
UTF7 = 11
|
|
STRUCT = 12
|
|
MAP = 13
|
|
SET = 14
|
|
LIST = 15
|
|
UTF8 = 16
|
|
UTF16 = 17
|
|
|
|
class TMessageType:
|
|
CALL = 1
|
|
REPLY = 2
|
|
EXCEPTION = 3
|
|
|
|
class TProcessor:
|
|
|
|
"""Base class for procsessor, which works on two streams."""
|
|
|
|
def process(iprot, oprot):
|
|
pass
|
|
|
|
class TException(Exception):
|
|
|
|
"""Base class for all thrift exceptions."""
|
|
|
|
def __init__(self, message=None):
|
|
Exception.__init__(self, message)
|
|
self.message = message
|
|
|
|
class TApplicationException(TException):
|
|
|
|
"""Application level thrift exceptions."""
|
|
|
|
UNKNOWN = 0
|
|
UNKNOWN_METHOD = 1
|
|
INVALID_MESSAGE_TYPE = 2
|
|
WRONG_METHOD_NAME = 3
|
|
BAD_SEQUENCE_ID = 4
|
|
MISSING_RESULT = 5
|
|
|
|
def __init__(self, type=UNKNOWN, message=None):
|
|
TException.__init__(self, message)
|
|
self.type = type
|
|
|
|
def __str__(self):
|
|
if self.message:
|
|
return self.message
|
|
elif self.type == UNKNOWN_METHOD:
|
|
return 'Unknown method'
|
|
elif self.type == INVALID_MESSAGE_TYPE:
|
|
return 'Invalid message type'
|
|
elif self.type == WRONG_METHOD_NAME:
|
|
return 'Wrong method name'
|
|
elif self.type == BAD_SEQUENCE_ID:
|
|
return 'Bad sequence ID'
|
|
elif self.type == MISSING_RESULT:
|
|
return 'Missing result'
|
|
else:
|
|
return 'Default (unknown) TApplicationException'
|
|
|
|
def read(self, iprot):
|
|
iprot.readStructBegin()
|
|
while True:
|
|
(fname, ftype, fid) = iprot.readFieldBegin()
|
|
if ftype == TType.STOP:
|
|
break
|
|
if fid == 1:
|
|
if ftype == TType.STRING:
|
|
self.message = iprot.readString();
|
|
else:
|
|
iprot.skip(ftype)
|
|
elif fid == 2:
|
|
if ftype == TType.I32:
|
|
self.type = iprot.readI32();
|
|
else:
|
|
iprot.skip(ftype)
|
|
else:
|
|
iprot.skip(ftype)
|
|
iprot.readFieldEnd()
|
|
iprot.readStructEnd()
|
|
|
|
def write(self, oprot):
|
|
oprot.writeStructBegin('TApplicationException')
|
|
if self.message != None:
|
|
oprot.writeFieldBegin('message', TType.STRING, 1)
|
|
oprot.writeString(self.message)
|
|
oprot.writeFieldEnd()
|
|
if self.type != None:
|
|
oprot.writeFieldBegin('type', TType.I32, 2)
|
|
oprot.writeI32(self.type)
|
|
oprot.writeFieldEnd()
|
|
oprot.writeFieldStop()
|
|
oprot.writeStructEnd()
|