r1460@opsdev009 (orig r77478): dreiss | 2008-01-11 12:59:12 -0800
[amiethrift.git] / lib / csharp / src / TApplicationException.cs
blobe4f3acf85437c5b28f36d6c1bae570189d38a8e8
1 //
2 // TApplicationException.cs
3 //
4 // Begin: Aug 19, 2007
5 // Authors:
6 // Todd Berman <tberman@imeem.com>
7 //
8 // Distributed under the Thrift Software License
9 //
10 // See accompanying file LICENSE or visit the Thrift site at:
11 // http://developers.facebook.com/thrift/using
13 using System;
14 using System.Collections.Generic;
15 using System.Text;
16 using Thrift.Protocol;
18 namespace Thrift
20 public class TApplicationException : Exception
22 protected ExceptionType type;
24 public TApplicationException()
28 public TApplicationException(ExceptionType type)
30 this.type = type;
33 public TApplicationException(ExceptionType type, string message)
34 : base(message)
36 this.type = type;
39 public static TApplicationException Read(TProtocol iprot)
41 TField field;
42 TStruct struc = iprot.ReadStructBegin();
44 string message = null;
45 ExceptionType type = ExceptionType.Unknown;
47 while (true)
49 field = iprot.ReadFieldBegin();
50 if (field.Type == TType.Stop)
52 break;
55 switch (field.ID)
57 case 1:
58 if (field.Type == TType.String)
60 message = iprot.ReadString();
62 else
64 TProtocolUtil.Skip(iprot, field.Type);
66 break;
67 case 2:
68 if (field.Type == TType.I32)
70 type = (ExceptionType)iprot.ReadI32();
72 else
74 TProtocolUtil.Skip(iprot, field.Type);
76 break;
77 default:
78 TProtocolUtil.Skip(iprot, field.Type);
79 break;
82 iprot.ReadFieldEnd();
85 iprot.ReadStructEnd();
87 return new TApplicationException(type, message);
90 public void Write(TProtocol oprot)
92 TStruct struc = new TStruct("TApplicationException");
93 TField field = new TField();
95 oprot.WriteStructBegin(struc);
97 if (!String.IsNullOrEmpty(Message))
99 field.Name = "message";
100 field.Type = TType.String;
101 field.ID = 1;
102 oprot.WriteFieldBegin(field);
103 oprot.WriteString(Message);
104 oprot.WriteFieldEnd();
107 field.Name = "type";
108 field.Type = TType.I32;
109 field.ID = 2;
110 oprot.WriteFieldBegin(field);
111 oprot.WriteI32((int)type);
112 oprot.WriteFieldEnd();
113 oprot.WriteFieldStop();
114 oprot.WriteStructEnd();
117 public enum ExceptionType
119 Unknown,
120 UnknownMethod,
121 InvalidMessageType,
122 WrongMethodName,
123 BadSequenceID,
124 MissingResult