// 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 "RMQUnallocatedChannel.h" #import "RMQErrors.h" #import "RMQConnectionDelegate.h" @interface RMQUnallocatedChannel () @property (nonatomic, copy, readwrite) NSNumber *channelNumber; @property (nonatomic, readwrite) id delegate; @end @implementation RMQUnallocatedChannel - (instancetype)init { self = [super init]; if (self) { self.channelNumber = @(-1); } return self; } - (void)activateWithDelegate:(id)delegate { self.delegate = delegate; } - (void)open {} - (void)close {} - (void)blockingClose {} - (void)prepareForRecovery {} - (void)recover {} - (void)blockingWaitOn:(Class)method { [self err]; } - (void)confirmSelect { [self err]; } - (void)afterConfirmed:(NSNumber *)timeout handler:(void (^)(NSSet * _Nonnull, NSSet * _Nonnull))handler { [self err]; } - (void)afterConfirmed:(void (^)(NSSet * _Nonnull, NSSet * _Nonnull))handler { [self afterConfirmed:@0 handler:handler]; } - (RMQConsumer *)basicConsume:(NSString *)queueName options:(RMQBasicConsumeOptions)options handler:(RMQConsumerDeliveryHandler)handler { [self basicConsume:[[RMQConsumer alloc] initWithChannel:self queueName:queueName options:options]]; return nil; } - (void)basicConsume:(RMQConsumer *)consumer { [self err]; } - (NSString *)generateConsumerTag { [self err]; return nil; } - (void)basicCancel:(NSString *)consumerTag { } - (NSNumber *)basicPublish:(NSString *)message routingKey:(NSString *)routingKey exchange:(NSString *)exchange properties:(NSArray *)properties options:(RMQBasicPublishOptions)options { [self err]; return @-1; } - (void)basicGet:(NSString *)queue options:(RMQBasicGetOptions)options completionHandler:(RMQConsumerDeliveryHandler)completionHandler { [self err]; } - (RMQExchange *)defaultExchange { [self err]; return nil; } - (RMQQueue *)queue:(NSString *)queueName options:(RMQQueueDeclareOptions)options arguments:(nonnull NSDictionary *)arguments { [self err]; return nil; } - (RMQQueue *)queue:(NSString *)queueName options:(RMQQueueDeclareOptions)options { return [self queue:queueName options:options arguments:@{}]; } - (RMQQueue *)queue:(NSString *)queueName { return [self queue:queueName options:RMQQueueDeclareNoOptions]; } - (void)queueDelete:(NSString *)queueName options:(RMQQueueDeleteOptions)options { [self err]; } - (void)queueBind:(NSString *)queueName exchange:(NSString *)exchangeName routingKey:(nonnull NSString *)routingKey { [self err]; } - (void)queueUnbind:(NSString *)queueName exchange:(NSString *)exchangeName routingKey:(NSString *)routingKey { [self err]; } - (void)handleFrameset:(RMQFrameset *)frameset { } - (void)basicQos:(NSNumber *)count global:(BOOL)isGlobal { [self err]; } - (void)ack:(NSNumber *)deliveryTag options:(RMQBasicAckOptions)options { [self err]; } - (void)ack:(NSNumber *)deliveryTag { [self ack:deliveryTag options:RMQBasicAckNoOptions]; } - (void)reject:(NSNumber *)deliveryTag options:(RMQBasicRejectOptions)options { [self err]; } - (void)reject:(NSNumber *)deliveryTag { [self reject:deliveryTag options:RMQBasicRejectNoOptions]; } - (void)nack:(NSNumber *)deliveryTag options:(RMQBasicNackOptions)options { [self err]; } - (void)nack:(NSNumber *)deliveryTag { [self nack:deliveryTag options:RMQBasicNackNoOptions]; } - (void)exchangeDeclare:(NSString *)name type:(NSString *)type options:(RMQExchangeDeclareOptions)options { [self err]; } - (void)exchangeBind:(NSString *)sourceName destination:(NSString *)destinationName routingKey:(NSString *)routingKey { [self err]; } - (void)exchangeUnbind:(NSString *)sourceName destination:(NSString *)destinationName routingKey:(NSString *)routingKey { [self err]; } - (RMQExchange *)fanout:(NSString *)name options:(RMQExchangeDeclareOptions)options { [self err]; return nil; } - (RMQExchange *)fanout:(NSString *)name { return [self fanout:name options:RMQExchangeDeclareNoOptions]; } - (RMQExchange *)direct:(NSString *)name options:(RMQExchangeDeclareOptions)options { [self err]; return nil; } - (RMQExchange *)direct:(NSString *)name { return [self direct:name options:RMQExchangeDeclareNoOptions]; } - (RMQExchange *)topic:(NSString *)name options:(RMQExchangeDeclareOptions)options { [self err]; return nil; } - (RMQExchange *)topic:(NSString *)name { return [self topic:name options:RMQExchangeDeclareNoOptions]; } - (RMQExchange *)headers:(NSString *)name options:(RMQExchangeDeclareOptions)options { [self err]; return nil; } - (RMQExchange *)headers:(NSString *)name { return [self headers:name options:RMQExchangeDeclareNoOptions]; } - (void)exchangeDelete:(NSString *)name options:(RMQExchangeDeleteOptions)options { [self err]; } # pragma mark - Private - (void)err { NSError *error = [NSError errorWithDomain:RMQErrorDomain code:RMQErrorChannelUnallocated userInfo:@{NSLocalizedDescriptionKey: @"Unallocated channel"}]; [self.delegate channel:self error:error]; } @end