Whoops forgot to actually svn add Andrew's files
Summary: Tricky svn add command will get you every time
Reviewed By: dreiss
Test Plan: test/ tutorial/ Cocoa code
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665277 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/cocoa/TApplicationException.m b/lib/cocoa/TApplicationException.m
new file mode 100644
index 0000000..1f658de
--- /dev/null
+++ b/lib/cocoa/TApplicationException.m
@@ -0,0 +1,84 @@
+#import "TApplicationException.h"
+#import "TProtocolUtil.h"
+
+@implementation TApplicationException
+
+- (id) initWithType: (int) type
+ reason: (NSString *) reason
+{
+ NSString * name;
+ switch (type) {
+ case TApplicationException_UNKNOWN_METHOD:
+ name = @"Unknown method";
+ break;
+ case TApplicationException_INVALID_MESSAGE_TYPE:
+ name = @"Invalid message type";
+ break;
+ case TApplicationException_WRONG_METHOD_NAME:
+ name = @"Wrong method name";
+ break;
+ case TApplicationException_BAD_SEQUENCE_ID:
+ name = @"Bad sequence ID";
+ break;
+ case TApplicationException_MISSING_RESULT:
+ name = @"Missing result";
+ break;
+ default:
+ name = @"Unknown";
+ break;
+ }
+
+ self = [super initWithName: name reason: reason userInfo: nil];
+ return self;
+}
+
+
++ (TApplicationException *) read: (id <TProtocol>) protocol
+{
+ NSString * reason = nil;
+ int type = TApplicationException_UNKNOWN;
+ int fieldType;
+ int fieldID;
+
+ while (true) {
+ [protocol readFieldBeginReturningName: NULL
+ type: &fieldType
+ fieldID: &fieldID];
+ if (fieldType == TType_STOP) {
+ break;
+ }
+ switch (fieldID) {
+ case 1:
+ if (fieldType == TType_STRING) {
+ reason = [protocol readString];
+ } else {
+ [TProtocolUtil skipType: fieldType onProtocol: protocol];
+ }
+ break;
+ case 2:
+ if (fieldType == TType_I32) {
+ type = [protocol readI32];
+ } else {
+ [TProtocolUtil skipType: fieldType onProtocol: protocol];
+ }
+ break;
+ default:
+ [TProtocolUtil skipType: fieldType onProtocol: protocol];
+ break;
+ }
+ [protocol readFieldEnd];
+ }
+ [protocol readStructEnd];
+
+ return [TApplicationException exceptionWithType: type reason: reason];
+}
+
+
++ (TApplicationException *) exceptionWithType: (int) type
+ reason: (NSString *) reason
+{
+ return [[[TApplicationException alloc] initWithType: type
+ reason: reason] autorelease];
+}
+
+@end