Migrate to websocket proto wrappers.

This commit is contained in:
Matthew Chen 2018-08-06 10:21:16 -04:00
parent f795ec352e
commit 67110d0def
7 changed files with 84 additions and 1640 deletions

View File

@ -4,7 +4,6 @@
# protobuf lib
shift-base:CodedInputStream.m
# generated protos
bool:WebSocketResources.pb.m
bool:WhisperTextProtocol.pb.m
bool:OWSWebRTCDataProtos.pb.m

View File

@ -32,7 +32,6 @@ message WebSocketResponseMessage {
optional uint32 status = 2;
optional string message = 3;
repeated string headers = 5;
// @required
optional bytes body = 4;
}

View File

@ -22,7 +22,6 @@
#import "TSRequest.h"
#import "TextSecureKitEnv.h"
#import "Threading.h"
#import "WebSocketResources.pb.h"
#import <SignalServiceKit/SignalServiceKit-Swift.h>
NS_ASSUME_NONNULL_BEGIN
@ -492,26 +491,32 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
}
}
WebSocketResourcesWebSocketRequestMessageBuilder *requestBuilder =
[WebSocketResourcesWebSocketRequestMessageBuilder new];
[requestBuilder setRequestId:socketMessage.requestId];
WebSocketProtoWebSocketRequestMessageBuilder *requestBuilder = [WebSocketProtoWebSocketRequestMessageBuilder new];
[requestBuilder setRequestID:socketMessage.requestId];
[requestBuilder setVerb:request.HTTPMethod];
[requestBuilder setPath:requestPath];
if (jsonData) {
// TODO: Do we need body & headers for requests with no parameters?
[requestBuilder setBody:jsonData];
[requestBuilder setHeadersArray:@[
[requestBuilder setHeaders:@[
@"content-type:application/json",
]];
}
WebSocketResourcesWebSocketMessageBuilder *messageBuilder = [WebSocketResourcesWebSocketMessageBuilder new];
[messageBuilder setType:WebSocketResourcesWebSocketMessageTypeRequest];
[messageBuilder setRequestBuilder:requestBuilder];
NSError *error;
WebSocketProtoWebSocketRequestMessage *_Nullable requestProto = [requestBuilder buildAndReturnError:&error];
if (!requestProto || error) {
OWSFail(@"%@ could not build proto: %@", self.logTag, error);
return;
}
NSData *messageData = [messageBuilder build].data;
if (!messageData) {
OWSProdLogAndFail(@"%@ could not serialize message.", self.logTag);
WebSocketProtoWebSocketMessageBuilder *messageBuilder = [WebSocketProtoWebSocketMessageBuilder new];
[messageBuilder setType:WebSocketProtoWebSocketMessageTypeRequest];
[messageBuilder setRequest:requestProto];
NSData *_Nullable messageData = [messageBuilder buildSerializedDataAndReturnError:&error];
if (!messageData || error) {
OWSProdLogAndFail(@"%@ could not serialize proto: %@.", self.logTag, error);
[socketMessage didFailBeforeSending];
return;
}
@ -522,7 +527,6 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
return;
}
NSError *error;
BOOL wasScheduled = [self.websocket sendDataNoCopy:messageData error:&error];
if (!wasScheduled || error) {
OWSProdLogAndFail(@"%@ could not send socket request: %@", self.logTag, error);
@ -545,7 +549,7 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
});
}
- (void)processWebSocketResponseMessage:(WebSocketResourcesWebSocketResponseMessage *)message
- (void)processWebSocketResponseMessage:(WebSocketProtoWebSocketResponseMessage *)message
{
OWSAssertIsOnMainThread();
OWSAssert(message);
@ -555,26 +559,18 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
});
}
- (void)processWebSocketResponseMessageAsync:(WebSocketResourcesWebSocketResponseMessage *)message
- (void)processWebSocketResponseMessageAsync:(WebSocketProtoWebSocketResponseMessage *)message
{
OWSAssert(message);
DDLogInfo(@"%@ received WebSocket response.", self.logTag);
if (![message hasRequestId]) {
DDLogError(@"%@ received incomplete WebSocket response.", self.logTag);
return;
}
DispatchMainThreadSafe(^{
[self requestSocketAliveForAtLeastSeconds:kMakeRequestKeepSocketAliveDurationSeconds];
});
UInt64 requestId = message.requestId;
UInt32 responseStatus = 0;
if (message.hasStatus) {
responseStatus = message.status;
}
UInt64 requestId = message.requestID;
UInt32 responseStatus = message.status;
NSString *_Nullable responseMessage;
if (message.hasMessage) {
responseMessage = message.message;
@ -702,25 +698,30 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
// If we receive a response, we know we're not de-registered.
[TSAccountManager.sharedInstance setIsDeregistered:NO];
WebSocketResourcesWebSocketMessage *wsMessage;
WebSocketProtoWebSocketMessage *_Nullable wsMessage;
@try {
wsMessage = [WebSocketResourcesWebSocketMessage parseFromData:data];
NSError *error;
wsMessage = [WebSocketProtoWebSocketMessage parseData:data error:&error];
if (!wsMessage || error) {
OWSFail(@"%@ could not parse proto: %@", self.logTag, error);
return;
}
} @catch (NSException *exception) {
OWSProdLogAndFail(@"%@ Received an invalid message: %@", self.logTag, exception.debugDescription);
// TODO: Add analytics.
return;
}
if (wsMessage.type == WebSocketResourcesWebSocketMessageTypeRequest) {
if (wsMessage.type == WebSocketProtoWebSocketMessageTypeRequest) {
[self processWebSocketRequestMessage:wsMessage.request];
} else if (wsMessage.type == WebSocketResourcesWebSocketMessageTypeResponse) {
} else if (wsMessage.type == WebSocketProtoWebSocketMessageTypeResponse) {
[self processWebSocketResponseMessage:wsMessage.response];
} else {
DDLogWarn(@"%@ webSocket:didReceiveMessage: unknown.", self.logTag);
}
}
- (void)processWebSocketRequestMessage:(WebSocketResourcesWebSocketRequestMessage *)message
- (void)processWebSocketRequestMessage:(WebSocketProtoWebSocketRequestMessage *)message
{
OWSAssertIsOnMainThread();
@ -779,21 +780,34 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
}
}
- (void)sendWebSocketMessageAcknowledgement:(WebSocketResourcesWebSocketRequestMessage *)request
- (void)sendWebSocketMessageAcknowledgement:(WebSocketProtoWebSocketRequestMessage *)request
{
OWSAssertIsOnMainThread();
WebSocketResourcesWebSocketResponseMessageBuilder *response = [WebSocketResourcesWebSocketResponseMessage builder];
[response setStatus:200];
[response setMessage:@"OK"];
[response setRequestId:request.requestId];
WebSocketResourcesWebSocketMessageBuilder *message = [WebSocketResourcesWebSocketMessage builder];
[message setResponse:response.build];
[message setType:WebSocketResourcesWebSocketMessageTypeResponse];
NSError *error;
[self.websocket sendDataNoCopy:message.build.data error:&error];
WebSocketProtoWebSocketResponseMessageBuilder *responseBuilder =
[WebSocketProtoWebSocketResponseMessageBuilder new];
[responseBuilder setStatus:200];
[responseBuilder setMessage:@"OK"];
[responseBuilder setRequestID:request.requestID];
WebSocketProtoWebSocketResponseMessage *_Nullable response = [responseBuilder buildAndReturnError:&error];
if (!response || error) {
OWSFail(@"%@ could not build proto: %@", self.logTag, error);
return;
}
WebSocketProtoWebSocketMessageBuilder *messageBuilder = [WebSocketProtoWebSocketMessageBuilder new];
[messageBuilder setResponse:response];
[messageBuilder setType:WebSocketProtoWebSocketMessageTypeResponse];
NSData *_Nullable messageData = [messageBuilder buildSerializedDataAndReturnError:&error];
if (!messageData || error) {
OWSFail(@"%@ could not serialize proto: %@", self.logTag, error);
return;
}
[self.websocket sendDataNoCopy:messageData error:&error];
if (error) {
DDLogWarn(@"Error while trying to write on websocket %@", error);
[self handleSocketFailure];

View File

@ -1,330 +0,0 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
#import <ProtocolBuffers/ProtocolBuffers.h>
// @@protoc_insertion_point(imports)
@class ObjectiveCFileOptions;
@class ObjectiveCFileOptionsBuilder;
@class PBDescriptorProto;
@class PBDescriptorProtoBuilder;
@class PBDescriptorProtoExtensionRange;
@class PBDescriptorProtoExtensionRangeBuilder;
@class PBEnumDescriptorProto;
@class PBEnumDescriptorProtoBuilder;
@class PBEnumOptions;
@class PBEnumOptionsBuilder;
@class PBEnumValueDescriptorProto;
@class PBEnumValueDescriptorProtoBuilder;
@class PBEnumValueOptions;
@class PBEnumValueOptionsBuilder;
@class PBFieldDescriptorProto;
@class PBFieldDescriptorProtoBuilder;
@class PBFieldOptions;
@class PBFieldOptionsBuilder;
@class PBFileDescriptorProto;
@class PBFileDescriptorProtoBuilder;
@class PBFileDescriptorSet;
@class PBFileDescriptorSetBuilder;
@class PBFileOptions;
@class PBFileOptionsBuilder;
@class PBMessageOptions;
@class PBMessageOptionsBuilder;
@class PBMethodDescriptorProto;
@class PBMethodDescriptorProtoBuilder;
@class PBMethodOptions;
@class PBMethodOptionsBuilder;
@class PBOneofDescriptorProto;
@class PBOneofDescriptorProtoBuilder;
@class PBServiceDescriptorProto;
@class PBServiceDescriptorProtoBuilder;
@class PBServiceOptions;
@class PBServiceOptionsBuilder;
@class PBSourceCodeInfo;
@class PBSourceCodeInfoBuilder;
@class PBSourceCodeInfoLocation;
@class PBSourceCodeInfoLocationBuilder;
@class PBUninterpretedOption;
@class PBUninterpretedOptionBuilder;
@class PBUninterpretedOptionNamePart;
@class PBUninterpretedOptionNamePartBuilder;
@class WebSocketResourcesWebSocketMessage;
@class WebSocketResourcesWebSocketMessageBuilder;
@class WebSocketResourcesWebSocketRequestMessage;
@class WebSocketResourcesWebSocketRequestMessageBuilder;
@class WebSocketResourcesWebSocketResponseMessage;
@class WebSocketResourcesWebSocketResponseMessageBuilder;
typedef NS_ENUM(SInt32, WebSocketResourcesWebSocketMessageType) {
WebSocketResourcesWebSocketMessageTypeUnknown = 0,
WebSocketResourcesWebSocketMessageTypeRequest = 1,
WebSocketResourcesWebSocketMessageTypeResponse = 2,
};
BOOL WebSocketResourcesWebSocketMessageTypeIsValidValue(WebSocketResourcesWebSocketMessageType value);
NSString *NSStringFromWebSocketResourcesWebSocketMessageType(WebSocketResourcesWebSocketMessageType value);
@interface WebSocketResourcesWebSocketResourcesRoot : NSObject {
}
+ (PBExtensionRegistry*) extensionRegistry;
+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry;
@end
#define WebSocketRequestMessage_verb @"verb"
#define WebSocketRequestMessage_path @"path"
#define WebSocketRequestMessage_body @"body"
#define WebSocketRequestMessage_headers @"headers"
#define WebSocketRequestMessage_requestId @"requestId"
@interface WebSocketResourcesWebSocketRequestMessage : PBGeneratedMessage<GeneratedMessageProtocol> {
@private
BOOL hasRequestId_:1;
BOOL hasVerb_:1;
BOOL hasPath_:1;
BOOL hasBody_:1;
UInt64 requestId;
NSString* verb;
NSString* path;
NSData* body;
NSMutableArray * headersArray;
}
- (BOOL) hasVerb;
- (BOOL) hasPath;
- (BOOL) hasBody;
- (BOOL) hasRequestId;
@property (readonly, strong) NSString* verb;
@property (readonly, strong) NSString* path;
@property (readonly, strong) NSData* body;
@property (readonly, strong) NSArray * headers;
@property (readonly) UInt64 requestId;
- (NSString*)headersAtIndex:(NSUInteger)index;
+ (instancetype) defaultInstance;
- (instancetype) defaultInstance;
- (BOOL) isInitialized;
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) builder;
+ (WebSocketResourcesWebSocketRequestMessageBuilder*) builder;
+ (WebSocketResourcesWebSocketRequestMessageBuilder*) builderWithPrototype:(WebSocketResourcesWebSocketRequestMessage*) prototype;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) toBuilder;
+ (WebSocketResourcesWebSocketRequestMessage*) parseFromData:(NSData*) data;
+ (WebSocketResourcesWebSocketRequestMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
+ (WebSocketResourcesWebSocketRequestMessage*) parseFromInputStream:(NSInputStream*) input;
+ (WebSocketResourcesWebSocketRequestMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
+ (WebSocketResourcesWebSocketRequestMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input;
+ (WebSocketResourcesWebSocketRequestMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
@end
@interface WebSocketResourcesWebSocketRequestMessageBuilder : PBGeneratedMessageBuilder {
@private
WebSocketResourcesWebSocketRequestMessage* resultWebSocketRequestMessage;
}
- (WebSocketResourcesWebSocketRequestMessage*) defaultInstance;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) clear;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) clone;
- (WebSocketResourcesWebSocketRequestMessage*) build;
- (WebSocketResourcesWebSocketRequestMessage*) buildPartial;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) mergeFrom:(WebSocketResourcesWebSocketRequestMessage*) other;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
- (BOOL) hasVerb;
- (NSString*) verb;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) setVerb:(NSString*) value;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) clearVerb;
- (BOOL) hasPath;
- (NSString*) path;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) setPath:(NSString*) value;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) clearPath;
- (BOOL) hasBody;
- (NSData*) body;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) setBody:(NSData*) value;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) clearBody;
- (NSMutableArray *)headers;
- (NSString*)headersAtIndex:(NSUInteger)index;
- (WebSocketResourcesWebSocketRequestMessageBuilder *)addHeaders:(NSString*)value;
- (WebSocketResourcesWebSocketRequestMessageBuilder *)setHeadersArray:(NSArray *)array;
- (WebSocketResourcesWebSocketRequestMessageBuilder *)clearHeaders;
- (BOOL) hasRequestId;
- (UInt64) requestId;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) setRequestId:(UInt64) value;
- (WebSocketResourcesWebSocketRequestMessageBuilder*) clearRequestId;
@end
#define WebSocketResponseMessage_requestId @"requestId"
#define WebSocketResponseMessage_status @"status"
#define WebSocketResponseMessage_message @"message"
#define WebSocketResponseMessage_headers @"headers"
#define WebSocketResponseMessage_body @"body"
@interface WebSocketResourcesWebSocketResponseMessage : PBGeneratedMessage<GeneratedMessageProtocol> {
@private
BOOL hasRequestId_:1;
BOOL hasMessage_:1;
BOOL hasBody_:1;
BOOL hasStatus_:1;
UInt64 requestId;
NSString* message;
NSData* body;
UInt32 status;
NSMutableArray * headersArray;
}
- (BOOL) hasRequestId;
- (BOOL) hasStatus;
- (BOOL) hasMessage;
- (BOOL) hasBody;
@property (readonly) UInt64 requestId;
@property (readonly) UInt32 status;
@property (readonly, strong) NSString* message;
@property (readonly, strong) NSArray * headers;
@property (readonly, strong) NSData* body;
- (NSString*)headersAtIndex:(NSUInteger)index;
+ (instancetype) defaultInstance;
- (instancetype) defaultInstance;
- (BOOL) isInitialized;
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) builder;
+ (WebSocketResourcesWebSocketResponseMessageBuilder*) builder;
+ (WebSocketResourcesWebSocketResponseMessageBuilder*) builderWithPrototype:(WebSocketResourcesWebSocketResponseMessage*) prototype;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) toBuilder;
+ (WebSocketResourcesWebSocketResponseMessage*) parseFromData:(NSData*) data;
+ (WebSocketResourcesWebSocketResponseMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
+ (WebSocketResourcesWebSocketResponseMessage*) parseFromInputStream:(NSInputStream*) input;
+ (WebSocketResourcesWebSocketResponseMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
+ (WebSocketResourcesWebSocketResponseMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input;
+ (WebSocketResourcesWebSocketResponseMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
@end
@interface WebSocketResourcesWebSocketResponseMessageBuilder : PBGeneratedMessageBuilder {
@private
WebSocketResourcesWebSocketResponseMessage* resultWebSocketResponseMessage;
}
- (WebSocketResourcesWebSocketResponseMessage*) defaultInstance;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) clear;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) clone;
- (WebSocketResourcesWebSocketResponseMessage*) build;
- (WebSocketResourcesWebSocketResponseMessage*) buildPartial;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) mergeFrom:(WebSocketResourcesWebSocketResponseMessage*) other;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
- (BOOL) hasRequestId;
- (UInt64) requestId;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) setRequestId:(UInt64) value;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) clearRequestId;
- (BOOL) hasStatus;
- (UInt32) status;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) setStatus:(UInt32) value;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) clearStatus;
- (BOOL) hasMessage;
- (NSString*) message;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) setMessage:(NSString*) value;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) clearMessage;
- (NSMutableArray *)headers;
- (NSString*)headersAtIndex:(NSUInteger)index;
- (WebSocketResourcesWebSocketResponseMessageBuilder *)addHeaders:(NSString*)value;
- (WebSocketResourcesWebSocketResponseMessageBuilder *)setHeadersArray:(NSArray *)array;
- (WebSocketResourcesWebSocketResponseMessageBuilder *)clearHeaders;
- (BOOL) hasBody;
- (NSData*) body;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) setBody:(NSData*) value;
- (WebSocketResourcesWebSocketResponseMessageBuilder*) clearBody;
@end
#define WebSocketMessage_type @"type"
#define WebSocketMessage_request @"request"
#define WebSocketMessage_response @"response"
@interface WebSocketResourcesWebSocketMessage : PBGeneratedMessage<GeneratedMessageProtocol> {
@private
BOOL hasRequest_:1;
BOOL hasResponse_:1;
BOOL hasType_:1;
WebSocketResourcesWebSocketRequestMessage* request;
WebSocketResourcesWebSocketResponseMessage* response;
WebSocketResourcesWebSocketMessageType type;
}
- (BOOL) hasType;
- (BOOL) hasRequest;
- (BOOL) hasResponse;
@property (readonly) WebSocketResourcesWebSocketMessageType type;
@property (readonly, strong) WebSocketResourcesWebSocketRequestMessage* request;
@property (readonly, strong) WebSocketResourcesWebSocketResponseMessage* response;
+ (instancetype) defaultInstance;
- (instancetype) defaultInstance;
- (BOOL) isInitialized;
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
- (WebSocketResourcesWebSocketMessageBuilder*) builder;
+ (WebSocketResourcesWebSocketMessageBuilder*) builder;
+ (WebSocketResourcesWebSocketMessageBuilder*) builderWithPrototype:(WebSocketResourcesWebSocketMessage*) prototype;
- (WebSocketResourcesWebSocketMessageBuilder*) toBuilder;
+ (WebSocketResourcesWebSocketMessage*) parseFromData:(NSData*) data;
+ (WebSocketResourcesWebSocketMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
+ (WebSocketResourcesWebSocketMessage*) parseFromInputStream:(NSInputStream*) input;
+ (WebSocketResourcesWebSocketMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
+ (WebSocketResourcesWebSocketMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input;
+ (WebSocketResourcesWebSocketMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
@end
@interface WebSocketResourcesWebSocketMessageBuilder : PBGeneratedMessageBuilder {
@private
WebSocketResourcesWebSocketMessage* resultWebSocketMessage;
}
- (WebSocketResourcesWebSocketMessage*) defaultInstance;
- (WebSocketResourcesWebSocketMessageBuilder*) clear;
- (WebSocketResourcesWebSocketMessageBuilder*) clone;
- (WebSocketResourcesWebSocketMessage*) build;
- (WebSocketResourcesWebSocketMessage*) buildPartial;
- (WebSocketResourcesWebSocketMessageBuilder*) mergeFrom:(WebSocketResourcesWebSocketMessage*) other;
- (WebSocketResourcesWebSocketMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
- (WebSocketResourcesWebSocketMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
- (BOOL) hasType;
- (WebSocketResourcesWebSocketMessageType) type;
- (WebSocketResourcesWebSocketMessageBuilder*) setType:(WebSocketResourcesWebSocketMessageType) value;
- (WebSocketResourcesWebSocketMessageBuilder*) clearType;
- (BOOL) hasRequest;
- (WebSocketResourcesWebSocketRequestMessage*) request;
- (WebSocketResourcesWebSocketMessageBuilder*) setRequest:(WebSocketResourcesWebSocketRequestMessage*) value;
- (WebSocketResourcesWebSocketMessageBuilder*) setRequestBuilder:(WebSocketResourcesWebSocketRequestMessageBuilder*) builderForValue;
- (WebSocketResourcesWebSocketMessageBuilder*) mergeRequest:(WebSocketResourcesWebSocketRequestMessage*) value;
- (WebSocketResourcesWebSocketMessageBuilder*) clearRequest;
- (BOOL) hasResponse;
- (WebSocketResourcesWebSocketResponseMessage*) response;
- (WebSocketResourcesWebSocketMessageBuilder*) setResponse:(WebSocketResourcesWebSocketResponseMessage*) value;
- (WebSocketResourcesWebSocketMessageBuilder*) setResponseBuilder:(WebSocketResourcesWebSocketResponseMessageBuilder*) builderForValue;
- (WebSocketResourcesWebSocketMessageBuilder*) mergeResponse:(WebSocketResourcesWebSocketResponseMessage*) value;
- (WebSocketResourcesWebSocketMessageBuilder*) clearResponse;
@end
// @@protoc_insertion_point(global_scope)

File diff suppressed because it is too large Load Diff

View File

@ -208,8 +208,6 @@ public enum WebSocketProtoError: Error {
@objc public let status: UInt32
@objc public let body: Data
@objc public var message: String? {
guard proto.hasMessage else {
return nil
@ -224,14 +222,22 @@ public enum WebSocketProtoError: Error {
return proto.headers
}
@objc public var body: Data? {
guard proto.hasBody else {
return nil
}
return proto.body
}
@objc public var hasBody: Bool {
return proto.hasBody
}
private init(proto: WebSocketProtos_WebSocketResponseMessage,
requestID: UInt64,
status: UInt32,
body: Data) {
status: UInt32) {
self.proto = proto
self.requestID = requestID
self.status = status
self.body = body
}
// NOTE: This method is intended for debugging purposes only.
@ -264,19 +270,13 @@ public enum WebSocketProtoError: Error {
}
let status = proto.status
guard proto.hasBody else {
throw WebSocketProtoError.invalidProtobuf(description: "\(logTag) missing required field: body")
}
let body = proto.body
// MARK: - Begin Validation Logic for WebSocketProtoWebSocketResponseMessage -
// MARK: - End Validation Logic for WebSocketProtoWebSocketResponseMessage -
let result = WebSocketProtoWebSocketResponseMessage(proto: proto,
requestID: requestID,
status: status,
body: body)
status: status)
return result
}
}

View File

@ -1,10 +1,6 @@
// DO NOT EDIT.
//
// Generated by the Swift generator plugin for the protocol buffer compiler.
// Source: WebSocketResources.proto
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
// For information on using the generated types, please see the documenation:
// https://github.com/apple/swift-protobuf/
//*
// Copyright (C) 2014-2016 Open Whisper Systems
@ -22,7 +18,7 @@ import SwiftProtobuf
// incompatible with the version of SwiftProtobuf to which you are linking.
// Please ensure that your are building against the same version of the API
// that was used to generate this file.
fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck {
private struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck {
struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {}
typealias Version = _2
}
@ -77,10 +73,10 @@ struct WebSocketProtos_WebSocketRequestMessage {
init() {}
fileprivate var _verb: String? = nil
fileprivate var _path: String? = nil
fileprivate var _body: Data? = nil
fileprivate var _requestID: UInt64? = nil
fileprivate var _verb: String?
fileprivate var _path: String?
fileprivate var _body: Data?
fileprivate var _requestID: UInt64?
}
struct WebSocketProtos_WebSocketResponseMessage {
@ -119,7 +115,6 @@ struct WebSocketProtos_WebSocketResponseMessage {
var headers: [String] = []
/// @required
var body: Data {
get {return _body ?? SwiftProtobuf.Internal.emptyData}
set {_body = newValue}
@ -133,10 +128,10 @@ struct WebSocketProtos_WebSocketResponseMessage {
init() {}
fileprivate var _requestID: UInt64? = nil
fileprivate var _status: UInt32? = nil
fileprivate var _message: String? = nil
fileprivate var _body: Data? = nil
fileprivate var _requestID: UInt64?
fileprivate var _status: UInt32?
fileprivate var _message: String?
fileprivate var _body: Data?
}
struct WebSocketProtos_WebSocketMessage {
@ -210,7 +205,7 @@ struct WebSocketProtos_WebSocketMessage {
// MARK: - Code below here is support for the SwiftProtobuf runtime.
fileprivate let _protobuf_package = "WebSocketProtos"
private let _protobuf_package = "WebSocketProtos"
extension WebSocketProtos_WebSocketRequestMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
static let protoMessageName: String = _protobuf_package + ".WebSocketRequestMessage"
@ -219,7 +214,7 @@ extension WebSocketProtos_WebSocketRequestMessage: SwiftProtobuf.Message, SwiftP
2: .same(proto: "path"),
3: .same(proto: "body"),
5: .same(proto: "headers"),
4: .same(proto: "requestId"),
4: .same(proto: "requestId")
]
mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
@ -272,7 +267,7 @@ extension WebSocketProtos_WebSocketResponseMessage: SwiftProtobuf.Message, Swift
2: .same(proto: "status"),
3: .same(proto: "message"),
5: .same(proto: "headers"),
4: .same(proto: "body"),
4: .same(proto: "body")
]
mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
@ -323,13 +318,13 @@ extension WebSocketProtos_WebSocketMessage: SwiftProtobuf.Message, SwiftProtobuf
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
1: .same(proto: "type"),
2: .same(proto: "request"),
3: .same(proto: "response"),
3: .same(proto: "response")
]
fileprivate class _StorageClass {
var _type: WebSocketProtos_WebSocketMessage.TypeEnum? = nil
var _request: WebSocketProtos_WebSocketRequestMessage? = nil
var _response: WebSocketProtos_WebSocketResponseMessage? = nil
var _type: WebSocketProtos_WebSocketMessage.TypeEnum?
var _request: WebSocketProtos_WebSocketRequestMessage?
var _response: WebSocketProtos_WebSocketResponseMessage?
static let defaultInstance = _StorageClass()
@ -399,6 +394,6 @@ extension WebSocketProtos_WebSocketMessage.TypeEnum: SwiftProtobuf._ProtoNamePro
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
0: .same(proto: "UNKNOWN"),
1: .same(proto: "REQUEST"),
2: .same(proto: "RESPONSE"),
2: .same(proto: "RESPONSE")
]
}