Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 1 | module Thrift |
2 | class Exception < StandardError | ||||
3 | def initialize(message) | ||||
Kevin Clark | e12b0f8 | 2008-06-18 00:58:58 +0000 | [diff] [blame] | 4 | super |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 5 | @message = message |
6 | end | ||||
7 | |||||
8 | attr_reader :message | ||||
Kevin Clark | 9bf3362 | 2008-06-18 00:53:07 +0000 | [diff] [blame] | 9 | end |
Kevin Clark | c42231b | 2008-06-18 00:56:30 +0000 | [diff] [blame] | 10 | deprecate_class! :TException => Exception |
Kevin Clark | 9bf3362 | 2008-06-18 00:53:07 +0000 | [diff] [blame] | 11 | |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 12 | class ApplicationException < Exception |
Kevin Clark | 9bf3362 | 2008-06-18 00:53:07 +0000 | [diff] [blame] | 13 | |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 14 | UNKNOWN = 0 |
15 | UNKNOWN_METHOD = 1 | ||||
16 | INVALID_MESSAGE_TYPE = 2 | ||||
17 | WRONG_METHOD_NAME = 3 | ||||
18 | BAD_SEQUENCE_ID = 4 | ||||
19 | MISSING_RESULT = 5 | ||||
Kevin Clark | 9bf3362 | 2008-06-18 00:53:07 +0000 | [diff] [blame] | 20 | |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 21 | attr_reader :type |
Kevin Clark | 9bf3362 | 2008-06-18 00:53:07 +0000 | [diff] [blame] | 22 | |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 23 | def initialize(type=UNKNOWN, message=nil) |
Kevin Clark | 95833c5 | 2008-06-18 01:04:34 +0000 | [diff] [blame] | 24 | super(message) |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 25 | @type = type |
26 | end | ||||
Kevin Clark | 9bf3362 | 2008-06-18 00:53:07 +0000 | [diff] [blame] | 27 | |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 28 | def read(iprot) |
Kevin Clark | d389f54 | 2008-06-18 01:11:41 +0000 | [diff] [blame] | 29 | iprot.read_struct_begin |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 30 | while true |
Kevin Clark | d389f54 | 2008-06-18 01:11:41 +0000 | [diff] [blame] | 31 | fname, ftype, fid = iprot.read_field_begin |
Kevin Clark | 5a2d0ad | 2008-06-18 01:14:48 +0000 | [diff] [blame] | 32 | if ftype == Types::STOP |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 33 | break |
34 | end | ||||
Kevin Clark | 5a2d0ad | 2008-06-18 01:14:48 +0000 | [diff] [blame] | 35 | if fid == 1 and ftype == Types::STRING |
36 | @message = iprot.read_string | ||||
37 | elsif fid == 2 and ftype == Types::I32 | ||||
38 | @type = iprot.read_i32 | ||||
Kevin Clark | 9bf3362 | 2008-06-18 00:53:07 +0000 | [diff] [blame] | 39 | else |
40 | iprot.skip(ftype) | ||||
41 | end | ||||
Kevin Clark | d389f54 | 2008-06-18 01:11:41 +0000 | [diff] [blame] | 42 | iprot.read_field_end |
Kevin Clark | 9bf3362 | 2008-06-18 00:53:07 +0000 | [diff] [blame] | 43 | end |
Kevin Clark | d389f54 | 2008-06-18 01:11:41 +0000 | [diff] [blame] | 44 | iprot.read_struct_end |
Kevin Clark | 9bf3362 | 2008-06-18 00:53:07 +0000 | [diff] [blame] | 45 | end |
Kevin Clark | 9bf3362 | 2008-06-18 00:53:07 +0000 | [diff] [blame] | 46 | |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 47 | def write(oprot) |
Kevin Clark | 8943788 | 2008-06-18 00:59:17 +0000 | [diff] [blame] | 48 | oprot.write_struct_begin('Thrift::ApplicationException') |
Kevin Clark | 5a2d0ad | 2008-06-18 01:14:48 +0000 | [diff] [blame] | 49 | unless @message.nil? |
Kevin Clark | 8943788 | 2008-06-18 00:59:17 +0000 | [diff] [blame] | 50 | oprot.write_field_begin('message', Types::STRING, 1) |
51 | oprot.write_string(@message) | ||||
Kevin Clark | d389f54 | 2008-06-18 01:11:41 +0000 | [diff] [blame] | 52 | oprot.write_field_end |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 53 | end |
Kevin Clark | 5a2d0ad | 2008-06-18 01:14:48 +0000 | [diff] [blame] | 54 | unless @type.nil? |
Kevin Clark | 8943788 | 2008-06-18 00:59:17 +0000 | [diff] [blame] | 55 | oprot.write_field_begin('type', Types::I32, 2) |
56 | oprot.write_i32(@type) | ||||
Kevin Clark | d389f54 | 2008-06-18 01:11:41 +0000 | [diff] [blame] | 57 | oprot.write_field_end |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 58 | end |
Kevin Clark | d389f54 | 2008-06-18 01:11:41 +0000 | [diff] [blame] | 59 | oprot.write_field_stop |
60 | oprot.write_struct_end | ||||
Kevin Clark | 9bf3362 | 2008-06-18 00:53:07 +0000 | [diff] [blame] | 61 | end |
Kevin Clark | 9bf3362 | 2008-06-18 00:53:07 +0000 | [diff] [blame] | 62 | |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 63 | end |
Kevin Clark | c42231b | 2008-06-18 00:56:30 +0000 | [diff] [blame] | 64 | deprecate_class! :TApplicationException => ApplicationException |
Kevin Clark | 97d2166 | 2008-06-18 00:53:28 +0000 | [diff] [blame] | 65 | end |