// This source code is dual-licensed under the Mozilla Public License ("MPL"), // version 1.1 and the Apache License ("ASL"), version 2.0. // // The ASL v2.0: // // --------------------------------------------------------------------------- // Copyright 2016 Pivotal Software, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // --------------------------------------------------------------------------- // // The MPL v1.1: // // --------------------------------------------------------------------------- // The contents of this file are subject to the Mozilla Public License // Version 1.1 (the "License"); you may not use this file except in // compliance with the License. You may obtain a copy of the License at // https://www.mozilla.org/MPL/ // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the // License for the specific language governing rights and limitations // under the License. // // The Original Code is RabbitMQ // // The Initial Developer of the Original Code is Pivotal Software, Inc. // All Rights Reserved. // // Alternatively, the contents of this file may be used under the terms // of the Apache Standard license (the "ASL License"), in which case the // provisions of the ASL License are applicable instead of those // above. If you wish to allow use of your version of this file only // under the terms of the ASL License and not to allow others to use // your version of this file under the MPL, indicate your decision by // deleting the provisions above and replace them with the notice and // other provisions required by the ASL License. If you do not delete // the provisions above, a recipient may use your version of this file // under either the MPL or the ASL License. // --------------------------------------------------------------------------- #import @import JKVValue; #import "RMQParser.h" #import "RMQConnectionConfig.h" @protocol RMQEncodable - (nonnull NSData *)amqEncoded; @end @protocol RMQParseable - (nonnull instancetype)initWithParser:(nonnull RMQParser *)parser; @end @protocol RMQFieldValue - (nonnull NSData *)amqFieldValueType; @end @interface RMQValue : JKVValue @end @interface RMQOctet : RMQValue @property (nonatomic, readonly) NSUInteger integerValue; - (nonnull instancetype)init:(char)octet; @end @interface RMQSignedByte : RMQValue @property (nonatomic, readonly) NSInteger integerValue; - (nonnull instancetype)init:(signed char)byte; @end @interface RMQBoolean : RMQValue @property (nonatomic, readonly) BOOL boolValue; - (nonnull instancetype)init:(BOOL)boolean; @end @interface RMQSignedShort : RMQValue @property (nonatomic, readonly) NSInteger integerValue; - (nonnull instancetype)init:(NSInteger)val; @end @interface RMQShort : RMQValue @property (nonatomic, readonly) NSUInteger integerValue; - (nonnull instancetype)init:(NSUInteger)val; @end @interface RMQShortShort : RMQOctet @end @interface RMQSignedLong : RMQValue @property (nonatomic, readonly) NSInteger integerValue; - (nonnull instancetype)init:(NSInteger)val; @end @interface RMQLong : RMQValue @property (nonatomic, readonly) NSUInteger integerValue; - (nonnull instancetype)init:(NSUInteger)val; @end @interface RMQSignedLonglong : RMQValue @property (nonatomic, readonly) int64_t integerValue; - (nonnull instancetype)init:(int64_t)val; @end @interface RMQLonglong : RMQValue @property (nonatomic, readonly) uint64_t integerValue; - (nonnull instancetype)init:(uint64_t)val; @end @interface RMQFloat : RMQValue @property (nonatomic, readonly) float floatValue; - (nonnull instancetype)init:(float)val; @end @interface RMQDouble : RMQValue @property (nonatomic, readonly) double floatValue; - (nonnull instancetype)init:(double)val; @end @interface RMQDecimal : RMQValue @end @interface RMQShortstr : RMQValue @property (nonnull, nonatomic, copy, readonly) NSString *stringValue; - (nonnull instancetype)init:(nonnull NSString *)string; @end @interface RMQLongstr : RMQValue @property (nonnull, nonatomic, copy, readonly) NSString *stringValue; - (nonnull instancetype)init:(nonnull NSString *)string; @end @interface RMQArray : RMQValue - (nonnull instancetype)init:(nonnull NSArray *> *)vals; @end @interface RMQTimestamp : RMQValue @property (nonnull, nonatomic, readonly) NSDate *dateValue; - (nonnull instancetype)init:(nonnull NSDate *)date; @end @interface RMQVoid : RMQValue @end @interface RMQByteArray : RMQValue - (nonnull instancetype)init:(nonnull NSData *)data; @end @interface RMQFieldValuePair : RMQValue - (nonnull instancetype)initWithFieldName:(nonnull NSString *)fieldName fieldValue:(nonnull id )fieldValue; @end @interface RMQCredentials : RMQLongstr - (nonnull instancetype)initWithUsername:(nonnull NSString *)username password:(nonnull NSString *)password; @end @protocol RMQPayload - (nonnull NSNumber *)frameTypeID; @end @protocol RMQMethod + (nonnull NSArray *)propertyClasses; - (nonnull NSNumber *)classID; - (nonnull NSNumber *)methodID; - (nonnull Class)syncResponse; - (nonnull instancetype)initWithDecodedFrame:(nonnull NSArray *)frame; - (BOOL)hasContent; @end @protocol RMQBasicValue; @interface RMQContentHeader : RMQValue @property (nonnull, nonatomic, readonly) NSNumber *bodySize; @property (nonnull, nonatomic, readonly) NSArray *> *properties; - (nonnull instancetype)initWithClassID:(nonnull NSNumber *)classID bodySize:(nonnull NSNumber *)bodySize properties:(nonnull NSArray *)properties; - (nonnull instancetype)initWithParser:(nonnull RMQParser *)parser; @end @interface RMQContentHeaderNone : RMQContentHeader @end @interface RMQContentBody : RMQValue @property (nonnull, nonatomic, readonly) NSData *data; @property (nonatomic, readonly) NSUInteger length; - (nonnull instancetype)initWithData:(nonnull NSData *)data; - (nonnull instancetype)initWithParser:(nonnull RMQParser *)parser payloadSize:(UInt32)payloadSize; @end