http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/c_glib/thrift_c_glib.pc.in ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/c_glib/thrift_c_glib.pc.in b/depends/thirdparty/thrift/lib/c_glib/thrift_c_glib.pc.in new file mode 100644 index 0000000..568c7a2 --- /dev/null +++ b/depends/thirdparty/thrift/lib/c_glib/thrift_c_glib.pc.in @@ -0,0 +1,30 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: Thrift +Description: Thrift C API +Version: @VERSION@ +Requires: glib-2.0 gobject-2.0 +Libs: -L${libdir} -lthrift_c_glib +Cflags: -I${includedir}
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/README.md ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/README.md b/depends/thirdparty/thrift/lib/cocoa/README.md new file mode 100644 index 0000000..bbe3c93 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/README.md @@ -0,0 +1,21 @@ +Thrift Cocoa Software Library + +License +======= + +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/coding_standards.md ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/coding_standards.md b/depends/thirdparty/thrift/lib/cocoa/coding_standards.md new file mode 100644 index 0000000..fa0390b --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/coding_standards.md @@ -0,0 +1 @@ +Please follow [General Coding Standards](/doc/coding_standards.md) http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/TApplicationException.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/TApplicationException.h b/depends/thirdparty/thrift/lib/cocoa/src/TApplicationException.h new file mode 100644 index 0000000..7b027d6 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/TApplicationException.h @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TException.h" +#import "TProtocol.h" + +enum { + TApplicationException_UNKNOWN = 0, + TApplicationException_UNKNOWN_METHOD = 1, + TApplicationException_INVALID_MESSAGE_TYPE = 2, + TApplicationException_WRONG_METHOD_NAME = 3, + TApplicationException_BAD_SEQUENCE_ID = 4, + TApplicationException_MISSING_RESULT = 5, + TApplicationException_INTERNAL_ERROR = 6, + TApplicationException_PROTOCOL_ERROR = 7, + TApplicationException_INVALID_TRANSFORM = 8, + TApplicationException_INVALID_PROTOCOL = 9, + TApplicationException_UNSUPPORTED_CLIENT_TYPE = 10 +}; + +// FIXME +@interface TApplicationException : TException { + int mType; +} + ++ (TApplicationException *) read: (id <TProtocol>) protocol; + +- (void) write: (id <TProtocol>) protocol; + ++ (TApplicationException *) exceptionWithType: (int) type + reason: (NSString *) message; + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/TApplicationException.m ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/TApplicationException.m b/depends/thirdparty/thrift/lib/cocoa/src/TApplicationException.m new file mode 100644 index 0000000..974dfc5 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/TApplicationException.m @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TApplicationException.h" +#import "TProtocolUtil.h" +#import "TObjective-C.h" + +@implementation TApplicationException + +- (id) initWithType: (int) type + reason: (NSString *) reason +{ + mType = type; + + 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; + case TApplicationException_INTERNAL_ERROR: + name = @"Internal error"; + break; + case TApplicationException_PROTOCOL_ERROR: + name = @"Protocol error"; + break; + case TApplicationException_INVALID_TRANSFORM: + name = @"Invalid transform"; + break; + case TApplicationException_INVALID_PROTOCOL: + name = @"Invalid protocol"; + break; + case TApplicationException_UNSUPPORTED_CLIENT_TYPE: + name = @"Unsupported client type"; + 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; + + [protocol readStructBeginReturningName: NULL]; + + 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]; +} + + +- (void) write: (id <TProtocol>) protocol +{ + [protocol writeStructBeginWithName: @"TApplicationException"]; + + if ([self reason] != nil) { + [protocol writeFieldBeginWithName: @"message" + type: TType_STRING + fieldID: 1]; + [protocol writeString: [self reason]]; + [protocol writeFieldEnd]; + } + + [protocol writeFieldBeginWithName: @"type" + type: TType_I32 + fieldID: 2]; + [protocol writeI32: mType]; + [protocol writeFieldEnd]; + + [protocol writeFieldStop]; + [protocol writeStructEnd]; +} + + ++ (TApplicationException *) exceptionWithType: (int) type + reason: (NSString *) reason +{ + return [[[TApplicationException alloc] initWithType: type + reason: reason] autorelease_stub]; +} + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/TBaseClient.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/TBaseClient.h b/depends/thirdparty/thrift/lib/cocoa/src/TBaseClient.h new file mode 100644 index 0000000..12944b1 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/TBaseClient.h @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TProtocol.h" +#import "TApplicationException.h" + +@interface TBaseClient : NSObject { + id <TProtocol> inProtocol; + id <TProtocol> outProtocol; +} + +- (TApplicationException *)checkIncomingMessageException; + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/TBaseClient.m ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/TBaseClient.m b/depends/thirdparty/thrift/lib/cocoa/src/TBaseClient.m new file mode 100644 index 0000000..d15f9d3 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/TBaseClient.m @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TBaseClient.h" +#import "TApplicationException.h" +#import "TObjective-C.h" + +@implementation TBaseClient + +- (void) dealloc +{ + [inProtocol release_stub]; + [outProtocol release_stub]; + [super dealloc_stub]; +} + +- (TApplicationException *)checkIncomingMessageException +{ + int msgType = 0; + [inProtocol readMessageBeginReturningName: nil type: &msgType sequenceID: NULL]; + if (msgType == TMessageType_EXCEPTION) { + TApplicationException * x = [TApplicationException read: inProtocol]; + [inProtocol readMessageEnd]; + return x; + } + + return nil; +} + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/TException.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/TException.h b/depends/thirdparty/thrift/lib/cocoa/src/TException.h new file mode 100644 index 0000000..e56f4fa --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/TException.h @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import <Foundation/Foundation.h> + +@interface TException : NSException { +} + ++ (id) exceptionWithName: (NSString *) name; + ++ (id) exceptionWithName: (NSString *) name + reason: (NSString *) reason; + ++ (id) exceptionWithName: (NSString *) name + reason: (NSString *) reason + error: (NSError *) error; + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/TException.m ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/TException.m b/depends/thirdparty/thrift/lib/cocoa/src/TException.m new file mode 100644 index 0000000..0160e3b --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/TException.m @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TException.h" +#import "TObjective-C.h" + +@implementation TException + ++ (id) exceptionWithName: (NSString *) name +{ + return [self exceptionWithName: name reason: @"unknown" error: nil]; +} + + ++ (id) exceptionWithName: (NSString *) name + reason: (NSString *) reason +{ + return [self exceptionWithName: name reason: reason error: nil]; +} + + ++ (id) exceptionWithName: (NSString *) name + reason: (NSString *) reason + error: (NSError *) error +{ + NSDictionary * userInfo = nil; + if (error != nil) { + userInfo = [NSDictionary dictionaryWithObject: error forKey: @"error"]; + } + + return [super exceptionWithName: name + reason: reason + userInfo: userInfo]; +} + + +- (NSString *) description +{ + NSMutableString * result = [NSMutableString stringWithString: [self name]]; + [result appendFormat: @": %@", [self reason]]; + if ([self userInfo] != nil) { + [result appendFormat: @"\n userInfo = %@", [self userInfo]]; + } + + return result; +} + + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/TObjective-C.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/TObjective-C.h b/depends/thirdparty/thrift/lib/cocoa/src/TObjective-C.h new file mode 100644 index 0000000..9c0831d --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/TObjective-C.h @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/* + * TObjective-C.h is for supporting coexistence of both the ARC (Automatic + * Reference Counting) mode and the Non-ARC mode of Objective-C + * in the same source code. + * + * 2011/11/14 HIRANO Satoshi (AIST, Japan) + * + * Before: + * + * var = [aObject retain]; + * [aObject release]; + * [aObject autorelease]; + * [super dealloc]; + * CFFunction(obj); + * + * ARC and Non-ARC compatible: + * + * #import "TObjective-C.h" + * var = [aObject retain_stub]; + * [aObject release_stub]; + * [aObject autorelease_stub]; + * [super dealloc_stub]; + * CFFunction(bridge_stub obj); + * + * Don't use retain_stub for @property(retain). + * Use NSAutoreleasePool like this: + * #if __has_feature(objc_arc) + * @autoreleasepool { + * // code + * } + * #else + * NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init... + * // code + * [pool release]; + * #endif + */ + + +#if !defined(retain_stub) +#if __has_feature(objc_arc) +#define retain_stub self +#define autorelease_stub self +#define release_stub self +#define dealloc_stub self +#define bridge_stub __bridge +#else +#define retain_stub retain +#define autorelease_stub autorelease +#define release_stub release +#define dealloc_stub dealloc +#define bridge_stub +#endif +#endif http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/TProcessor.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/TProcessor.h b/depends/thirdparty/thrift/lib/cocoa/src/TProcessor.h new file mode 100644 index 0000000..980be94 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/TProcessor.h @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import <Foundation/Foundation.h> +#import "TProtocol.h" + + +@protocol TProcessor <NSObject> + +- (BOOL) processOnInputProtocol: (id <TProtocol>) inProtocol + outputProtocol: (id <TProtocol>) outProtocol; + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/TProcessorFactory.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/TProcessorFactory.h b/depends/thirdparty/thrift/lib/cocoa/src/TProcessorFactory.h new file mode 100644 index 0000000..29d12b3 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/TProcessorFactory.h @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import <Foundation/Foundation.h> +#import "TProcessor.h" + +@protocol TProcessorFactory <NSObject> + +- (id<TProcessor>) processorForTransport: (id<TTransport>) transport; + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/TSharedProcessorFactory.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/TSharedProcessorFactory.h b/depends/thirdparty/thrift/lib/cocoa/src/TSharedProcessorFactory.h new file mode 100644 index 0000000..cf4a462 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/TSharedProcessorFactory.h @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import <Foundation/Foundation.h> +#import "TProcessorFactory.h" + +@interface TSharedProcessorFactory : NSObject <TProcessorFactory> { + id<TProcessor> mSharedProcessor; +} +- (id) initWithSharedProcessor: (id<TProcessor>) sharedProcessor; +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/TSharedProcessorFactory.m ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/TSharedProcessorFactory.m b/depends/thirdparty/thrift/lib/cocoa/src/TSharedProcessorFactory.m new file mode 100644 index 0000000..a0007c0 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/TSharedProcessorFactory.m @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + +#import "TSharedProcessorFactory.h" +#import "TObjective-C.h" + + +@implementation TSharedProcessorFactory + + +- (id) initWithSharedProcessor: (id<TProcessor>) sharedProcessor +{ + self = [super init]; + if (!self) { + return nil; + } + + mSharedProcessor = [sharedProcessor retain_stub]; + return self; +} + + +- (void) dealloc +{ + [mSharedProcessor release_stub]; + [super dealloc_stub]; +} + + +- (id<TProcessor>) processorForTransport: (id<TTransport>) transport +{ + return [[mSharedProcessor retain_stub] autorelease_stub]; +} + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/Thrift.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/Thrift.h b/depends/thirdparty/thrift/lib/cocoa/src/Thrift.h new file mode 100644 index 0000000..9cedb66 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/Thrift.h @@ -0,0 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#define ThriftVersion @"0.9.3" http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TBase.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TBase.h b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TBase.h new file mode 100644 index 0000000..33037ef --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TBase.h @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import <Foundation/Foundation.h> + +#import "TProtocol.h" + +@protocol TBase <NSObject> + +/** + * De-serialize object from the given input protocol + * + * @param input protocol used for reading + */ +- (void) read: (id <TProtocol>) inProtocol; + +/** + * Serialize object to the given protocol + * + * @param buf output protocol used for writing + */ +- (void) write: (id <TProtocol>) outProtocol; + +@end + http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TBinaryProtocol.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TBinaryProtocol.h b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TBinaryProtocol.h new file mode 100644 index 0000000..9a73730 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TBinaryProtocol.h @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TProtocol.h" +#import "TTransport.h" +#import "TProtocolFactory.h" + + +@interface TBinaryProtocol : NSObject <TProtocol> { + id <TTransport> mTransport; + BOOL mStrictRead; + BOOL mStrictWrite; + int32_t mMessageSizeLimit; +} + +- (id) initWithTransport: (id <TTransport>) transport; + +- (id) initWithTransport: (id <TTransport>) transport + strictRead: (BOOL) strictRead + strictWrite: (BOOL) strictWrite; + +- (int32_t) messageSizeLimit; +- (void) setMessageSizeLimit: (int32_t) sizeLimit; + +@end + + +@interface TBinaryProtocolFactory : NSObject <TProtocolFactory> { +} + ++ (TBinaryProtocolFactory *) sharedFactory; + +- (TBinaryProtocol *) newProtocolOnTransport: (id <TTransport>) transport; + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TBinaryProtocol.m ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TBinaryProtocol.m b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TBinaryProtocol.m new file mode 100644 index 0000000..847c723 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TBinaryProtocol.m @@ -0,0 +1,530 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TBinaryProtocol.h" +#import "TProtocolException.h" +#import "TObjective-C.h" + +/* In the modern protocol, version is stored in the high half of an int32. + * The low half contains type info. */ +static const uint16_t VERSION_1 = 0x8001; + +NS_INLINE size_t +CheckedCastInt32ToSizeT(int32_t size) +{ + if (size < 0) { + NSString *reason = [NSString stringWithFormat: + @"%s: refusing to read data with negative size: %"PRId32, + __func__, size]; + @throw [TProtocolException + exceptionWithName: @"TProtocolException" + reason: reason]; + } + size_t checkedSize = (size_t)size; + return checkedSize; +} + +NS_INLINE int32_t +CheckedCastSizeTToInt32(size_t size) +{ + if (size > INT32_MAX) { + NSString *reason = [NSString stringWithFormat: + @"%s: data size exceeds values representable by a 32-bit signed integer: %zu", + __func__, size]; + @throw [TProtocolException + exceptionWithName: @"TProtocolException" + reason: reason]; + } + int32_t checkedSize = (int32_t)size; + return checkedSize; +} + +NS_INLINE uint8_t +CheckedCastIntToUInt8(int size) +{ + if (size > UINT8_MAX) { + NSString *reason = [NSString stringWithFormat: + @"%s: data size exceeds values representable by a 8-bit unsigned integer: %d", + __func__, size]; + @throw [TProtocolException + exceptionWithName: @"TProtocolException" + reason: reason]; + } + uint8_t checkedSize = (uint8_t)size; + return checkedSize; +} + +static TBinaryProtocolFactory * gSharedFactory = nil; + +@implementation TBinaryProtocolFactory + ++ (TBinaryProtocolFactory *) sharedFactory { + if (gSharedFactory == nil) { + gSharedFactory = [[TBinaryProtocolFactory alloc] init]; + } + + return gSharedFactory; +} + +- (TBinaryProtocol *) newProtocolOnTransport: (id <TTransport>) transport { + return [[TBinaryProtocol alloc] initWithTransport: transport]; +} + +@end + + + +@implementation TBinaryProtocol + +- (id) initWithTransport: (id <TTransport>) transport +{ + return [self initWithTransport: transport strictRead: NO strictWrite: YES]; +} + +- (id) initWithTransport: (id <TTransport>) transport + strictRead: (BOOL) strictRead + strictWrite: (BOOL) strictWrite +{ + self = [super init]; + mTransport = [transport retain_stub]; + mStrictRead = strictRead; + mStrictWrite = strictWrite; + return self; +} + + +- (int32_t) messageSizeLimit +{ + return mMessageSizeLimit; +} + + +- (void) setMessageSizeLimit: (int32_t) sizeLimit +{ + mMessageSizeLimit = sizeLimit; +} + + +- (void) dealloc +{ + [mTransport release_stub]; + [super dealloc_stub]; +} + + +- (id <TTransport>) transport +{ + return mTransport; +} + + +- (NSString *) readStringBody: (int) rawSize +{ + size_t size = CheckedCastInt32ToSizeT(rawSize); + char * buffer = malloc(size+1); + if (!buffer) { + @throw [TProtocolException exceptionWithName: @"TProtocolException" + reason: [NSString stringWithFormat: @"Unable to allocate memory in %s, size: %zu", + __PRETTY_FUNCTION__, + size]];; + } + [mTransport readAll: (uint8_t *) buffer offset: 0 length: size]; + buffer[size] = 0; + NSString * result = [NSString stringWithUTF8String: buffer]; + free(buffer); + return result; +} + + +- (void) readMessageBeginReturningName: (NSString **) name + type: (int *) type + sequenceID: (int *) sequenceID +{ + int32_t size = [self readI32]; + if (size < 0) { + /* Version (unsigned) is stored in the high halfword. */ + uint16_t version = (size >> 16) & 0xFFFF; + if (version != VERSION_1) { + NSString *reason = [NSString stringWithFormat: + @"%s: Expected version %"PRIu16", instead found: %"PRIu16, + __func__, VERSION_1, version]; + @throw [TProtocolException exceptionWithName: @"TProtocolException" + reason: reason]; + } + if (type != NULL) { + *type = size & 0x00FF; + } + NSString * messageName = [self readString]; + if (name != NULL) { + *name = messageName; + } + int seqID = [self readI32]; + if (sequenceID != NULL) { + *sequenceID = seqID; + } + } else { + if (mStrictRead) { + @throw [TProtocolException exceptionWithName: @"TProtocolException" + reason: @"Missing version in readMessageBegin, old client?"]; + } + if ([self messageSizeLimit] > 0 && size > [self messageSizeLimit]) { + @throw [TProtocolException exceptionWithName: @"TProtocolException" + reason: [NSString stringWithFormat: @"Message too big. Size limit is: %d Message size is: %d", + mMessageSizeLimit, + size]]; + } + NSString * messageName = [self readStringBody: size]; + if (name != NULL) { + *name = messageName; + } + int messageType = [self readByte]; + if (type != NULL) { + *type = messageType; + } + int seqID = [self readI32]; + if (sequenceID != NULL) { + *sequenceID = seqID; + } + } +} + + +- (void) readMessageEnd {} + + +- (void) readStructBeginReturningName: (NSString **) name +{ + if (name != NULL) { + *name = nil; + } +} + + +- (void) readStructEnd {} + + +- (void) readFieldBeginReturningName: (NSString **) name + type: (int *) fieldType + fieldID: (int *) fieldID +{ + if (name != NULL) { + *name = nil; + } + int ft = [self readByte]; + if (fieldType != NULL) { + *fieldType = ft; + } + if (ft != TType_STOP) { + int fid = [self readI16]; + if (fieldID != NULL) { + *fieldID = fid; + } + } +} + + +- (void) readFieldEnd {} + + +- (int32_t) readI32 +{ + uint8_t i32rd[4]; + [mTransport readAll: i32rd offset: 0 length: 4]; + return + ((i32rd[0] & 0xff) << 24) | + ((i32rd[1] & 0xff) << 16) | + ((i32rd[2] & 0xff) << 8) | + ((i32rd[3] & 0xff)); +} + + +- (NSString *) readString +{ + int32_t size = [self readI32]; + return [self readStringBody: size]; +} + + +- (BOOL) readBool +{ + return [self readByte] == 1; +} + +- (uint8_t) readByte +{ + uint8_t myByte; + [mTransport readAll: &myByte offset: 0 length: 1]; + return myByte; +} + +- (short) readI16 +{ + uint8_t buff[2]; + [mTransport readAll: buff offset: 0 length: 2]; + return (short) + (((buff[0] & 0xff) << 8) | + ((buff[1] & 0xff))); +} + +- (int64_t) readI64 +{ + uint8_t i64rd[8]; + [mTransport readAll: i64rd offset: 0 length: 8]; + return + ((int64_t)(i64rd[0] & 0xff) << 56) | + ((int64_t)(i64rd[1] & 0xff) << 48) | + ((int64_t)(i64rd[2] & 0xff) << 40) | + ((int64_t)(i64rd[3] & 0xff) << 32) | + ((int64_t)(i64rd[4] & 0xff) << 24) | + ((int64_t)(i64rd[5] & 0xff) << 16) | + ((int64_t)(i64rd[6] & 0xff) << 8) | + ((int64_t)(i64rd[7] & 0xff)); +} + +- (double) readDouble +{ + // FIXME - will this get us into trouble on PowerPC? + int64_t ieee754 = [self readI64]; + return *((double *) &ieee754); +} + + +- (NSData *) readBinary +{ + int32_t size = [self readI32]; + size_t binarySize = CheckedCastInt32ToSizeT(size); + uint8_t * buff = malloc(binarySize); + if (buff == NULL) { + @throw [TProtocolException + exceptionWithName: @"TProtocolException" + reason: [NSString stringWithFormat: @"Out of memory. Unable to allocate %d bytes trying to read binary data.", + size]]; + } + [mTransport readAll: buff offset: 0 length: binarySize]; + return [NSData dataWithBytesNoCopy: buff length: binarySize]; +} + + +- (void) readMapBeginReturningKeyType: (int *) keyType + valueType: (int *) valueType + size: (int *) size +{ + int kt = [self readByte]; + int vt = [self readByte]; + int s = [self readI32]; + if (keyType != NULL) { + *keyType = kt; + } + if (valueType != NULL) { + *valueType = vt; + } + if (size != NULL) { + *size = s; + } +} + +- (void) readMapEnd {} + + +- (void) readSetBeginReturningElementType: (int *) elementType + size: (int *) size +{ + int et = [self readByte]; + int s = [self readI32]; + if (elementType != NULL) { + *elementType = et; + } + if (size != NULL) { + *size = s; + } +} + + +- (void) readSetEnd {} + + +- (void) readListBeginReturningElementType: (int *) elementType + size: (int *) size +{ + int et = [self readByte]; + int s = [self readI32]; + if (elementType != NULL) { + *elementType = et; + } + if (size != NULL) { + *size = s; + } +} + + +- (void) readListEnd {} + + +- (void) writeByte: (uint8_t) value +{ + [mTransport write: &value offset: 0 length: 1]; +} + + +- (void) writeMessageBeginWithName: (NSString *) name + type: (int) messageType + sequenceID: (int) sequenceID +{ + if (mStrictWrite) { + int version = (VERSION_1 << 16) | messageType; + [self writeI32: version]; + [self writeString: name]; + [self writeI32: sequenceID]; + } else { + [self writeString: name]; + [self writeByte: CheckedCastIntToUInt8(messageType)]; + [self writeI32: sequenceID]; + } +} + + +- (void) writeMessageEnd {} + + +- (void) writeStructBeginWithName: (NSString *) name {} + + +- (void) writeStructEnd {} + + +- (void) writeFieldBeginWithName: (NSString *) name + type: (int) fieldType + fieldID: (int) fieldID +{ + [self writeByte: CheckedCastIntToUInt8(fieldType)]; + [self writeI16: CheckedCastIntToUInt8(fieldID)]; +} + + +- (void) writeI32: (int32_t) value +{ + uint8_t buff[4]; + buff[0] = 0xFF & (value >> 24); + buff[1] = 0xFF & (value >> 16); + buff[2] = 0xFF & (value >> 8); + buff[3] = 0xFF & value; + [mTransport write: buff offset: 0 length: 4]; +} + +- (void) writeI16: (short) value +{ + uint8_t buff[2]; + buff[0] = 0xff & (value >> 8); + buff[1] = 0xff & value; + [mTransport write: buff offset: 0 length: 2]; +} + + +- (void) writeI64: (int64_t) value +{ + uint8_t buff[8]; + buff[0] = 0xFF & (value >> 56); + buff[1] = 0xFF & (value >> 48); + buff[2] = 0xFF & (value >> 40); + buff[3] = 0xFF & (value >> 32); + buff[4] = 0xFF & (value >> 24); + buff[5] = 0xFF & (value >> 16); + buff[6] = 0xFF & (value >> 8); + buff[7] = 0xFF & value; + [mTransport write: buff offset: 0 length: 8]; +} + +- (void) writeDouble: (double) value +{ + // spit out IEEE 754 bits - FIXME - will this get us in trouble on + // PowerPC? + [self writeI64: *((int64_t *) &value)]; +} + + +- (void) writeString: (NSString *) value +{ + if (value != nil) { + const char * utf8Bytes = [value UTF8String]; + size_t length = strlen(utf8Bytes); + int32_t size = CheckedCastSizeTToInt32(length); + [self writeI32: size]; + [mTransport write: (uint8_t *) utf8Bytes offset: 0 length: length]; + } else { + // instead of crashing when we get null, let's write out a zero + // length string + [self writeI32: 0]; + } +} + + +- (void) writeBinary: (NSData *) data +{ + int32_t size = CheckedCastSizeTToInt32([data length]); + [self writeI32: size]; + [mTransport write: [data bytes] offset: 0 length: [data length]]; +} + +- (void) writeFieldStop +{ + [self writeByte: TType_STOP]; +} + + +- (void) writeFieldEnd {} + + +- (void) writeMapBeginWithKeyType: (int) keyType + valueType: (int) valueType + size: (int) size +{ + [self writeByte: CheckedCastIntToUInt8(keyType)]; + [self writeByte: CheckedCastIntToUInt8(valueType)]; + [self writeI32: size]; +} + +- (void) writeMapEnd {} + + +- (void) writeSetBeginWithElementType: (int) elementType + size: (int) size +{ + [self writeByte: CheckedCastIntToUInt8(elementType)]; + [self writeI32: size]; +} + +- (void) writeSetEnd {} + + +- (void) writeListBeginWithElementType: (int) elementType + size: (int) size +{ + [self writeByte: CheckedCastIntToUInt8(elementType)]; + [self writeI32: size]; +} + +- (void) writeListEnd {} + + +- (void) writeBool: (BOOL) value +{ + [self writeByte: (value ? 1 : 0)]; +} + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TCompactProtocol.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TCompactProtocol.h b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TCompactProtocol.h new file mode 100644 index 0000000..3c9195c --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TCompactProtocol.h @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TProtocol.h" +#import "TTransport.h" +#import "TProtocolFactory.h" + +@interface TCompactProtocol : NSObject <TProtocol> + +- (id) initWithTransport: (id <TTransport>) transport; + +@end + +@interface TCompactProtocolFactory : NSObject <TProtocolFactory> + ++ (TCompactProtocolFactory *) sharedFactory; + +- (TCompactProtocol *) newProtocolOnTransport: (id <TTransport>) transport; + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TCompactProtocol.m ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TCompactProtocol.m b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TCompactProtocol.m new file mode 100644 index 0000000..45b0ef3 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TCompactProtocol.m @@ -0,0 +1,687 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TCompactProtocol.h" +#import "TObjective-C.h" +#import "TProtocolException.h" + +static const uint8_t COMPACT_PROTOCOL_ID = 0x82; +static const uint8_t COMPACT_VERSION = 1; +static const uint8_t COMPACT_VERSION_MASK = 0x1F; // 0001 1111 +static const uint8_t COMPACT_TYPE_MASK = 0xE0; // 1110 0000 +static const uint8_t COMPACT_TYPE_BITS = 0x07; // 0000 0111 +static const int COMPACT_TYPE_SHIFT_AMOUNT = 5; + +enum { + TCType_STOP = 0x00, + TCType_BOOLEAN_TRUE = 0x01, + TCType_BOOLEAN_FALSE = 0x02, + TCType_BYTE = 0x03, + TCType_I16 = 0x04, + TCType_I32 = 0x05, + TCType_I64 = 0x06, + TCType_DOUBLE = 0x07, + TCType_BINARY = 0x08, + TCType_LIST = 0x09, + TCType_SET = 0x0A, + TCType_MAP = 0x0B, + TCType_STRUCT = 0x0C, +}; + +@implementation TCompactProtocolFactory + ++ (TCompactProtocolFactory *) sharedFactory +{ + static TCompactProtocolFactory * gSharedFactory = nil; + if (gSharedFactory == nil) { + gSharedFactory = [[TCompactProtocolFactory alloc] init]; + } + + return gSharedFactory; +} + +- (TCompactProtocol *) newProtocolOnTransport: (id <TTransport>) transport +{ + return [[TCompactProtocol alloc] initWithTransport: transport]; +} + +@end + +@implementation TCompactProtocol { + NSMutableArray * lastField; + short lastFieldId; + id <TTransport> mTransport; + + NSString * boolFieldName; + NSNumber * boolFieldType; + NSNumber * boolFieldId; + NSNumber * booleanValue; +} + +- (id) init +{ + self = [super init]; + + if (self != nil) { + lastField = [[NSMutableArray alloc] init]; + } + + return self; +} + +- (id) initWithTransport: (id <TTransport>) transport +{ + self = [self init]; + + if (self != nil) { + mTransport = [transport retain_stub]; + } + + return self; +} + +- (void) dealloc +{ + [lastField release_stub]; + [mTransport release_stub]; + [boolFieldName release_stub]; + [boolFieldType release_stub]; + [boolFieldId release_stub]; + [booleanValue release_stub]; + + [super dealloc_stub]; +} + +- (id <TTransport>) transport +{ + return mTransport; +} + +- (void) writeByteDirect: (int8_t) n +{ + [mTransport write: (uint8_t *)&n offset: 0 length: 1]; +} + +- (void)writeVarint32: (uint32_t) n +{ + uint8_t i32buf[5] = {0}; + uint32_t idx = 0; + + while (true) { + if ((n & ~0x7F) == 0) { + i32buf[idx++] = (uint8_t)n; + break; + } else { + i32buf[idx++] = (uint8_t)((n & 0x7F) | 0x80); + n >>= 7; + } + } + + [mTransport write: i32buf offset: 0 length: idx]; +} + +- (void) writeMessageBeginWithName: (NSString *) name + type: (int) messageType + sequenceID: (int) sequenceID +{ + [self writeByteDirect: COMPACT_PROTOCOL_ID]; + [self writeByteDirect: (uint8_t)((COMPACT_VERSION & COMPACT_VERSION_MASK) | + ((((uint32_t)messageType) << COMPACT_TYPE_SHIFT_AMOUNT) & COMPACT_TYPE_MASK))]; + [self writeVarint32: (uint32_t)sequenceID]; + [self writeString: name]; +} + +- (void) writeStructBeginWithName: (NSString *) name +{ + [lastField addObject: [NSNumber numberWithShort: lastFieldId]]; + lastFieldId = 0; +} + +- (void) writeStructEnd +{ + lastFieldId = [[lastField lastObject] shortValue]; + [lastField removeLastObject]; +} + +- (void) writeFieldBeginWithName: (NSString *) name + type: (int) fieldType + fieldID: (int) fieldID +{ + if (fieldType == TType_BOOL) { + boolFieldName = [name copy]; + boolFieldType = [[NSNumber numberWithInt: fieldType] retain_stub]; + boolFieldId = [[NSNumber numberWithInt: fieldID] retain_stub]; + } else { + [self writeFieldBeginInternalWithName: name + type: fieldType + fieldID: fieldID + typeOverride: 0xFF]; + } +} + +- (void) writeFieldBeginInternalWithName: (NSString *) name + type: (int) fieldType + fieldID: (int) fieldID + typeOverride: (uint8_t) typeOverride +{ + uint8_t typeToWrite = typeOverride == 0xFF ? [self compactTypeForTType: fieldType] : typeOverride; + + // check if we can use delta encoding for the field id + if (fieldID > lastFieldId && fieldID - lastFieldId <= 15) { + // Write them together + [self writeByteDirect: (fieldID - lastFieldId) << 4 | typeToWrite]; + } else { + // Write them separate + [self writeByteDirect: typeToWrite]; + [self writeI16: fieldID]; + } + + lastFieldId = fieldID; +} + +- (void) writeFieldStop +{ + [self writeByteDirect: TCType_STOP]; +} + +- (void) writeMapBeginWithKeyType: (int) keyType + valueType: (int) valueType + size: (int) size +{ + if (size == 0) { + [self writeByteDirect: 0]; + } else { + [self writeVarint32: (uint32_t)size]; + [self writeByteDirect: [self compactTypeForTType: keyType] << 4 | [self compactTypeForTType: valueType]]; + } +} + +- (void) writeListBeginWithElementType: (int) elementType + size: (int) size +{ + [self writeCollectionBeginWithElementType: elementType size: size]; +} + +- (void) writeSetBeginWithElementType: (int) elementType + size: (int) size +{ + [self writeCollectionBeginWithElementType: elementType size: size]; +} + +- (void) writeBool: (BOOL) b +{ + if (boolFieldId != nil && boolFieldName != nil && boolFieldType != nil) { + // we haven't written the field header yet + [self writeFieldBeginInternalWithName: boolFieldName + type: [boolFieldType intValue] + fieldID: [boolFieldId intValue] + typeOverride: b ? TCType_BOOLEAN_TRUE : TCType_BOOLEAN_FALSE]; + + [boolFieldId release_stub]; + [boolFieldName release_stub]; + [boolFieldType release_stub]; + + boolFieldId = nil; + boolFieldName = nil; + boolFieldType = nil; + } else { + // we're not part of a field, so just Write the value. + [self writeByteDirect: b ? TCType_BOOLEAN_TRUE : TCType_BOOLEAN_FALSE]; + } +} + +- (void) writeByte: (uint8_t) value +{ + [self writeByteDirect: value]; +} + +- (void) writeI16: (int16_t) value +{ + [self writeVarint32: [self i32ToZigZag: value]]; +} + +- (void) writeI32: (int32_t) value +{ + [self writeVarint32: [self i32ToZigZag: value]]; +} + +- (void) writeI64: (int64_t) value +{ + [self writeVarint64: [self i64ToZigZag: value]]; +} + +- (void) writeDouble: (double) value +{ + //Safe bit-casting double->uint64 + + uint64_t bits = 0; + memcpy(&bits, &value, 8); + + bits = OSSwapHostToLittleInt64(bits); + + [mTransport write: (uint8_t *)&bits offset: 0 length: 8]; +} + +- (void) writeString: (NSString *) value +{ + [self writeBinary: [value dataUsingEncoding: NSUTF8StringEncoding]]; +} + +- (void) writeBinary: (NSData *) data +{ + [self writeVarint32: (uint32_t)data.length]; + [mTransport write: data.bytes offset: 0 length: data.length]; +} + +- (void) writeMessageEnd {} +- (void) writeMapEnd {} +- (void) writeListEnd {} +- (void) writeSetEnd {} +- (void) writeFieldEnd {} + +- (void) writeCollectionBeginWithElementType: (int) elementType + size: (int) size +{ + if (size <= 14) { + [self writeByteDirect: size << 4 | [self compactTypeForTType: elementType]]; + } else { + [self writeByteDirect: 0xf0 | [self compactTypeForTType: elementType]]; + [self writeVarint32: (uint32_t)size]; + } +} + +- (void) writeVarint64: (uint64_t) n +{ + uint8_t varint64out[10] = {0}; + int idx = 0; + + while (true) { + if ((n & ~0x7FL) == 0) { + varint64out[idx++] = (uint8_t)n; + break; + } else { + varint64out[idx++] = (uint8_t)((n & 0x7F) | 0x80); + n >>= 7; + } + } + + [mTransport write: varint64out offset: 0 length: idx]; +} + +- (uint32_t) i32ToZigZag: (int32_t) n +{ + /* + ZigZag encoding maps signed integers to unsigned integers so that + numbers with a small absolute value (for instance, -1) have + a small varint encoded value too. It does this in a way that + "zig-zags" back and forth through the positive and negative integers, + so that -1 is encoded as 1, 1 is encoded as 2, -2 is encoded as 3, and so on + */ + return (uint32_t)(n << 1) ^ (uint32_t)(n >> 31); +} + +- (uint64_t) i64ToZigZag: (int64_t) n +{ + return (uint64_t)(n << 1) ^ (uint64_t)(n >> 63); +} + +- (void) readMessageBeginReturningName: (NSString **) pname + type: (int *) ptype + sequenceID: (int *) psequenceID +{ + uint8_t protocolId = [self readByte]; + if (protocolId != COMPACT_PROTOCOL_ID) { + @throw [TProtocolException exceptionWithName: @"TProtocolException" + reason: [NSString stringWithFormat: @"Expected protocol id %X but got %X", COMPACT_PROTOCOL_ID, protocolId]]; + } + + uint8_t versionAndType = [self readByte]; + uint8_t version = versionAndType & COMPACT_VERSION_MASK; + if (version != COMPACT_VERSION) { + @throw [TProtocolException exceptionWithName: @"TProtocolException" + reason: [NSString stringWithFormat: @"Expected version %d but got %d", COMPACT_VERSION, version]]; + } + + int type = (versionAndType >> COMPACT_TYPE_SHIFT_AMOUNT) & COMPACT_TYPE_BITS; + int sequenceID = (int)[self readVarint32]; + NSString* name = [self readString]; + + if (ptype != NULL) { + *ptype = type; + } + if (psequenceID != NULL) { + *psequenceID = sequenceID; + } + if (pname != NULL) { + *pname = name; + } +} + +- (void) readStructBeginReturningName: (NSString **) pname +{ + [lastField addObject: [NSNumber numberWithShort: lastFieldId]]; + lastFieldId = 0; + + if (pname != NULL) { + *pname = @""; + } +} + +- (void) readStructEnd +{ + lastFieldId = [[lastField lastObject] shortValue]; + [lastField removeLastObject]; +} + +- (void) readFieldBeginReturningName: (NSString **) pname + type: (int *) pfieldType + fieldID: (int *) pfieldID +{ + uint8_t byte = [self readByte]; + uint8_t type = byte & 0x0f; + + // if it's a stop, then we can return immediately, as the struct is over. + if (type == TCType_STOP) { + if (pname != NULL) { + *pname = @""; + } + if (pfieldType != NULL) { + *pfieldType = TType_STOP; + } + if (pfieldID != NULL) { + *pfieldID = 0; + } + return; + } + + short fieldId = 0; + + // mask off the 4 MSB of the type header. it could contain a field id delta. + short modifier = (byte & 0xf0) >> 4; + if (modifier == 0) { + // not a delta. look ahead for the zigzag varint field id. + fieldId = [self readI16]; + } else { + // has a delta. add the delta to the last Read field id. + fieldId = lastFieldId + modifier; + } + + int fieldType = [self ttypeForCompactType: type]; + + if (pname != NULL) { + *pname = @""; + } + if (pfieldType != NULL) { + *pfieldType = fieldType; + } + if (pfieldID != NULL) { + *pfieldID = fieldId; + } + + // if this happens to be a boolean field, the value is encoded in the type + if (type == TCType_BOOLEAN_TRUE || + type == TCType_BOOLEAN_FALSE) { + // save the boolean value in a special instance variable. + booleanValue = [[NSNumber numberWithBool: type == TCType_BOOLEAN_TRUE] retain_stub]; + } + + // push the new field onto the field stack so we can keep the deltas going. + lastFieldId = fieldId; +} + +- (void) readMapBeginReturningKeyType: (int *) pkeyType + valueType: (int *) pvalueType + size: (int *) psize +{ + uint8_t keyAndValueType = 0; + int size = (int)[self readVarint32]; + if (size != 0) { + keyAndValueType = [self readByte]; + } + + int keyType = [self ttypeForCompactType: keyAndValueType >> 4]; + int valueType = [self ttypeForCompactType: keyAndValueType & 0xf]; + + if (pkeyType != NULL) { + *pkeyType = keyType; + } + if (pvalueType != NULL) { + *pvalueType = valueType; + } + if (psize != NULL) { + *psize = size; + } +} + +- (void) readListBeginReturningElementType: (int *) pelementType + size: (int *) psize +{ + uint8_t size_and_type = [self readByte]; + int size = (size_and_type >> 4) & 0x0f; + if (size == 15) { + size = (int)[self readVarint32]; + } + + int elementType = [self ttypeForCompactType: size_and_type & 0x0f]; + + if (pelementType != NULL) { + *pelementType = elementType; + } + if (psize != NULL) { + *psize = size; + } +} + +- (void) readSetBeginReturningElementType: (int *) pelementType + size: (int *) psize +{ + [self readListBeginReturningElementType: pelementType size: psize]; +} + +- (BOOL) readBool +{ + if (booleanValue != nil) { + BOOL result = [booleanValue boolValue]; + [booleanValue release_stub]; + booleanValue = nil; + return result; + } else { + return [self readByte] == TCType_BOOLEAN_TRUE; + } +} + +- (uint8_t) readByte +{ + uint8_t buf = 0; + [mTransport readAll: &buf offset: 0 length: 1]; + return buf; +} + +- (int16_t) readI16 +{ + return (int16_t)[self zigZagToi32: [self readVarint32]]; +} + +- (int32_t) readI32 +{ + return [self zigZagToi32: [self readVarint32]]; +} + +- (int64_t) readI64 +{ + return [self zigZagToi64: [self readVarint64]]; +} + +- (double) readDouble +{ + uint64_t bits = 0; + [mTransport readAll: (uint8_t *)&bits offset: 0 length: 8]; + bits = OSSwapLittleToHostInt64(bits); + + double result = 0; + memcpy(&result, &bits, 8); + + return result; +} + +- (NSString *) readString +{ + int length = (int)[self readVarint32]; + if (length == 0) { + return @""; + } + + return [[[NSString alloc] initWithData: [self readBinary: length] + encoding: NSUTF8StringEncoding] autorelease_stub]; +} + +- (NSData *) readBinary +{ + return [self readBinary: (int)[self readVarint32]]; +} + +- (NSData *) readBinary: (int) length +{ + if (length == 0) { + return [NSData data]; + } + + NSMutableData* buf = [NSMutableData dataWithLength: length]; + [mTransport readAll: buf.mutableBytes offset: 0 length: length]; + return buf; +} + +- (void) readMessageEnd {} +- (void) readFieldEnd {} +- (void) readMapEnd {} +- (void) readListEnd {} +- (void) readSetEnd {} + +- (uint32_t) readVarint32 +{ + uint32_t result = 0; + int shift = 0; + + while (true) { + uint8_t byte = [self readByte]; + result |= (uint32_t)(byte & 0x7f) << shift; + if (!(byte & 0x80)) { + break; + } + + shift += 7; + } + return result; +} + +- (uint64_t) readVarint64 +{ + int shift = 0; + uint64_t result = 0; + + while (true) { + uint8_t byte = [self readByte]; + result |= (uint64_t)(byte & 0x7f) << shift; + if (!(byte & 0x80)) { + break; + } + + shift += 7; + } + + return result; +} + +- (int32_t) zigZagToi32: (uint32_t) n +{ + return (int32_t)(n >> 1) ^ (-(int32_t)(n & 1)); +} + +- (int64_t) zigZagToi64: (uint64_t) n +{ + return (int64_t)(n >> 1) ^ (-(int64_t)(n & 1)); +} + +- (uint8_t) ttypeForCompactType: (uint8_t) type +{ + switch (type & 0x0f) { + case TCType_STOP: + return TType_STOP; + + case TCType_BOOLEAN_FALSE: + case TCType_BOOLEAN_TRUE: + return TType_BOOL; + + case TCType_BYTE: + return TType_BYTE; + + case TCType_I16: + return TType_I16; + + case TCType_I32: + return TType_I32; + + case TCType_I64: + return TType_I64; + + case TCType_DOUBLE: + return TType_DOUBLE; + + case TCType_BINARY: + return TType_STRING; + + case TCType_LIST: + return TType_LIST; + + case TCType_SET: + return TType_SET; + + case TCType_MAP: + return TType_MAP; + + case TCType_STRUCT: + return TType_STRUCT; + + default: + @throw [TProtocolException exceptionWithName: @"TProtocolException" + reason: [NSString stringWithFormat: @"Don't know what type: %d", (uint8_t)(type & 0x0F)]]; + } +} + +- (uint8_t) compactTypeForTType: (uint8_t) ttype +{ + static uint8_t ttypeToCompactType[] = { + [TType_STOP] = TCType_STOP, + [TType_BOOL] = TCType_BOOLEAN_FALSE, + [TType_BYTE] = TCType_BYTE, + [TType_DOUBLE] = TCType_DOUBLE, + [TType_I16] = TCType_I16, + [TType_I32] = TCType_I32, + [TType_I64] = TCType_I64, + [TType_STRING] = TCType_BINARY, + [TType_STRUCT] = TCType_STRUCT, + [TType_MAP] = TCType_MAP, + [TType_SET] = TCType_SET, + [TType_LIST] = TCType_LIST + }; + + return ttypeToCompactType[ttype]; +} + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TMultiplexedProtocol.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TMultiplexedProtocol.h b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TMultiplexedProtocol.h new file mode 100644 index 0000000..f298459 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TMultiplexedProtocol.h @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import <Foundation/Foundation.h> + +#import "TProtocolDecorator.h" + +FOUNDATION_EXPORT NSString *const MULTIPLEXED_SERVICE_SEPERATOR; + +@interface TMultiplexedProtocol : TProtocolDecorator { + NSString * mServiceName; +} + +- (id) initWithProtocol: (id <TProtocol>) protocol + serviceName: (NSString *) name; + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TMultiplexedProtocol.m ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TMultiplexedProtocol.m b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TMultiplexedProtocol.m new file mode 100644 index 0000000..49095e3 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TMultiplexedProtocol.m @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TMultiplexedProtocol.h" + +#import "TProtocol.h" +#import "TObjective-C.h" + +NSString *const MULTIPLEXED_SERVICE_SEPERATOR = @":"; + +@implementation TMultiplexedProtocol + +- (id) initWithProtocol: (id <TProtocol>) protocol + serviceName: (NSString *) name +{ + self = [super initWithProtocol:protocol]; + + if (self) { + mServiceName = [name retain_stub]; + } + return self; +} + +- (void) writeMessageBeginWithName: (NSString *) name + type: (int) messageType + sequenceID: (int) sequenceID +{ + switch (messageType) { + case TMessageType_CALL: + case TMessageType_ONEWAY: + { + NSMutableString * serviceFunction = [[NSMutableString alloc] initWithString:mServiceName]; + [serviceFunction appendString:MULTIPLEXED_SERVICE_SEPERATOR]; + [serviceFunction appendString:name]; + [super writeMessageBeginWithName:serviceFunction type:messageType sequenceID:sequenceID]; + [serviceFunction release_stub]; + } + break; + default: + [super writeMessageBeginWithName:name type:messageType sequenceID:sequenceID]; + break; + } +} + +- (void) dealloc +{ + [mServiceName release_stub]; + [super dealloc_stub]; +} + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocol.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocol.h b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocol.h new file mode 100644 index 0000000..281239d --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocol.h @@ -0,0 +1,148 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import <Foundation/Foundation.h> + +#import "TTransport.h" + + +enum { + TMessageType_CALL = 1, + TMessageType_REPLY = 2, + TMessageType_EXCEPTION = 3, + TMessageType_ONEWAY = 4 +}; + +enum { + TType_STOP = 0, + TType_VOID = 1, + TType_BOOL = 2, + TType_BYTE = 3, + TType_DOUBLE = 4, + TType_I16 = 6, + TType_I32 = 8, + TType_I64 = 10, + TType_STRING = 11, + TType_STRUCT = 12, + TType_MAP = 13, + TType_SET = 14, + TType_LIST = 15 +}; + + +@protocol TProtocol <NSObject> + +- (id <TTransport>) transport; + +- (void) readMessageBeginReturningName: (NSString **) name + type: (int *) type + sequenceID: (int *) sequenceID; +- (void) readMessageEnd; + +- (void) readStructBeginReturningName: (NSString **) name; +- (void) readStructEnd; + +- (void) readFieldBeginReturningName: (NSString **) name + type: (int *) fieldType + fieldID: (int *) fieldID; +- (void) readFieldEnd; + +- (NSString *) readString; + +- (BOOL) readBool; + +- (unsigned char) readByte; + +- (short) readI16; + +- (int32_t) readI32; + +- (int64_t) readI64; + +- (double) readDouble; + +- (NSData *) readBinary; + +- (void) readMapBeginReturningKeyType: (int *) keyType + valueType: (int *) valueType + size: (int *) size; +- (void) readMapEnd; + + +- (void) readSetBeginReturningElementType: (int *) elementType + size: (int *) size; +- (void) readSetEnd; + + +- (void) readListBeginReturningElementType: (int *) elementType + size: (int *) size; +- (void) readListEnd; + + +- (void) writeMessageBeginWithName: (NSString *) name + type: (int) messageType + sequenceID: (int) sequenceID; +- (void) writeMessageEnd; + +- (void) writeStructBeginWithName: (NSString *) name; +- (void) writeStructEnd; + +- (void) writeFieldBeginWithName: (NSString *) name + type: (int) fieldType + fieldID: (int) fieldID; + +- (void) writeI32: (int32_t) value; + +- (void) writeI64: (int64_t) value; + +- (void) writeI16: (short) value; + +- (void) writeByte: (uint8_t) value; + +- (void) writeString: (NSString *) value; + +- (void) writeDouble: (double) value; + +- (void) writeBool: (BOOL) value; + +- (void) writeBinary: (NSData *) data; + +- (void) writeFieldStop; + +- (void) writeFieldEnd; + +- (void) writeMapBeginWithKeyType: (int) keyType + valueType: (int) valueType + size: (int) size; +- (void) writeMapEnd; + + +- (void) writeSetBeginWithElementType: (int) elementType + size: (int) size; +- (void) writeSetEnd; + + +- (void) writeListBeginWithElementType: (int) elementType + size: (int) size; + +- (void) writeListEnd; + + +@end + http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolDecorator.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolDecorator.h b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolDecorator.h new file mode 100644 index 0000000..829bed6 --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolDecorator.h @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import <Foundation/Foundation.h> + +#import "TProtocol.h" + +@interface TProtocolDecorator : NSObject <TProtocol> { + id<TProtocol> mConcreteProtocol; +} + +- (id) initWithProtocol: (id <TProtocol>) protocol; + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolDecorator.m ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolDecorator.m b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolDecorator.m new file mode 100644 index 0000000..e5acb6c --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolDecorator.m @@ -0,0 +1,274 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TProtocolDecorator.h" +#import "TObjective-C.h" + +@implementation TProtocolDecorator + +- (id) initWithProtocol: (id <TProtocol>) protocol +{ + self = [super init]; + if (self) { + mConcreteProtocol = [protocol retain_stub]; + } + return self; +} + +- (id <TTransport>) transport +{ + return [mConcreteProtocol transport]; +} + +- (void) readMessageBeginReturningName: (NSString **) name + type: (int *) type + sequenceID: (int *) sequenceID +{ + [mConcreteProtocol readMessageBeginReturningName:name + type:type + sequenceID:sequenceID]; +} + +- (void) readMessageEnd +{ + [mConcreteProtocol readMessageEnd]; +} + +- (void) readStructBeginReturningName: (NSString **) name +{ + [mConcreteProtocol readStructBeginReturningName:name]; +} + +- (void) readStructEnd +{ + [mConcreteProtocol readStructEnd]; +} + +- (void) readFieldBeginReturningName: (NSString **) name + type: (int *) fieldType + fieldID: (int *) fieldID +{ + [mConcreteProtocol readFieldBeginReturningName:name + type:fieldType + fieldID:fieldID]; +} +- (void) readFieldEnd +{ + [mConcreteProtocol readFieldEnd]; +} + +- (NSString *) readString +{ + return [mConcreteProtocol readString]; +} + +- (BOOL) readBool +{ + return [mConcreteProtocol readBool]; +} + +- (unsigned char) readByte +{ + return [mConcreteProtocol readByte]; +} + +- (short) readI16 +{ + return [mConcreteProtocol readI16]; +} + +- (int32_t) readI32 +{ + return [mConcreteProtocol readI32]; +} + +- (int64_t) readI64 +{ + return [mConcreteProtocol readI64]; +} + +- (double) readDouble +{ + return [mConcreteProtocol readDouble]; +} + +- (NSData *) readBinary +{ + return [mConcreteProtocol readBinary]; +} + +- (void) readMapBeginReturningKeyType: (int *) keyType + valueType: (int *) valueType + size: (int *) size +{ + [mConcreteProtocol readMapBeginReturningKeyType:keyType + valueType:valueType + size:size]; +} +- (void) readMapEnd +{ + [mConcreteProtocol readMapEnd]; +} + + +- (void) readSetBeginReturningElementType: (int *) elementType + size: (int *) size +{ + [mConcreteProtocol readSetBeginReturningElementType:elementType + size:size]; +} +- (void) readSetEnd +{ + [mConcreteProtocol readSetEnd]; +} + +- (void) readListBeginReturningElementType: (int *) elementType + size: (int *) size +{ + [mConcreteProtocol readListBeginReturningElementType:elementType + size:size]; +} +- (void) readListEnd +{ + [mConcreteProtocol readListEnd]; +} + +- (void) writeMessageBeginWithName: (NSString *) name + type: (int) messageType + sequenceID: (int) sequenceID +{ + [mConcreteProtocol writeMessageBeginWithName:name + type:messageType + sequenceID:sequenceID]; +} +- (void) writeMessageEnd +{ + [mConcreteProtocol writeMessageEnd]; +} + +- (void) writeStructBeginWithName: (NSString *) name +{ + [mConcreteProtocol writeStructBeginWithName:name]; +} +- (void) writeStructEnd +{ + [mConcreteProtocol writeStructEnd]; +} + +- (void) writeFieldBeginWithName: (NSString *) name + type: (int) fieldType + fieldID: (int) fieldID +{ + [mConcreteProtocol writeFieldBeginWithName:name + type:fieldType + fieldID:fieldID]; +} + +- (void) writeI32: (int32_t) value +{ + [mConcreteProtocol writeI32:value]; +} + +- (void) writeI64: (int64_t) value +{ + [mConcreteProtocol writeI64:value]; +} + +- (void) writeI16: (short) value +{ + [mConcreteProtocol writeI16:value]; +} + +- (void) writeByte: (uint8_t) value +{ + [mConcreteProtocol writeByte:value]; +} + +- (void) writeString: (NSString *) value +{ + [mConcreteProtocol writeString:value]; +} + +- (void) writeDouble: (double) value +{ + [mConcreteProtocol writeDouble:value]; +} + +- (void) writeBool: (BOOL) value +{ + [mConcreteProtocol writeBool:value]; +} + +- (void) writeBinary: (NSData *) data +{ + [mConcreteProtocol writeBinary:data]; +} + +- (void) writeFieldStop +{ + [mConcreteProtocol writeFieldStop]; +} + +- (void) writeFieldEnd +{ + [mConcreteProtocol writeFieldEnd]; +} + +- (void) writeMapBeginWithKeyType: (int) keyType + valueType: (int) valueType + size: (int) size +{ + [mConcreteProtocol writeMapBeginWithKeyType:keyType + valueType:valueType + size:size]; +} +- (void) writeMapEnd +{ + [mConcreteProtocol writeMapEnd]; +} + +- (void) writeSetBeginWithElementType: (int) elementType + size: (int) size +{ + [mConcreteProtocol writeSetBeginWithElementType:elementType size:size]; +} + +- (void) writeSetEnd +{ + [mConcreteProtocol writeSetEnd]; +} + +- (void) writeListBeginWithElementType: (int) elementType + size: (int) size +{ + [mConcreteProtocol writeListBeginWithElementType:elementType size:size]; +} + +- (void) writeListEnd +{ + [mConcreteProtocol writeListEnd]; +} + +- (void) dealloc +{ + [mConcreteProtocol release_stub]; + [super dealloc_stub]; +} + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolException.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolException.h b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolException.h new file mode 100644 index 0000000..ad354fc --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolException.h @@ -0,0 +1,25 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TException.h" + +@interface TProtocolException : TException { +} + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolException.m ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolException.m b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolException.m new file mode 100644 index 0000000..681487a --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolException.m @@ -0,0 +1,23 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TProtocolException.h" + +@implementation TProtocolException +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolFactory.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolFactory.h b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolFactory.h new file mode 100644 index 0000000..f200a6d --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolFactory.h @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import <Foundation/Foundation.h> +#import "TProtocol.h" +#import "TTransport.h" + + +@protocol TProtocolFactory <NSObject> + +- (id <TProtocol>) newProtocolOnTransport: (id <TTransport>) transport; + +@end http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d709f67d/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolUtil.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolUtil.h b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolUtil.h new file mode 100644 index 0000000..757748a --- /dev/null +++ b/depends/thirdparty/thrift/lib/cocoa/src/protocol/TProtocolUtil.h @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#import "TProtocol.h" +#import "TTransport.h" + +@interface TProtocolUtil : NSObject { + +} + ++ (void) skipType: (int) type onProtocol: (id <TProtocol>) protocol; + +@end
