mirror of https://github.com/grpc/grpc.git
Conflicts: test/cpp/qps/qps_test_openloop.ccpull/1958/head
commit
37253d967b
55 changed files with 581 additions and 1976 deletions
@ -1,33 +0,0 @@ |
|||||||
// 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 |
|
@ -1,59 +0,0 @@ |
|||||||
// 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 |
|
||||||
|
|
@ -1,221 +0,0 @@ |
|||||||
// 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 |
|
@ -1,603 +0,0 @@ |
|||||||
// 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 |
|
||||||
|
|
@ -1,24 +1,26 @@ |
|||||||
Pod::Spec.new do |s| |
Pod::Spec.new do |s| |
||||||
s.name = 'RemoteTest' |
s.name = "RemoteTest" |
||||||
s.version = '0.0.1' |
s.version = "0.0.1" |
||||||
s.summary = 'Protobuf library generated from test.proto, messages.proto, and empty.proto' |
s.license = "New BSD" |
||||||
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.ios.deployment_target = "6.0" |
||||||
s.osx.deployment_target = '10.8' |
s.osx.deployment_target = "10.8" |
||||||
|
|
||||||
s.subspec 'Messages' do |ms| |
# Run protoc with the Objective-C and gRPC plugins to generate protocol messages and gRPC clients. |
||||||
ms.source_files = '*.pbobjc.{h,m}' |
s.prepare_command = "protoc --objc_out=. --objcgrpc_out=. *.proto **/*.proto" |
||||||
|
|
||||||
|
s.subspec "Messages" do |ms| |
||||||
|
ms.source_files = "*.pbobjc.{h,m}", "**/*.pbobjc.{h,m}" |
||||||
|
ms.header_mappings_dir = "." |
||||||
ms.requires_arc = false |
ms.requires_arc = false |
||||||
ms.dependency 'Protobuf', '~> 3.0' |
ms.dependency "Protobuf", "~> 3.0.0-alpha-3" |
||||||
end |
end |
||||||
|
|
||||||
s.subspec 'Services' do |ss| |
s.subspec "Services" do |ss| |
||||||
ss.source_files = '*.pbrpc.{h,m}' |
ss.source_files = "*.pbrpc.{h,m}", "**/*.pbrpc.{h,m}" |
||||||
|
ss.header_mappings_dir = "." |
||||||
ss.requires_arc = true |
ss.requires_arc = true |
||||||
ss.dependency 'gRPC', '~> 0.0' |
ss.dependency "gRPC", "~> 0.5" |
||||||
ss.dependency 'RemoteTest/Messages' |
ss.dependency "#{s.name}/Messages" |
||||||
end |
end |
||||||
end |
end |
||||||
|
@ -1,12 +0,0 @@ |
|||||||
// 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 |
|
@ -1,9 +0,0 @@ |
|||||||
// 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; |
|
@ -1,59 +0,0 @@ |
|||||||
#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 |
|
@ -1,96 +0,0 @@ |
|||||||
#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 |
|
@ -1,134 +0,0 @@ |
|||||||
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
||||||
// source: route_guide.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 RGDFeature; |
|
||||||
@class RGDPoint; |
|
||||||
@class RGDRectangle; |
|
||||||
@class RGDRouteNote; |
|
||||||
@class RGDRouteSummary; |
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - RGDRouteGuideRoot |
|
||||||
|
|
||||||
@interface RGDRouteGuideRoot : GPBRootObject |
|
||||||
@end |
|
||||||
|
|
||||||
#pragma mark - RGDPoint |
|
||||||
|
|
||||||
typedef GPB_ENUM(RGDPoint_FieldNumber) { |
|
||||||
RGDPoint_FieldNumber_Latitude = 1, |
|
||||||
RGDPoint_FieldNumber_Longitude = 2, |
|
||||||
}; |
|
||||||
|
|
||||||
// Points are represented as latitude-longitude pairs in the E7 representation
|
|
||||||
// (degrees multiplied by 10**7 and rounded to the nearest integer).
|
|
||||||
// Latitudes should be in the range +/- 90 degrees and longitude should be in
|
|
||||||
// the range +/- 180 degrees (inclusive).
|
|
||||||
@interface RGDPoint : GPBMessage |
|
||||||
|
|
||||||
@property(nonatomic, readwrite) int32_t latitude; |
|
||||||
|
|
||||||
@property(nonatomic, readwrite) int32_t longitude; |
|
||||||
|
|
||||||
@end |
|
||||||
|
|
||||||
#pragma mark - RGDRectangle |
|
||||||
|
|
||||||
typedef GPB_ENUM(RGDRectangle_FieldNumber) { |
|
||||||
RGDRectangle_FieldNumber_Lo = 1, |
|
||||||
RGDRectangle_FieldNumber_Hi = 2, |
|
||||||
}; |
|
||||||
|
|
||||||
// A latitude-longitude rectangle, represented as two diagonally opposite
|
|
||||||
// points "lo" and "hi".
|
|
||||||
@interface RGDRectangle : GPBMessage |
|
||||||
|
|
||||||
// One corner of the rectangle.
|
|
||||||
@property(nonatomic, readwrite) BOOL hasLo; |
|
||||||
@property(nonatomic, readwrite, strong) RGDPoint *lo; |
|
||||||
|
|
||||||
// The other corner of the rectangle.
|
|
||||||
@property(nonatomic, readwrite) BOOL hasHi; |
|
||||||
@property(nonatomic, readwrite, strong) RGDPoint *hi; |
|
||||||
|
|
||||||
@end |
|
||||||
|
|
||||||
#pragma mark - RGDFeature |
|
||||||
|
|
||||||
typedef GPB_ENUM(RGDFeature_FieldNumber) { |
|
||||||
RGDFeature_FieldNumber_Name = 1, |
|
||||||
RGDFeature_FieldNumber_Location = 2, |
|
||||||
}; |
|
||||||
|
|
||||||
// A feature names something at a given point.
|
|
||||||
//
|
|
||||||
// If a feature could not be named, the name is empty.
|
|
||||||
@interface RGDFeature : GPBMessage |
|
||||||
|
|
||||||
// The name of the feature.
|
|
||||||
@property(nonatomic, readwrite, copy) NSString *name; |
|
||||||
|
|
||||||
// The point where the feature is detected.
|
|
||||||
@property(nonatomic, readwrite) BOOL hasLocation; |
|
||||||
@property(nonatomic, readwrite, strong) RGDPoint *location; |
|
||||||
|
|
||||||
@end |
|
||||||
|
|
||||||
#pragma mark - RGDRouteNote |
|
||||||
|
|
||||||
typedef GPB_ENUM(RGDRouteNote_FieldNumber) { |
|
||||||
RGDRouteNote_FieldNumber_Location = 1, |
|
||||||
RGDRouteNote_FieldNumber_Message = 2, |
|
||||||
}; |
|
||||||
|
|
||||||
// A RouteNote is a message sent while at a given point.
|
|
||||||
@interface RGDRouteNote : GPBMessage |
|
||||||
|
|
||||||
// The location from which the message is sent.
|
|
||||||
@property(nonatomic, readwrite) BOOL hasLocation; |
|
||||||
@property(nonatomic, readwrite, strong) RGDPoint *location; |
|
||||||
|
|
||||||
// The message to be sent.
|
|
||||||
@property(nonatomic, readwrite, copy) NSString *message; |
|
||||||
|
|
||||||
@end |
|
||||||
|
|
||||||
#pragma mark - RGDRouteSummary |
|
||||||
|
|
||||||
typedef GPB_ENUM(RGDRouteSummary_FieldNumber) { |
|
||||||
RGDRouteSummary_FieldNumber_PointCount = 1, |
|
||||||
RGDRouteSummary_FieldNumber_FeatureCount = 2, |
|
||||||
RGDRouteSummary_FieldNumber_Distance = 3, |
|
||||||
RGDRouteSummary_FieldNumber_ElapsedTime = 4, |
|
||||||
}; |
|
||||||
|
|
||||||
// A RouteSummary is received in response to a RecordRoute rpc.
|
|
||||||
//
|
|
||||||
// It contains the number of individual points received, the number of
|
|
||||||
// detected features, and the total distance covered as the cumulative sum of
|
|
||||||
// the distance between each point.
|
|
||||||
@interface RGDRouteSummary : GPBMessage |
|
||||||
|
|
||||||
// The number of points received.
|
|
||||||
@property(nonatomic, readwrite) int32_t pointCount; |
|
||||||
|
|
||||||
// The number of known features passed while traversing the route.
|
|
||||||
@property(nonatomic, readwrite) int32_t featureCount; |
|
||||||
|
|
||||||
// The distance covered in metres.
|
|
||||||
@property(nonatomic, readwrite) int32_t distance; |
|
||||||
|
|
||||||
// The duration of the traversal in seconds.
|
|
||||||
@property(nonatomic, readwrite) int32_t elapsedTime; |
|
||||||
|
|
||||||
@end |
|
||||||
|
|
||||||
CF_EXTERN_C_END |
|
@ -1,355 +0,0 @@ |
|||||||
// Generated by the protocol buffer compiler. DO NOT EDIT! |
|
||||||
// source: route_guide.proto |
|
||||||
|
|
||||||
#import "GPBProtocolBuffers_RuntimeSupport.h" |
|
||||||
|
|
||||||
#import "RouteGuide.pbobjc.h" |
|
||||||
|
|
||||||
#pragma mark - RGDRouteGuideRoot |
|
||||||
|
|
||||||
@implementation RGDRouteGuideRoot |
|
||||||
|
|
||||||
@end |
|
||||||
|
|
||||||
static GPBFileDescriptor *RGDRouteGuideRoot_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.example.routeguide" |
|
||||||
syntax:GPBFileSyntaxProto3]; |
|
||||||
} |
|
||||||
return descriptor; |
|
||||||
} |
|
||||||
|
|
||||||
#pragma mark - RGDPoint |
|
||||||
|
|
||||||
@implementation RGDPoint |
|
||||||
|
|
||||||
@dynamic latitude; |
|
||||||
@dynamic longitude; |
|
||||||
|
|
||||||
typedef struct RGDPoint_Storage { |
|
||||||
uint32_t _has_storage_[1]; |
|
||||||
int32_t latitude; |
|
||||||
int32_t longitude; |
|
||||||
} RGDPoint_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 = "latitude", |
|
||||||
.number = RGDPoint_FieldNumber_Latitude, |
|
||||||
.hasIndex = 0, |
|
||||||
.flags = GPBFieldOptional, |
|
||||||
.type = GPBTypeInt32, |
|
||||||
.offset = offsetof(RGDPoint_Storage, latitude), |
|
||||||
.defaultValue.valueInt32 = 0, |
|
||||||
.typeSpecific.className = NULL, |
|
||||||
.fieldOptions = NULL, |
|
||||||
}, |
|
||||||
{ |
|
||||||
.name = "longitude", |
|
||||||
.number = RGDPoint_FieldNumber_Longitude, |
|
||||||
.hasIndex = 1, |
|
||||||
.flags = GPBFieldOptional, |
|
||||||
.type = GPBTypeInt32, |
|
||||||
.offset = offsetof(RGDPoint_Storage, longitude), |
|
||||||
.defaultValue.valueInt32 = 0, |
|
||||||
.typeSpecific.className = NULL, |
|
||||||
.fieldOptions = NULL, |
|
||||||
}, |
|
||||||
}; |
|
||||||
descriptor = [GPBDescriptor allocDescriptorForClass:[RGDPoint class] |
|
||||||
rootClass:[RGDRouteGuideRoot class] |
|
||||||
file:RGDRouteGuideRoot_FileDescriptor() |
|
||||||
fields:fields |
|
||||||
fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription) |
|
||||||
oneofs:NULL |
|
||||||
oneofCount:0 |
|
||||||
enums:NULL |
|
||||||
enumCount:0 |
|
||||||
ranges:NULL |
|
||||||
rangeCount:0 |
|
||||||
storageSize:sizeof(RGDPoint_Storage) |
|
||||||
wireFormat:NO]; |
|
||||||
} |
|
||||||
return descriptor; |
|
||||||
} |
|
||||||
|
|
||||||
@end |
|
||||||
|
|
||||||
#pragma mark - RGDRectangle |
|
||||||
|
|
||||||
@implementation RGDRectangle |
|
||||||
|
|
||||||
@dynamic hasLo, lo; |
|
||||||
@dynamic hasHi, hi; |
|
||||||
|
|
||||||
typedef struct RGDRectangle_Storage { |
|
||||||
uint32_t _has_storage_[1]; |
|
||||||
RGDPoint *lo; |
|
||||||
RGDPoint *hi; |
|
||||||
} RGDRectangle_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 = "lo", |
|
||||||
.number = RGDRectangle_FieldNumber_Lo, |
|
||||||
.hasIndex = 0, |
|
||||||
.flags = GPBFieldOptional, |
|
||||||
.type = GPBTypeMessage, |
|
||||||
.offset = offsetof(RGDRectangle_Storage, lo), |
|
||||||
.defaultValue.valueMessage = nil, |
|
||||||
.typeSpecific.className = GPBStringifySymbol(RGDPoint), |
|
||||||
.fieldOptions = NULL, |
|
||||||
}, |
|
||||||
{ |
|
||||||
.name = "hi", |
|
||||||
.number = RGDRectangle_FieldNumber_Hi, |
|
||||||
.hasIndex = 1, |
|
||||||
.flags = GPBFieldOptional, |
|
||||||
.type = GPBTypeMessage, |
|
||||||
.offset = offsetof(RGDRectangle_Storage, hi), |
|
||||||
.defaultValue.valueMessage = nil, |
|
||||||
.typeSpecific.className = GPBStringifySymbol(RGDPoint), |
|
||||||
.fieldOptions = NULL, |
|
||||||
}, |
|
||||||
}; |
|
||||||
descriptor = [GPBDescriptor allocDescriptorForClass:[RGDRectangle class] |
|
||||||
rootClass:[RGDRouteGuideRoot class] |
|
||||||
file:RGDRouteGuideRoot_FileDescriptor() |
|
||||||
fields:fields |
|
||||||
fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription) |
|
||||||
oneofs:NULL |
|
||||||
oneofCount:0 |
|
||||||
enums:NULL |
|
||||||
enumCount:0 |
|
||||||
ranges:NULL |
|
||||||
rangeCount:0 |
|
||||||
storageSize:sizeof(RGDRectangle_Storage) |
|
||||||
wireFormat:NO]; |
|
||||||
} |
|
||||||
return descriptor; |
|
||||||
} |
|
||||||
|
|
||||||
@end |
|
||||||
|
|
||||||
#pragma mark - RGDFeature |
|
||||||
|
|
||||||
@implementation RGDFeature |
|
||||||
|
|
||||||
@dynamic name; |
|
||||||
@dynamic hasLocation, location; |
|
||||||
|
|
||||||
typedef struct RGDFeature_Storage { |
|
||||||
uint32_t _has_storage_[1]; |
|
||||||
NSString *name; |
|
||||||
RGDPoint *location; |
|
||||||
} RGDFeature_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 = "name", |
|
||||||
.number = RGDFeature_FieldNumber_Name, |
|
||||||
.hasIndex = 0, |
|
||||||
.flags = GPBFieldOptional, |
|
||||||
.type = GPBTypeString, |
|
||||||
.offset = offsetof(RGDFeature_Storage, name), |
|
||||||
.defaultValue.valueString = nil, |
|
||||||
.typeSpecific.className = NULL, |
|
||||||
.fieldOptions = NULL, |
|
||||||
}, |
|
||||||
{ |
|
||||||
.name = "location", |
|
||||||
.number = RGDFeature_FieldNumber_Location, |
|
||||||
.hasIndex = 1, |
|
||||||
.flags = GPBFieldOptional, |
|
||||||
.type = GPBTypeMessage, |
|
||||||
.offset = offsetof(RGDFeature_Storage, location), |
|
||||||
.defaultValue.valueMessage = nil, |
|
||||||
.typeSpecific.className = GPBStringifySymbol(RGDPoint), |
|
||||||
.fieldOptions = NULL, |
|
||||||
}, |
|
||||||
}; |
|
||||||
descriptor = [GPBDescriptor allocDescriptorForClass:[RGDFeature class] |
|
||||||
rootClass:[RGDRouteGuideRoot class] |
|
||||||
file:RGDRouteGuideRoot_FileDescriptor() |
|
||||||
fields:fields |
|
||||||
fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription) |
|
||||||
oneofs:NULL |
|
||||||
oneofCount:0 |
|
||||||
enums:NULL |
|
||||||
enumCount:0 |
|
||||||
ranges:NULL |
|
||||||
rangeCount:0 |
|
||||||
storageSize:sizeof(RGDFeature_Storage) |
|
||||||
wireFormat:NO]; |
|
||||||
} |
|
||||||
return descriptor; |
|
||||||
} |
|
||||||
|
|
||||||
@end |
|
||||||
|
|
||||||
#pragma mark - RGDRouteNote |
|
||||||
|
|
||||||
@implementation RGDRouteNote |
|
||||||
|
|
||||||
@dynamic hasLocation, location; |
|
||||||
@dynamic message; |
|
||||||
|
|
||||||
typedef struct RGDRouteNote_Storage { |
|
||||||
uint32_t _has_storage_[1]; |
|
||||||
RGDPoint *location; |
|
||||||
NSString *message; |
|
||||||
} RGDRouteNote_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 = "location", |
|
||||||
.number = RGDRouteNote_FieldNumber_Location, |
|
||||||
.hasIndex = 0, |
|
||||||
.flags = GPBFieldOptional, |
|
||||||
.type = GPBTypeMessage, |
|
||||||
.offset = offsetof(RGDRouteNote_Storage, location), |
|
||||||
.defaultValue.valueMessage = nil, |
|
||||||
.typeSpecific.className = GPBStringifySymbol(RGDPoint), |
|
||||||
.fieldOptions = NULL, |
|
||||||
}, |
|
||||||
{ |
|
||||||
.name = "message", |
|
||||||
.number = RGDRouteNote_FieldNumber_Message, |
|
||||||
.hasIndex = 1, |
|
||||||
.flags = GPBFieldOptional, |
|
||||||
.type = GPBTypeString, |
|
||||||
.offset = offsetof(RGDRouteNote_Storage, message), |
|
||||||
.defaultValue.valueString = nil, |
|
||||||
.typeSpecific.className = NULL, |
|
||||||
.fieldOptions = NULL, |
|
||||||
}, |
|
||||||
}; |
|
||||||
descriptor = [GPBDescriptor allocDescriptorForClass:[RGDRouteNote class] |
|
||||||
rootClass:[RGDRouteGuideRoot class] |
|
||||||
file:RGDRouteGuideRoot_FileDescriptor() |
|
||||||
fields:fields |
|
||||||
fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription) |
|
||||||
oneofs:NULL |
|
||||||
oneofCount:0 |
|
||||||
enums:NULL |
|
||||||
enumCount:0 |
|
||||||
ranges:NULL |
|
||||||
rangeCount:0 |
|
||||||
storageSize:sizeof(RGDRouteNote_Storage) |
|
||||||
wireFormat:NO]; |
|
||||||
} |
|
||||||
return descriptor; |
|
||||||
} |
|
||||||
|
|
||||||
@end |
|
||||||
|
|
||||||
#pragma mark - RGDRouteSummary |
|
||||||
|
|
||||||
@implementation RGDRouteSummary |
|
||||||
|
|
||||||
@dynamic pointCount; |
|
||||||
@dynamic featureCount; |
|
||||||
@dynamic distance; |
|
||||||
@dynamic elapsedTime; |
|
||||||
|
|
||||||
typedef struct RGDRouteSummary_Storage { |
|
||||||
uint32_t _has_storage_[1]; |
|
||||||
int32_t pointCount; |
|
||||||
int32_t featureCount; |
|
||||||
int32_t distance; |
|
||||||
int32_t elapsedTime; |
|
||||||
} RGDRouteSummary_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 = "pointCount", |
|
||||||
.number = RGDRouteSummary_FieldNumber_PointCount, |
|
||||||
.hasIndex = 0, |
|
||||||
.flags = GPBFieldOptional, |
|
||||||
.type = GPBTypeInt32, |
|
||||||
.offset = offsetof(RGDRouteSummary_Storage, pointCount), |
|
||||||
.defaultValue.valueInt32 = 0, |
|
||||||
.typeSpecific.className = NULL, |
|
||||||
.fieldOptions = NULL, |
|
||||||
}, |
|
||||||
{ |
|
||||||
.name = "featureCount", |
|
||||||
.number = RGDRouteSummary_FieldNumber_FeatureCount, |
|
||||||
.hasIndex = 1, |
|
||||||
.flags = GPBFieldOptional, |
|
||||||
.type = GPBTypeInt32, |
|
||||||
.offset = offsetof(RGDRouteSummary_Storage, featureCount), |
|
||||||
.defaultValue.valueInt32 = 0, |
|
||||||
.typeSpecific.className = NULL, |
|
||||||
.fieldOptions = NULL, |
|
||||||
}, |
|
||||||
{ |
|
||||||
.name = "distance", |
|
||||||
.number = RGDRouteSummary_FieldNumber_Distance, |
|
||||||
.hasIndex = 2, |
|
||||||
.flags = GPBFieldOptional, |
|
||||||
.type = GPBTypeInt32, |
|
||||||
.offset = offsetof(RGDRouteSummary_Storage, distance), |
|
||||||
.defaultValue.valueInt32 = 0, |
|
||||||
.typeSpecific.className = NULL, |
|
||||||
.fieldOptions = NULL, |
|
||||||
}, |
|
||||||
{ |
|
||||||
.name = "elapsedTime", |
|
||||||
.number = RGDRouteSummary_FieldNumber_ElapsedTime, |
|
||||||
.hasIndex = 3, |
|
||||||
.flags = GPBFieldOptional, |
|
||||||
.type = GPBTypeInt32, |
|
||||||
.offset = offsetof(RGDRouteSummary_Storage, elapsedTime), |
|
||||||
.defaultValue.valueInt32 = 0, |
|
||||||
.typeSpecific.className = NULL, |
|
||||||
.fieldOptions = NULL, |
|
||||||
}, |
|
||||||
}; |
|
||||||
descriptor = [GPBDescriptor allocDescriptorForClass:[RGDRouteSummary class] |
|
||||||
rootClass:[RGDRouteGuideRoot class] |
|
||||||
file:RGDRouteGuideRoot_FileDescriptor() |
|
||||||
fields:fields |
|
||||||
fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription) |
|
||||||
oneofs:NULL |
|
||||||
oneofCount:0 |
|
||||||
enums:NULL |
|
||||||
enumCount:0 |
|
||||||
ranges:NULL |
|
||||||
rangeCount:0 |
|
||||||
storageSize:sizeof(RGDRouteSummary_Storage) |
|
||||||
wireFormat:NO]; |
|
||||||
} |
|
||||||
return descriptor; |
|
||||||
} |
|
||||||
|
|
||||||
@end |
|
||||||
|
|
@ -1,43 +0,0 @@ |
|||||||
#import "RouteGuide.pbobjc.h" |
|
||||||
#import <gRPC/ProtoService.h> |
|
||||||
|
|
||||||
|
|
||||||
@protocol GRXWriteable; |
|
||||||
@protocol GRXWriter; |
|
||||||
|
|
||||||
@protocol RGDRouteGuide <NSObject> |
|
||||||
|
|
||||||
#pragma mark GetFeature(Point) returns (Feature) |
|
||||||
|
|
||||||
- (void)getFeatureWithRequest:(RGDPoint *)request handler:(void(^)(RGDFeature *response, NSError *error))handler; |
|
||||||
|
|
||||||
- (ProtoRPC *)RPCToGetFeatureWithRequest:(RGDPoint *)request handler:(void(^)(RGDFeature *response, NSError *error))handler; |
|
||||||
|
|
||||||
|
|
||||||
#pragma mark ListFeatures(Rectangle) returns (stream Feature) |
|
||||||
|
|
||||||
- (void)listFeaturesWithRequest:(RGDRectangle *)request handler:(void(^)(BOOL done, RGDFeature *response, NSError *error))handler; |
|
||||||
|
|
||||||
- (ProtoRPC *)RPCToListFeaturesWithRequest:(RGDRectangle *)request handler:(void(^)(BOOL done, RGDFeature *response, NSError *error))handler; |
|
||||||
|
|
||||||
|
|
||||||
#pragma mark RecordRoute(stream Point) returns (RouteSummary) |
|
||||||
|
|
||||||
- (void)recordRouteWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RGDRouteSummary *response, NSError *error))handler; |
|
||||||
|
|
||||||
- (ProtoRPC *)RPCToRecordRouteWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RGDRouteSummary *response, NSError *error))handler; |
|
||||||
|
|
||||||
|
|
||||||
#pragma mark RouteChat(stream RouteNote) returns (stream RouteNote) |
|
||||||
|
|
||||||
- (void)routeChatWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RGDRouteNote *response, NSError *error))handler; |
|
||||||
|
|
||||||
- (ProtoRPC *)RPCToRouteChatWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RGDRouteNote *response, NSError *error))handler; |
|
||||||
|
|
||||||
|
|
||||||
@end |
|
||||||
|
|
||||||
// Basic service implementation, over gRPC, that only does marshalling and parsing.
|
|
||||||
@interface RGDRouteGuide : ProtoService<RGDRouteGuide> |
|
||||||
- (instancetype)initWithHost:(NSString *)host NS_DESIGNATED_INITIALIZER; |
|
||||||
@end |
|
@ -1,72 +0,0 @@ |
|||||||
#import "RouteGuide.pbrpc.h" |
|
||||||
#import <gRPC/GRXWriteable.h> |
|
||||||
#import <gRPC/GRXWriter+Immediate.h> |
|
||||||
#import <gRPC/ProtoRPC.h> |
|
||||||
|
|
||||||
static NSString *const kPackageName = @"grpc.example.routeguide"; |
|
||||||
static NSString *const kServiceName = @"RouteGuide"; |
|
||||||
|
|
||||||
@implementation RGDRouteGuide |
|
||||||
|
|
||||||
// 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 GetFeature(Point) returns (Feature) |
|
||||||
|
|
||||||
- (void)getFeatureWithRequest:(RGDPoint *)request handler:(void(^)(RGDFeature *response, NSError *error))handler{ |
|
||||||
[[self RPCToGetFeatureWithRequest:request handler:handler] start]; |
|
||||||
} |
|
||||||
// Returns a not-yet-started RPC object. |
|
||||||
- (ProtoRPC *)RPCToGetFeatureWithRequest:(RGDPoint *)request handler:(void(^)(RGDFeature *response, NSError *error))handler{ |
|
||||||
return [self RPCToMethod:@"GetFeature" |
|
||||||
requestsWriter:[GRXWriter writerWithValue:request] |
|
||||||
responseClass:[RGDFeature class] |
|
||||||
responsesWriteable:[GRXWriteable writeableWithSingleValueHandler:handler]]; |
|
||||||
} |
|
||||||
#pragma mark ListFeatures(Rectangle) returns (stream Feature) |
|
||||||
|
|
||||||
- (void)listFeaturesWithRequest:(RGDRectangle *)request handler:(void(^)(BOOL done, RGDFeature *response, NSError *error))handler{ |
|
||||||
[[self RPCToListFeaturesWithRequest:request handler:handler] start]; |
|
||||||
} |
|
||||||
// Returns a not-yet-started RPC object. |
|
||||||
- (ProtoRPC *)RPCToListFeaturesWithRequest:(RGDRectangle *)request handler:(void(^)(BOOL done, RGDFeature *response, NSError *error))handler{ |
|
||||||
return [self RPCToMethod:@"ListFeatures" |
|
||||||
requestsWriter:[GRXWriter writerWithValue:request] |
|
||||||
responseClass:[RGDFeature class] |
|
||||||
responsesWriteable:[GRXWriteable writeableWithStreamHandler:handler]]; |
|
||||||
} |
|
||||||
#pragma mark RecordRoute(stream Point) returns (RouteSummary) |
|
||||||
|
|
||||||
- (void)recordRouteWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RGDRouteSummary *response, NSError *error))handler{ |
|
||||||
[[self RPCToRecordRouteWithRequestsWriter:request handler:handler] start]; |
|
||||||
} |
|
||||||
// Returns a not-yet-started RPC object. |
|
||||||
- (ProtoRPC *)RPCToRecordRouteWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(RGDRouteSummary *response, NSError *error))handler{ |
|
||||||
return [self RPCToMethod:@"RecordRoute" |
|
||||||
requestsWriter:request |
|
||||||
responseClass:[RGDRouteSummary class] |
|
||||||
responsesWriteable:[GRXWriteable writeableWithSingleValueHandler:handler]]; |
|
||||||
} |
|
||||||
#pragma mark RouteChat(stream RouteNote) returns (stream RouteNote) |
|
||||||
|
|
||||||
- (void)routeChatWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RGDRouteNote *response, NSError *error))handler{ |
|
||||||
[[self RPCToRouteChatWithRequestsWriter:request handler:handler] start]; |
|
||||||
} |
|
||||||
// Returns a not-yet-started RPC object. |
|
||||||
- (ProtoRPC *)RPCToRouteChatWithRequestsWriter:(id<GRXWriter>)request handler:(void(^)(BOOL done, RGDRouteNote *response, NSError *error))handler{ |
|
||||||
return [self RPCToMethod:@"RouteChat" |
|
||||||
requestsWriter:request |
|
||||||
responseClass:[RGDRouteNote class] |
|
||||||
responsesWriteable:[GRXWriteable writeableWithStreamHandler:handler]]; |
|
||||||
} |
|
||||||
@end |
|
@ -0,0 +1,26 @@ |
|||||||
|
Pod::Spec.new do |s| |
||||||
|
s.name = "RouteGuide" |
||||||
|
s.version = "0.0.1" |
||||||
|
s.license = "New BSD" |
||||||
|
|
||||||
|
s.ios.deployment_target = "6.0" |
||||||
|
s.osx.deployment_target = "10.8" |
||||||
|
|
||||||
|
# Run protoc with the Objective-C and gRPC plugins to generate protocol messages and gRPC clients. |
||||||
|
s.prepare_command = "protoc --objc_out=. --objcgrpc_out=. *.proto **/*.proto" |
||||||
|
|
||||||
|
s.subspec "Messages" do |ms| |
||||||
|
ms.source_files = "*.pbobjc.{h,m}", "**/*.pbobjc.{h,m}" |
||||||
|
ms.header_mappings_dir = "." |
||||||
|
ms.requires_arc = false |
||||||
|
ms.dependency "Protobuf", "~> 3.0.0-alpha-3" |
||||||
|
end |
||||||
|
|
||||||
|
s.subspec "Services" do |ss| |
||||||
|
ss.source_files = "*.pbrpc.{h,m}", "**/*.pbrpc.{h,m}" |
||||||
|
ss.header_mappings_dir = "." |
||||||
|
ss.requires_arc = true |
||||||
|
ss.dependency "gRPC", "~> 0.5" |
||||||
|
ss.dependency "#{s.name}/Messages" |
||||||
|
end |
||||||
|
end |
@ -1,24 +0,0 @@ |
|||||||
Pod::Spec.new do |s| |
|
||||||
s.name = 'Route_guide' |
|
||||||
s.version = '0.0.1' |
|
||||||
s.summary = 'Protobuf library generated from route_guide.proto' |
|
||||||
s.homepage = 'https://github.com/grpc/grpc/tree/master/src/objective-c/examples/Sample/RouteGuideClient' |
|
||||||
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 'Route_guide/Messages' |
|
||||||
end |
|
||||||
end |
|
@ -0,0 +1,95 @@ |
|||||||
|
/*
|
||||||
|
* |
||||||
|
* 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. |
||||||
|
* |
||||||
|
*/ |
||||||
|
|
||||||
|
#include "test/core/bad_client/bad_client.h" |
||||||
|
#include "src/core/surface/server.h" |
||||||
|
|
||||||
|
#define PFX_STR "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" |
||||||
|
|
||||||
|
static void verifier(grpc_server *server, grpc_completion_queue *cq) { |
||||||
|
while (grpc_server_has_open_connections(server)) { |
||||||
|
GPR_ASSERT( |
||||||
|
grpc_completion_queue_next(cq, GRPC_TIMEOUT_MILLIS_TO_DEADLINE(20)) |
||||||
|
.type == GRPC_QUEUE_TIMEOUT); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
int main(int argc, char **argv) { |
||||||
|
grpc_test_init(argc, argv); |
||||||
|
|
||||||
|
/* various partial prefixes */ |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00", |
||||||
|
GRPC_BAD_CLIENT_DISCONNECT); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00", |
||||||
|
GRPC_BAD_CLIENT_DISCONNECT); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00", |
||||||
|
GRPC_BAD_CLIENT_DISCONNECT); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x06", |
||||||
|
GRPC_BAD_CLIENT_DISCONNECT); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x06", |
||||||
|
GRPC_BAD_CLIENT_DISCONNECT); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x06", |
||||||
|
GRPC_BAD_CLIENT_DISCONNECT); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04", |
||||||
|
GRPC_BAD_CLIENT_DISCONNECT); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x00", |
||||||
|
GRPC_BAD_CLIENT_DISCONNECT); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x01", |
||||||
|
GRPC_BAD_CLIENT_DISCONNECT); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\xff", |
||||||
|
GRPC_BAD_CLIENT_DISCONNECT); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x00\x00", |
||||||
|
GRPC_BAD_CLIENT_DISCONNECT); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x00\x00\x00", |
||||||
|
GRPC_BAD_CLIENT_DISCONNECT); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x00\x00\x00\x00", |
||||||
|
GRPC_BAD_CLIENT_DISCONNECT); |
||||||
|
/* must not send frames with stream id != 0 */ |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, |
||||||
|
PFX_STR "\x00\x00\x00\x04\x00\x00\x00\x00\x01", 0); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, |
||||||
|
PFX_STR "\x00\x00\x00\x04\x00\x40\x00\x00\x00", 0); |
||||||
|
/* settings frame must be a multiple of six bytes long */ |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, |
||||||
|
PFX_STR "\x00\x00\x01\x04\x00\x00\x00\x00\x00", 0); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, |
||||||
|
PFX_STR "\x00\x00\x02\x04\x00\x00\x00\x00\x00", 0); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, |
||||||
|
PFX_STR "\x00\x00\x03\x04\x00\x00\x00\x00\x00", 0); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, |
||||||
|
PFX_STR "\x00\x00\x04\x04\x00\x00\x00\x00\x00", 0); |
||||||
|
GRPC_RUN_BAD_CLIENT_TEST(verifier, |
||||||
|
PFX_STR "\x00\x00\x05\x04\x00\x00\x00\x00\x00", 0); |
||||||
|
|
||||||
|
return 0; |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
#!/usr/bin/env python |
||||||
|
|
||||||
|
"""Server for httpcli_test""" |
||||||
|
|
||||||
|
import argparse |
||||||
|
import BaseHTTPServer |
||||||
|
|
||||||
|
argp = argparse.ArgumentParser(description='Server for httpcli_test') |
||||||
|
argp.add_argument('-p', '--port', default=10080, type=int) |
||||||
|
args = argp.parse_args() |
||||||
|
|
||||||
|
print 'server running on port %d' % args.port |
||||||
|
|
||||||
|
class Handler(BaseHTTPServer.BaseHTTPRequestHandler): |
||||||
|
def good(self): |
||||||
|
self.send_response(200) |
||||||
|
self.send_header('Content-Type', 'text/html') |
||||||
|
self.end_headers() |
||||||
|
self.wfile.write('<html><head><title>Hello world!</title></head>') |
||||||
|
self.wfile.write('<body><p>This is a test</p></body></html>') |
||||||
|
|
||||||
|
def do_GET(self): |
||||||
|
if self.path == '/get': |
||||||
|
self.good() |
||||||
|
|
||||||
|
def do_POST(self): |
||||||
|
content = self.rfile.read(int(self.headers.getheader('content-length'))) |
||||||
|
if self.path == '/post' and content == 'hello': |
||||||
|
self.good() |
||||||
|
|
||||||
|
BaseHTTPServer.HTTPServer(('', args.port), Handler).serve_forever() |
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue