mirror of https://github.com/grpc/grpc.git
commit
237443faa4
120 changed files with 816 additions and 2014 deletions
@ -0,0 +1,61 @@ |
||||
/*
|
||||
* |
||||
* 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. |
||||
* |
||||
*/ |
||||
|
||||
#ifndef GRPC_SUPPORT_STRING_UTIL_H |
||||
#define GRPC_SUPPORT_STRING_UTIL_H |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
/* String utility functions */ |
||||
|
||||
/* Returns a copy of src that can be passed to gpr_free().
|
||||
If allocation fails or if src is NULL, returns NULL. */ |
||||
char *gpr_strdup(const char *src); |
||||
|
||||
/* printf to a newly-allocated string. The set of supported formats may vary
|
||||
between platforms. |
||||
|
||||
On success, returns the number of bytes printed (excluding the final '\0'), |
||||
and *strp points to a string which must later be destroyed with gpr_free(). |
||||
|
||||
On error, returns -1 and sets *strp to NULL. If the format string is bad, |
||||
the result is undefined. */ |
||||
int gpr_asprintf(char **strp, const char *format, ...); |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif /* GRPC_SUPPORT_STRING_UTIL_H */ |
@ -0,0 +1,49 @@ |
||||
/*
|
||||
* |
||||
* 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 <grpc/support/cpu.h> |
||||
#include "src/cpp/server/thread_pool.h" |
||||
|
||||
#ifndef GRPC_CUSTOM_DEFAULT_THREAD_POOL |
||||
|
||||
namespace grpc { |
||||
|
||||
ThreadPoolInterface* CreateDefaultThreadPool() { |
||||
int cores = gpr_cpu_num_cores(); |
||||
if (!cores) cores = 4; |
||||
return new ThreadPool(cores); |
||||
} |
||||
|
||||
} // namespace grpc
|
||||
|
||||
#endif // !GRPC_CUSTOM_DEFAULT_THREAD_POOL
|
@ -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| |
||||
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.name = "RemoteTest" |
||||
s.version = "0.0.1" |
||||
s.license = "New BSD" |
||||
|
||||
s.ios.deployment_target = '6.0' |
||||
s.osx.deployment_target = '10.8' |
||||
s.ios.deployment_target = "6.0" |
||||
s.osx.deployment_target = "10.8" |
||||
|
||||
s.subspec 'Messages' do |ms| |
||||
ms.source_files = '*.pbobjc.{h,m}' |
||||
# 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' |
||||
ms.dependency "Protobuf", "~> 3.0.0-alpha-3" |
||||
end |
||||
|
||||
s.subspec 'Services' do |ss| |
||||
ss.source_files = '*.pbrpc.{h,m}' |
||||
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.0' |
||||
ss.dependency 'RemoteTest/Messages' |
||||
ss.dependency "gRPC", "~> 0.5" |
||||
ss.dependency "#{s.name}/Messages" |
||||
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() |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue