aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objective-c/generated_libraries
diff options
context:
space:
mode:
authorGravatar Jorge Canizales <jcanizales@google.com>2015-05-29 20:04:38 -0700
committerGravatar Jorge Canizales <jcanizales@google.com>2015-05-30 19:25:12 -0700
commit28848229b59127017534cc11a93ab9bce81d8123 (patch)
tree9f1351cb0536de084935e8f268bcca3829ddd5e3 /src/objective-c/generated_libraries
parenteb1509c18c3a0cd8a5e8b1933134da4f221403d5 (diff)
Move RemoteTestClient files to /objective-c
The tests are going to use it too
Diffstat (limited to 'src/objective-c/generated_libraries')
-rw-r--r--src/objective-c/generated_libraries/RemoteTestClient/Empty.pbobjc.h33
-rw-r--r--src/objective-c/generated_libraries/RemoteTestClient/Empty.pbobjc.m59
-rw-r--r--src/objective-c/generated_libraries/RemoteTestClient/Messages.pbobjc.h221
-rw-r--r--src/objective-c/generated_libraries/RemoteTestClient/Messages.pbobjc.m603
-rw-r--r--src/objective-c/generated_libraries/RemoteTestClient/RemoteTest.podspec24
-rw-r--r--src/objective-c/generated_libraries/RemoteTestClient/Test.pbobjc.h12
-rw-r--r--src/objective-c/generated_libraries/RemoteTestClient/Test.pbobjc.m9
-rw-r--r--src/objective-c/generated_libraries/RemoteTestClient/Test.pbrpc.h59
-rw-r--r--src/objective-c/generated_libraries/RemoteTestClient/Test.pbrpc.m96
-rw-r--r--src/objective-c/generated_libraries/RemoteTestClient/empty.proto44
-rw-r--r--src/objective-c/generated_libraries/RemoteTestClient/messages.proto133
-rw-r--r--src/objective-c/generated_libraries/RemoteTestClient/test.proto73
12 files changed, 1366 insertions, 0 deletions
diff --git a/src/objective-c/generated_libraries/RemoteTestClient/Empty.pbobjc.h b/src/objective-c/generated_libraries/RemoteTestClient/Empty.pbobjc.h
new file mode 100644
index 0000000000..809d0dde6e
--- /dev/null
+++ b/src/objective-c/generated_libraries/RemoteTestClient/Empty.pbobjc.h
@@ -0,0 +1,33 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: empty.proto
+
+#import "GPBProtocolBuffers.h"
+
+#if GOOGLE_PROTOBUF_OBJC_GEN_VERSION != 30000
+#error This file was generated by a different version of protoc-gen-objc which is incompatible with your Protocol Buffer sources.
+#endif
+
+CF_EXTERN_C_BEGIN
+
+@class RMTEmpty;
+
+
+#pragma mark - RMTEmptyRoot
+
+@interface RMTEmptyRoot : GPBRootObject
+@end
+
+#pragma mark - RMTEmpty
+
+// An empty message that you can re-use to avoid defining duplicated empty
+// messages in your project. A typical example is to use it as argument or the
+// return value of a service API. For instance:
+//
+// service Foo {
+// rpc Bar (grpc.testing.Empty) returns (grpc.testing.Empty) { };
+// };
+@interface RMTEmpty : GPBMessage
+
+@end
+
+CF_EXTERN_C_END
diff --git a/src/objective-c/generated_libraries/RemoteTestClient/Empty.pbobjc.m b/src/objective-c/generated_libraries/RemoteTestClient/Empty.pbobjc.m
new file mode 100644
index 0000000000..46d481af66
--- /dev/null
+++ b/src/objective-c/generated_libraries/RemoteTestClient/Empty.pbobjc.m
@@ -0,0 +1,59 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: empty.proto
+
+#import "GPBProtocolBuffers_RuntimeSupport.h"
+
+#import "Empty.pbobjc.h"
+
+#pragma mark - RMTEmptyRoot
+
+@implementation RMTEmptyRoot
+
+@end
+
+static GPBFileDescriptor *RMTEmptyRoot_FileDescriptor(void) {
+ // This is called by +initialize so there is no need to worry
+ // about thread safety of the singleton.
+ static GPBFileDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ descriptor = [[GPBFileDescriptor alloc] initWithPackage:@"grpc.testing"
+ syntax:GPBFileSyntaxProto3];
+ }
+ return descriptor;
+}
+
+#pragma mark - RMTEmpty
+
+@implementation RMTEmpty
+
+
+typedef struct RMTEmpty_Storage {
+ uint32_t _has_storage_[0];
+} RMTEmpty_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTEmpty class]
+ rootClass:[RMTEmptyRoot class]
+ file:RMTEmptyRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTEmpty_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
diff --git a/src/objective-c/generated_libraries/RemoteTestClient/Messages.pbobjc.h b/src/objective-c/generated_libraries/RemoteTestClient/Messages.pbobjc.h
new file mode 100644
index 0000000000..5f32314175
--- /dev/null
+++ b/src/objective-c/generated_libraries/RemoteTestClient/Messages.pbobjc.h
@@ -0,0 +1,221 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: messages.proto
+
+#import "GPBProtocolBuffers.h"
+
+#if GOOGLE_PROTOBUF_OBJC_GEN_VERSION != 30000
+#error This file was generated by a different version of protoc-gen-objc which is incompatible with your Protocol Buffer sources.
+#endif
+
+CF_EXTERN_C_BEGIN
+
+@class RMTPayload;
+@class RMTResponseParameters;
+@class RMTSimpleRequest;
+@class RMTSimpleResponse;
+@class RMTStreamingInputCallRequest;
+@class RMTStreamingInputCallResponse;
+@class RMTStreamingOutputCallRequest;
+@class RMTStreamingOutputCallResponse;
+
+#pragma mark - Enum RMTPayloadType
+
+// The type of payload that should be returned.
+typedef GPB_ENUM(RMTPayloadType) {
+ RMTPayloadType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
+ // Compressable text format.
+ RMTPayloadType_Compressable = 0,
+
+ // Uncompressable binary format.
+ RMTPayloadType_Uncompressable = 1,
+
+ // Randomly chosen from all other formats defined in this enum.
+ RMTPayloadType_Random = 2,
+};
+
+GPBEnumDescriptor *RMTPayloadType_EnumDescriptor(void);
+
+BOOL RMTPayloadType_IsValidValue(int32_t value);
+
+
+#pragma mark - RMTMessagesRoot
+
+@interface RMTMessagesRoot : GPBRootObject
+@end
+
+#pragma mark - RMTPayload
+
+typedef GPB_ENUM(RMTPayload_FieldNumber) {
+ RMTPayload_FieldNumber_Type = 1,
+ RMTPayload_FieldNumber_Body = 2,
+};
+
+// A block of data, to simply increase gRPC message size.
+@interface RMTPayload : GPBMessage
+
+// The type of data in body.
+@property(nonatomic, readwrite) RMTPayloadType type;
+
+// Primary contents of payload.
+@property(nonatomic, readwrite, copy) NSData *body;
+
+@end
+
+int32_t RMTPayload_Type_RawValue(RMTPayload *message);
+void SetRMTPayload_Type_RawValue(RMTPayload *message, int32_t value);
+
+#pragma mark - RMTSimpleRequest
+
+typedef GPB_ENUM(RMTSimpleRequest_FieldNumber) {
+ RMTSimpleRequest_FieldNumber_ResponseType = 1,
+ RMTSimpleRequest_FieldNumber_ResponseSize = 2,
+ RMTSimpleRequest_FieldNumber_Payload = 3,
+ RMTSimpleRequest_FieldNumber_FillUsername = 4,
+ RMTSimpleRequest_FieldNumber_FillOauthScope = 5,
+};
+
+// Unary request.
+@interface RMTSimpleRequest : GPBMessage
+
+// Desired payload type in the response from the server.
+// If response_type is RANDOM, server randomly chooses one from other formats.
+@property(nonatomic, readwrite) RMTPayloadType responseType;
+
+// Desired payload size in the response from the server.
+// If response_type is COMPRESSABLE, this denotes the size before compression.
+@property(nonatomic, readwrite) int32_t responseSize;
+
+// Optional input payload sent along with the request.
+@property(nonatomic, readwrite) BOOL hasPayload;
+@property(nonatomic, readwrite, strong) RMTPayload *payload;
+
+// Whether SimpleResponse should include username.
+@property(nonatomic, readwrite) BOOL fillUsername;
+
+// Whether SimpleResponse should include OAuth scope.
+@property(nonatomic, readwrite) BOOL fillOauthScope;
+
+@end
+
+int32_t RMTSimpleRequest_ResponseType_RawValue(RMTSimpleRequest *message);
+void SetRMTSimpleRequest_ResponseType_RawValue(RMTSimpleRequest *message, int32_t value);
+
+#pragma mark - RMTSimpleResponse
+
+typedef GPB_ENUM(RMTSimpleResponse_FieldNumber) {
+ RMTSimpleResponse_FieldNumber_Payload = 1,
+ RMTSimpleResponse_FieldNumber_Username = 2,
+ RMTSimpleResponse_FieldNumber_OauthScope = 3,
+};
+
+// Unary response, as configured by the request.
+@interface RMTSimpleResponse : GPBMessage
+
+// Payload to increase message size.
+@property(nonatomic, readwrite) BOOL hasPayload;
+@property(nonatomic, readwrite, strong) RMTPayload *payload;
+
+// The user the request came from, for verifying authentication was
+// successful when the client expected it.
+@property(nonatomic, readwrite, copy) NSString *username;
+
+// OAuth scope.
+@property(nonatomic, readwrite, copy) NSString *oauthScope;
+
+@end
+
+#pragma mark - RMTStreamingInputCallRequest
+
+typedef GPB_ENUM(RMTStreamingInputCallRequest_FieldNumber) {
+ RMTStreamingInputCallRequest_FieldNumber_Payload = 1,
+};
+
+// Client-streaming request.
+@interface RMTStreamingInputCallRequest : GPBMessage
+
+// Optional input payload sent along with the request.
+@property(nonatomic, readwrite) BOOL hasPayload;
+@property(nonatomic, readwrite, strong) RMTPayload *payload;
+
+@end
+
+#pragma mark - RMTStreamingInputCallResponse
+
+typedef GPB_ENUM(RMTStreamingInputCallResponse_FieldNumber) {
+ RMTStreamingInputCallResponse_FieldNumber_AggregatedPayloadSize = 1,
+};
+
+// Client-streaming response.
+@interface RMTStreamingInputCallResponse : GPBMessage
+
+// Aggregated size of payloads received from the client.
+@property(nonatomic, readwrite) int32_t aggregatedPayloadSize;
+
+@end
+
+#pragma mark - RMTResponseParameters
+
+typedef GPB_ENUM(RMTResponseParameters_FieldNumber) {
+ RMTResponseParameters_FieldNumber_Size = 1,
+ RMTResponseParameters_FieldNumber_IntervalUs = 2,
+};
+
+// Configuration for a particular response.
+@interface RMTResponseParameters : GPBMessage
+
+// Desired payload sizes in responses from the server.
+// If response_type is COMPRESSABLE, this denotes the size before compression.
+@property(nonatomic, readwrite) int32_t size;
+
+// Desired interval between consecutive responses in the response stream in
+// microseconds.
+@property(nonatomic, readwrite) int32_t intervalUs;
+
+@end
+
+#pragma mark - RMTStreamingOutputCallRequest
+
+typedef GPB_ENUM(RMTStreamingOutputCallRequest_FieldNumber) {
+ RMTStreamingOutputCallRequest_FieldNumber_ResponseType = 1,
+ RMTStreamingOutputCallRequest_FieldNumber_ResponseParametersArray = 2,
+ RMTStreamingOutputCallRequest_FieldNumber_Payload = 3,
+};
+
+// Server-streaming request.
+@interface RMTStreamingOutputCallRequest : GPBMessage
+
+// Desired payload type in the response from the server.
+// If response_type is RANDOM, the payload from each response in the stream
+// might be of different types. This is to simulate a mixed type of payload
+// stream.
+@property(nonatomic, readwrite) RMTPayloadType responseType;
+
+// Configuration for each expected response message.
+// |responseParametersArray| contains |RMTResponseParameters|
+@property(nonatomic, readwrite, strong) NSMutableArray *responseParametersArray;
+
+// Optional input payload sent along with the request.
+@property(nonatomic, readwrite) BOOL hasPayload;
+@property(nonatomic, readwrite, strong) RMTPayload *payload;
+
+@end
+
+int32_t RMTStreamingOutputCallRequest_ResponseType_RawValue(RMTStreamingOutputCallRequest *message);
+void SetRMTStreamingOutputCallRequest_ResponseType_RawValue(RMTStreamingOutputCallRequest *message, int32_t value);
+
+#pragma mark - RMTStreamingOutputCallResponse
+
+typedef GPB_ENUM(RMTStreamingOutputCallResponse_FieldNumber) {
+ RMTStreamingOutputCallResponse_FieldNumber_Payload = 1,
+};
+
+// Server-streaming response, as configured by the request and parameters.
+@interface RMTStreamingOutputCallResponse : GPBMessage
+
+// Payload to increase response size.
+@property(nonatomic, readwrite) BOOL hasPayload;
+@property(nonatomic, readwrite, strong) RMTPayload *payload;
+
+@end
+
+CF_EXTERN_C_END
diff --git a/src/objective-c/generated_libraries/RemoteTestClient/Messages.pbobjc.m b/src/objective-c/generated_libraries/RemoteTestClient/Messages.pbobjc.m
new file mode 100644
index 0000000000..98eb1dc87c
--- /dev/null
+++ b/src/objective-c/generated_libraries/RemoteTestClient/Messages.pbobjc.m
@@ -0,0 +1,603 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: messages.proto
+
+#import "GPBProtocolBuffers_RuntimeSupport.h"
+
+#import "Messages.pbobjc.h"
+
+#pragma mark - RMTMessagesRoot
+
+@implementation RMTMessagesRoot
+
+@end
+
+static GPBFileDescriptor *RMTMessagesRoot_FileDescriptor(void) {
+ // This is called by +initialize so there is no need to worry
+ // about thread safety of the singleton.
+ static GPBFileDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ descriptor = [[GPBFileDescriptor alloc] initWithPackage:@"grpc.testing"
+ syntax:GPBFileSyntaxProto3];
+ }
+ return descriptor;
+}
+
+#pragma mark - Enum RMTPayloadType
+
+GPBEnumDescriptor *RMTPayloadType_EnumDescriptor(void) {
+ static GPBEnumDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageEnumValueDescription values[] = {
+ { .name = "Compressable", .number = RMTPayloadType_Compressable },
+ { .name = "Uncompressable", .number = RMTPayloadType_Uncompressable },
+ { .name = "Random", .number = RMTPayloadType_Random },
+ };
+ descriptor = [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(RMTPayloadType)
+ values:values
+ valueCount:sizeof(values) / sizeof(GPBMessageEnumValueDescription)
+ enumVerifier:RMTPayloadType_IsValidValue];
+ }
+ return descriptor;
+}
+
+BOOL RMTPayloadType_IsValidValue(int32_t value__) {
+ switch (value__) {
+ case RMTPayloadType_Compressable:
+ case RMTPayloadType_Uncompressable:
+ case RMTPayloadType_Random:
+ return YES;
+ default:
+ return NO;
+ }
+}
+
+#pragma mark - RMTPayload
+
+@implementation RMTPayload
+
+@dynamic type;
+@dynamic body;
+
+typedef struct RMTPayload_Storage {
+ uint32_t _has_storage_[1];
+ RMTPayloadType type;
+ NSData *body;
+} RMTPayload_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "type",
+ .number = RMTPayload_FieldNumber_Type,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional | GPBFieldHasEnumDescriptor,
+ .type = GPBTypeEnum,
+ .offset = offsetof(RMTPayload_Storage, type),
+ .defaultValue.valueEnum = RMTPayloadType_Compressable,
+ .typeSpecific.enumDescFunc = RMTPayloadType_EnumDescriptor,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "body",
+ .number = RMTPayload_FieldNumber_Body,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeData,
+ .offset = offsetof(RMTPayload_Storage, body),
+ .defaultValue.valueData = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTPayload class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTPayload_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+int32_t RMTPayload_Type_RawValue(RMTPayload *message) {
+ GPBDescriptor *descriptor = [RMTPayload descriptor];
+ GPBFieldDescriptor *field = [descriptor fieldWithNumber:RMTPayload_FieldNumber_Type];
+ return GPBGetInt32IvarWithField(message, field);
+}
+
+void SetRMTPayload_Type_RawValue(RMTPayload *message, int32_t value) {
+ GPBDescriptor *descriptor = [RMTPayload descriptor];
+ GPBFieldDescriptor *field = [descriptor fieldWithNumber:RMTPayload_FieldNumber_Type];
+ GPBSetInt32IvarWithFieldInternal(message, field, value, descriptor.file.syntax);
+}
+
+#pragma mark - RMTSimpleRequest
+
+@implementation RMTSimpleRequest
+
+@dynamic responseType;
+@dynamic responseSize;
+@dynamic hasPayload, payload;
+@dynamic fillUsername;
+@dynamic fillOauthScope;
+
+typedef struct RMTSimpleRequest_Storage {
+ uint32_t _has_storage_[1];
+ BOOL fillUsername;
+ BOOL fillOauthScope;
+ RMTPayloadType responseType;
+ int32_t responseSize;
+ RMTPayload *payload;
+} RMTSimpleRequest_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "responseType",
+ .number = RMTSimpleRequest_FieldNumber_ResponseType,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional | GPBFieldHasEnumDescriptor,
+ .type = GPBTypeEnum,
+ .offset = offsetof(RMTSimpleRequest_Storage, responseType),
+ .defaultValue.valueEnum = RMTPayloadType_Compressable,
+ .typeSpecific.enumDescFunc = RMTPayloadType_EnumDescriptor,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "responseSize",
+ .number = RMTSimpleRequest_FieldNumber_ResponseSize,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RMTSimpleRequest_Storage, responseSize),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "payload",
+ .number = RMTSimpleRequest_FieldNumber_Payload,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RMTSimpleRequest_Storage, payload),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RMTPayload),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "fillUsername",
+ .number = RMTSimpleRequest_FieldNumber_FillUsername,
+ .hasIndex = 3,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeBool,
+ .offset = offsetof(RMTSimpleRequest_Storage, fillUsername),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "fillOauthScope",
+ .number = RMTSimpleRequest_FieldNumber_FillOauthScope,
+ .hasIndex = 4,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeBool,
+ .offset = offsetof(RMTSimpleRequest_Storage, fillOauthScope),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTSimpleRequest class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTSimpleRequest_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+int32_t RMTSimpleRequest_ResponseType_RawValue(RMTSimpleRequest *message) {
+ GPBDescriptor *descriptor = [RMTSimpleRequest descriptor];
+ GPBFieldDescriptor *field = [descriptor fieldWithNumber:RMTSimpleRequest_FieldNumber_ResponseType];
+ return GPBGetInt32IvarWithField(message, field);
+}
+
+void SetRMTSimpleRequest_ResponseType_RawValue(RMTSimpleRequest *message, int32_t value) {
+ GPBDescriptor *descriptor = [RMTSimpleRequest descriptor];
+ GPBFieldDescriptor *field = [descriptor fieldWithNumber:RMTSimpleRequest_FieldNumber_ResponseType];
+ GPBSetInt32IvarWithFieldInternal(message, field, value, descriptor.file.syntax);
+}
+
+#pragma mark - RMTSimpleResponse
+
+@implementation RMTSimpleResponse
+
+@dynamic hasPayload, payload;
+@dynamic username;
+@dynamic oauthScope;
+
+typedef struct RMTSimpleResponse_Storage {
+ uint32_t _has_storage_[1];
+ RMTPayload *payload;
+ NSString *username;
+ NSString *oauthScope;
+} RMTSimpleResponse_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "payload",
+ .number = RMTSimpleResponse_FieldNumber_Payload,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RMTSimpleResponse_Storage, payload),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RMTPayload),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "username",
+ .number = RMTSimpleResponse_FieldNumber_Username,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(RMTSimpleResponse_Storage, username),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "oauthScope",
+ .number = RMTSimpleResponse_FieldNumber_OauthScope,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(RMTSimpleResponse_Storage, oauthScope),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTSimpleResponse class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTSimpleResponse_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - RMTStreamingInputCallRequest
+
+@implementation RMTStreamingInputCallRequest
+
+@dynamic hasPayload, payload;
+
+typedef struct RMTStreamingInputCallRequest_Storage {
+ uint32_t _has_storage_[1];
+ RMTPayload *payload;
+} RMTStreamingInputCallRequest_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "payload",
+ .number = RMTStreamingInputCallRequest_FieldNumber_Payload,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RMTStreamingInputCallRequest_Storage, payload),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RMTPayload),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTStreamingInputCallRequest class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTStreamingInputCallRequest_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - RMTStreamingInputCallResponse
+
+@implementation RMTStreamingInputCallResponse
+
+@dynamic aggregatedPayloadSize;
+
+typedef struct RMTStreamingInputCallResponse_Storage {
+ uint32_t _has_storage_[1];
+ int32_t aggregatedPayloadSize;
+} RMTStreamingInputCallResponse_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "aggregatedPayloadSize",
+ .number = RMTStreamingInputCallResponse_FieldNumber_AggregatedPayloadSize,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RMTStreamingInputCallResponse_Storage, aggregatedPayloadSize),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTStreamingInputCallResponse class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTStreamingInputCallResponse_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - RMTResponseParameters
+
+@implementation RMTResponseParameters
+
+@dynamic size;
+@dynamic intervalUs;
+
+typedef struct RMTResponseParameters_Storage {
+ uint32_t _has_storage_[1];
+ int32_t size;
+ int32_t intervalUs;
+} RMTResponseParameters_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "size",
+ .number = RMTResponseParameters_FieldNumber_Size,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RMTResponseParameters_Storage, size),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "intervalUs",
+ .number = RMTResponseParameters_FieldNumber_IntervalUs,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(RMTResponseParameters_Storage, intervalUs),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTResponseParameters class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTResponseParameters_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - RMTStreamingOutputCallRequest
+
+@implementation RMTStreamingOutputCallRequest
+
+@dynamic responseType;
+@dynamic responseParametersArray;
+@dynamic hasPayload, payload;
+
+typedef struct RMTStreamingOutputCallRequest_Storage {
+ uint32_t _has_storage_[1];
+ RMTPayloadType responseType;
+ NSMutableArray *responseParametersArray;
+ RMTPayload *payload;
+} RMTStreamingOutputCallRequest_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "responseType",
+ .number = RMTStreamingOutputCallRequest_FieldNumber_ResponseType,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional | GPBFieldHasEnumDescriptor,
+ .type = GPBTypeEnum,
+ .offset = offsetof(RMTStreamingOutputCallRequest_Storage, responseType),
+ .defaultValue.valueEnum = RMTPayloadType_Compressable,
+ .typeSpecific.enumDescFunc = RMTPayloadType_EnumDescriptor,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "responseParametersArray",
+ .number = RMTStreamingOutputCallRequest_FieldNumber_ResponseParametersArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RMTStreamingOutputCallRequest_Storage, responseParametersArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RMTResponseParameters),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "payload",
+ .number = RMTStreamingOutputCallRequest_FieldNumber_Payload,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RMTStreamingOutputCallRequest_Storage, payload),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RMTPayload),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTStreamingOutputCallRequest class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTStreamingOutputCallRequest_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+int32_t RMTStreamingOutputCallRequest_ResponseType_RawValue(RMTStreamingOutputCallRequest *message) {
+ GPBDescriptor *descriptor = [RMTStreamingOutputCallRequest descriptor];
+ GPBFieldDescriptor *field = [descriptor fieldWithNumber:RMTStreamingOutputCallRequest_FieldNumber_ResponseType];
+ return GPBGetInt32IvarWithField(message, field);
+}
+
+void SetRMTStreamingOutputCallRequest_ResponseType_RawValue(RMTStreamingOutputCallRequest *message, int32_t value) {
+ GPBDescriptor *descriptor = [RMTStreamingOutputCallRequest descriptor];
+ GPBFieldDescriptor *field = [descriptor fieldWithNumber:RMTStreamingOutputCallRequest_FieldNumber_ResponseType];
+ GPBSetInt32IvarWithFieldInternal(message, field, value, descriptor.file.syntax);
+}
+
+#pragma mark - RMTStreamingOutputCallResponse
+
+@implementation RMTStreamingOutputCallResponse
+
+@dynamic hasPayload, payload;
+
+typedef struct RMTStreamingOutputCallResponse_Storage {
+ uint32_t _has_storage_[1];
+ RMTPayload *payload;
+} RMTStreamingOutputCallResponse_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "payload",
+ .number = RMTStreamingOutputCallResponse_FieldNumber_Payload,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(RMTStreamingOutputCallResponse_Storage, payload),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(RMTPayload),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[RMTStreamingOutputCallResponse class]
+ rootClass:[RMTMessagesRoot class]
+ file:RMTMessagesRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(RMTStreamingOutputCallResponse_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
diff --git a/src/objective-c/generated_libraries/RemoteTestClient/RemoteTest.podspec b/src/objective-c/generated_libraries/RemoteTestClient/RemoteTest.podspec
new file mode 100644
index 0000000000..36c2b509e8
--- /dev/null
+++ b/src/objective-c/generated_libraries/RemoteTestClient/RemoteTest.podspec
@@ -0,0 +1,24 @@
+Pod::Spec.new do |s|
+ s.name = 'RemoteTest'
+ s.version = '0.0.1'
+ s.summary = 'Protobuf library generated from test.proto, messages.proto, and empty.proto'
+ s.homepage = 'https://github.com/grpc/grpc/tree/master/src/objective-c/examples/Sample/RemoteTestClient'
+ s.license = 'New BSD'
+ s.authors = { 'Jorge Canizales' => 'jcanizales@google.com' }
+
+ s.ios.deployment_target = '6.0'
+ s.osx.deployment_target = '10.8'
+
+ s.subspec 'Messages' do |ms|
+ ms.source_files = '*.pbobjc.{h,m}'
+ ms.requires_arc = false
+ ms.dependency 'Protobuf', '~> 3.0'
+ end
+
+ s.subspec 'Services' do |ss|
+ ss.source_files = '*.pbrpc.{h,m}'
+ ss.requires_arc = true
+ ss.dependency 'gRPC', '~> 0.0'
+ ss.dependency 'RemoteTest/Messages'
+ end
+end
diff --git a/src/objective-c/generated_libraries/RemoteTestClient/Test.pbobjc.h b/src/objective-c/generated_libraries/RemoteTestClient/Test.pbobjc.h
new file mode 100644
index 0000000000..aaa0b6ce2d
--- /dev/null
+++ b/src/objective-c/generated_libraries/RemoteTestClient/Test.pbobjc.h
@@ -0,0 +1,12 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: test.proto
+
+#import "GPBProtocolBuffers.h"
+
+#if GOOGLE_PROTOBUF_OBJC_GEN_VERSION != 30000
+#error This file was generated by a different version of protoc-gen-objc which is incompatible with your Protocol Buffer sources.
+#endif
+
+CF_EXTERN_C_BEGIN
+
+CF_EXTERN_C_END
diff --git a/src/objective-c/generated_libraries/RemoteTestClient/Test.pbobjc.m b/src/objective-c/generated_libraries/RemoteTestClient/Test.pbobjc.m
new file mode 100644
index 0000000000..08562b828a
--- /dev/null
+++ b/src/objective-c/generated_libraries/RemoteTestClient/Test.pbobjc.m
@@ -0,0 +1,9 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: test.proto
+
+// File empty because all messages, extensions and enum have been filtered.
+
+
+// Dummy symbol that will be stripped but will avoid linker warnings about
+// no symbols in the .o form compiling this file.
+static int RMTTestRoot_dummy __attribute__((unused,used)) = 0;
diff --git a/src/objective-c/generated_libraries/RemoteTestClient/Test.pbrpc.h b/src/objective-c/generated_libraries/RemoteTestClient/Test.pbrpc.h
new file mode 100644
index 0000000000..f799c4fc92
--- /dev/null
+++ b/src/objective-c/generated_libraries/RemoteTestClient/Test.pbrpc.h
@@ -0,0 +1,59 @@
+#import "Test.pbobjc.h"
+#import <gRPC/ProtoService.h>
+
+#import "Empty.pbobjc.h"
+#import "Messages.pbobjc.h"
+
+@protocol GRXWriteable;
+@protocol GRXWriter;
+
+@protocol RMTTestService <NSObject>
+
+#pragma mark EmptyCall(Empty) returns (Empty)
+
+- (void)emptyCallWithRequest:(RMTEmpty *)request handler:(void(^)(RMTEmpty *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToEmptyCallWithRequest:(RMTEmpty *)request handler:(void(^)(RMTEmpty *response, NSError *error))handler;
+
+
+#pragma mark UnaryCall(SimpleRequest) returns (SimpleResponse)
+
+- (void)unaryCallWithRequest:(RMTSimpleRequest *)request handler:(void(^)(RMTSimpleResponse *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToUnaryCallWithRequest:(RMTSimpleRequest *)request handler:(void(^)(RMTSimpleResponse *response, NSError *error))handler;
+
+
+#pragma mark StreamingOutputCall(StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
+
+- (void)streamingOutputCallWithRequest:(RMTStreamingOutputCallRequest *)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToStreamingOutputCallWithRequest:(RMTStreamingOutputCallRequest *)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
+
+
+#pragma mark StreamingInputCall(stream StreamingInputCallRequest) returns (StreamingInputCallResponse)
+
+- (void)streamingInputCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RMTStreamingInputCallResponse *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToStreamingInputCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RMTStreamingInputCallResponse *response, NSError *error))handler;
+
+
+#pragma mark FullDuplexCall(stream StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
+
+- (void)fullDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToFullDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
+
+
+#pragma mark HalfDuplexCall(stream StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
+
+- (void)halfDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
+
+- (ProtoRPC *)RPCToHalfDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler;
+
+
+@end
+
+// Basic service implementation, over gRPC, that only does marshalling and parsing.
+@interface RMTTestService : ProtoService<RMTTestService>
+- (instancetype)initWithHost:(NSString *)host NS_DESIGNATED_INITIALIZER;
+@end
diff --git a/src/objective-c/generated_libraries/RemoteTestClient/Test.pbrpc.m b/src/objective-c/generated_libraries/RemoteTestClient/Test.pbrpc.m
new file mode 100644
index 0000000000..faba07769e
--- /dev/null
+++ b/src/objective-c/generated_libraries/RemoteTestClient/Test.pbrpc.m
@@ -0,0 +1,96 @@
+#import "Test.pbrpc.h"
+#import <gRPC/GRXWriteable.h>
+#import <gRPC/GRXWriter+Immediate.h>
+#import <gRPC/ProtoRPC.h>
+
+static NSString *const kPackageName = @"grpc.testing";
+static NSString *const kServiceName = @"TestService";
+
+@implementation RMTTestService
+
+// Designated initializer
+- (instancetype)initWithHost:(NSString *)host {
+ return (self = [super initWithHost:host packageName:kPackageName serviceName:kServiceName]);
+}
+
+// Override superclass initializer to disallow different package and service names.
+- (instancetype)initWithHost:(NSString *)host
+ packageName:(NSString *)packageName
+ serviceName:(NSString *)serviceName {
+ return [self initWithHost:host];
+}
+
+
+#pragma mark EmptyCall(Empty) returns (Empty)
+
+- (void)emptyCallWithRequest:(RMTEmpty *)request handler:(void(^)(RMTEmpty *response, NSError *error))handler{
+ [[self RPCToEmptyCallWithRequest:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToEmptyCallWithRequest:(RMTEmpty *)request handler:(void(^)(RMTEmpty *response, NSError *error))handler{
+ return [self RPCToMethod:@"EmptyCall"
+ requestsWriter:[GRXWriter writerWithValue:request]
+ responseClass:[RMTEmpty class]
+ responsesWriteable:[GRXWriteable writeableWithSingleValueHandler:handler]];
+}
+#pragma mark UnaryCall(SimpleRequest) returns (SimpleResponse)
+
+- (void)unaryCallWithRequest:(RMTSimpleRequest *)request handler:(void(^)(RMTSimpleResponse *response, NSError *error))handler{
+ [[self RPCToUnaryCallWithRequest:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToUnaryCallWithRequest:(RMTSimpleRequest *)request handler:(void(^)(RMTSimpleResponse *response, NSError *error))handler{
+ return [self RPCToMethod:@"UnaryCall"
+ requestsWriter:[GRXWriter writerWithValue:request]
+ responseClass:[RMTSimpleResponse class]
+ responsesWriteable:[GRXWriteable writeableWithSingleValueHandler:handler]];
+}
+#pragma mark StreamingOutputCall(StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
+
+- (void)streamingOutputCallWithRequest:(RMTStreamingOutputCallRequest *)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler{
+ [[self RPCToStreamingOutputCallWithRequest:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToStreamingOutputCallWithRequest:(RMTStreamingOutputCallRequest *)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler{
+ return [self RPCToMethod:@"StreamingOutputCall"
+ requestsWriter:[GRXWriter writerWithValue:request]
+ responseClass:[RMTStreamingOutputCallResponse class]
+ responsesWriteable:[GRXWriteable writeableWithStreamHandler:handler]];
+}
+#pragma mark StreamingInputCall(stream StreamingInputCallRequest) returns (StreamingInputCallResponse)
+
+- (void)streamingInputCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RMTStreamingInputCallResponse *response, NSError *error))handler{
+ [[self RPCToStreamingInputCallWithRequestsWriter:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToStreamingInputCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RMTStreamingInputCallResponse *response, NSError *error))handler{
+ return [self RPCToMethod:@"StreamingInputCall"
+ requestsWriter:request
+ responseClass:[RMTStreamingInputCallResponse class]
+ responsesWriteable:[GRXWriteable writeableWithSingleValueHandler:handler]];
+}
+#pragma mark FullDuplexCall(stream StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
+
+- (void)fullDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler{
+ [[self RPCToFullDuplexCallWithRequestsWriter:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToFullDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler{
+ return [self RPCToMethod:@"FullDuplexCall"
+ requestsWriter:request
+ responseClass:[RMTStreamingOutputCallResponse class]
+ responsesWriteable:[GRXWriteable writeableWithStreamHandler:handler]];
+}
+#pragma mark HalfDuplexCall(stream StreamingOutputCallRequest) returns (stream StreamingOutputCallResponse)
+
+- (void)halfDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler{
+ [[self RPCToHalfDuplexCallWithRequestsWriter:request handler:handler] start];
+}
+// Returns a not-yet-started RPC object.
+- (ProtoRPC *)RPCToHalfDuplexCallWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RMTStreamingOutputCallResponse *response, NSError *error))handler{
+ return [self RPCToMethod:@"HalfDuplexCall"
+ requestsWriter:request
+ responseClass:[RMTStreamingOutputCallResponse class]
+ responsesWriteable:[GRXWriteable writeableWithStreamHandler:handler]];
+}
+@end
diff --git a/src/objective-c/generated_libraries/RemoteTestClient/empty.proto b/src/objective-c/generated_libraries/RemoteTestClient/empty.proto
new file mode 100644
index 0000000000..a678048289
--- /dev/null
+++ b/src/objective-c/generated_libraries/RemoteTestClient/empty.proto
@@ -0,0 +1,44 @@
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package grpc.testing;
+
+option objc_class_prefix = "RMT";
+
+// An empty message that you can re-use to avoid defining duplicated empty
+// messages in your project. A typical example is to use it as argument or the
+// return value of a service API. For instance:
+//
+// service Foo {
+// rpc Bar (grpc.testing.Empty) returns (grpc.testing.Empty) { };
+// };
+//
+message Empty {}
diff --git a/src/objective-c/generated_libraries/RemoteTestClient/messages.proto b/src/objective-c/generated_libraries/RemoteTestClient/messages.proto
new file mode 100644
index 0000000000..85d93c2ff9
--- /dev/null
+++ b/src/objective-c/generated_libraries/RemoteTestClient/messages.proto
@@ -0,0 +1,133 @@
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Message definitions to be used by integration test service definitions.
+
+syntax = "proto3";
+
+package grpc.testing;
+
+option objc_class_prefix = "RMT";
+
+// The type of payload that should be returned.
+enum PayloadType {
+ // Compressable text format.
+ COMPRESSABLE = 0;
+
+ // Uncompressable binary format.
+ UNCOMPRESSABLE = 1;
+
+ // Randomly chosen from all other formats defined in this enum.
+ RANDOM = 2;
+}
+
+// A block of data, to simply increase gRPC message size.
+message Payload {
+ // The type of data in body.
+ PayloadType type = 1;
+ // Primary contents of payload.
+ bytes body = 2;
+}
+
+// Unary request.
+message SimpleRequest {
+ // Desired payload type in the response from the server.
+ // If response_type is RANDOM, server randomly chooses one from other formats.
+ PayloadType response_type = 1;
+
+ // Desired payload size in the response from the server.
+ // If response_type is COMPRESSABLE, this denotes the size before compression.
+ int32 response_size = 2;
+
+ // Optional input payload sent along with the request.
+ Payload payload = 3;
+
+ // Whether SimpleResponse should include username.
+ bool fill_username = 4;
+
+ // Whether SimpleResponse should include OAuth scope.
+ bool fill_oauth_scope = 5;
+}
+
+// Unary response, as configured by the request.
+message SimpleResponse {
+ // Payload to increase message size.
+ Payload payload = 1;
+ // The user the request came from, for verifying authentication was
+ // successful when the client expected it.
+ string username = 2;
+ // OAuth scope.
+ string oauth_scope = 3;
+}
+
+// Client-streaming request.
+message StreamingInputCallRequest {
+ // Optional input payload sent along with the request.
+ Payload payload = 1;
+
+ // Not expecting any payload from the response.
+}
+
+// Client-streaming response.
+message StreamingInputCallResponse {
+ // Aggregated size of payloads received from the client.
+ int32 aggregated_payload_size = 1;
+}
+
+// Configuration for a particular response.
+message ResponseParameters {
+ // Desired payload sizes in responses from the server.
+ // If response_type is COMPRESSABLE, this denotes the size before compression.
+ int32 size = 1;
+
+ // Desired interval between consecutive responses in the response stream in
+ // microseconds.
+ int32 interval_us = 2;
+}
+
+// Server-streaming request.
+message StreamingOutputCallRequest {
+ // Desired payload type in the response from the server.
+ // If response_type is RANDOM, the payload from each response in the stream
+ // might be of different types. This is to simulate a mixed type of payload
+ // stream.
+ PayloadType response_type = 1;
+
+ // Configuration for each expected response message.
+ repeated ResponseParameters response_parameters = 2;
+
+ // Optional input payload sent along with the request.
+ Payload payload = 3;
+}
+
+// Server-streaming response, as configured by the request and parameters.
+message StreamingOutputCallResponse {
+ // Payload to increase response size.
+ Payload payload = 1;
+}
diff --git a/src/objective-c/generated_libraries/RemoteTestClient/test.proto b/src/objective-c/generated_libraries/RemoteTestClient/test.proto
new file mode 100644
index 0000000000..2f5a5489b3
--- /dev/null
+++ b/src/objective-c/generated_libraries/RemoteTestClient/test.proto
@@ -0,0 +1,73 @@
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// An integration test service that covers all the method signature permutations
+// of unary/streaming requests/responses.
+syntax = "proto3";
+
+import "empty.proto";
+import "messages.proto";
+
+package grpc.testing;
+
+option objc_class_prefix = "RMT";
+
+// A simple service to test the various types of RPCs and experiment with
+// performance with various types of payload.
+service TestService {
+ // One empty request followed by one empty response.
+ rpc EmptyCall(grpc.testing.Empty) returns (grpc.testing.Empty);
+
+ // One request followed by one response.
+ // TODO(Issue 527): Describe required server behavior.
+ rpc UnaryCall(SimpleRequest) returns (SimpleResponse);
+
+ // One request followed by a sequence of responses (streamed download).
+ // The server returns the payload with client desired type and sizes.
+ rpc StreamingOutputCall(StreamingOutputCallRequest)
+ returns (stream StreamingOutputCallResponse);
+
+ // A sequence of requests followed by one response (streamed upload).
+ // The server returns the aggregated size of client payload as the result.
+ rpc StreamingInputCall(stream StreamingInputCallRequest)
+ returns (StreamingInputCallResponse);
+
+ // A sequence of requests with each request served by the server immediately.
+ // As one request could lead to multiple responses, this interface
+ // demonstrates the idea of full duplexing.
+ rpc FullDuplexCall(stream StreamingOutputCallRequest)
+ returns (stream StreamingOutputCallResponse);
+
+ // A sequence of requests followed by a sequence of responses.
+ // The server buffers all the client requests and then serves them in order. A
+ // stream of responses are returned to the client when the server starts with
+ // first request.
+ rpc HalfDuplexCall(stream StreamingOutputCallRequest)
+ returns (stream StreamingOutputCallResponse);
+}