PubSub+ Messaging API For C  7.29.0.6
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ex/ios/ParameterInterface.m
/*
* Copyright 2014-2024 Solace Corporation. All rights reserved.
*/
#import "ParameterInterface.h"
#import "Parameter.h"
#import "Example.h"
@implementation ParameterInterface
@synthesize parameters;
- (id)init {
parameters = [[NSMutableArray alloc] init];
// Add default parameters when each ParameterInteface is initialized
// If necessary, they can be removed after initialization
[self addParameter:@"Host"
type:StringParameter
paramId:PARAMETER_HOST
defaultValue:@"tcp://"];
[self addParameter:@"Username"
type:StringParameter
paramId:PARAMETER_USERNAME
defaultValue:@"default"];
[self addParameter:@"Password"
type:StringParameter
paramId:PARAMETER_PASSWORD
defaultValue:@""];
[self addParameter:@"VPN"
type:StringParameter
paramId:PARAMETER_VPN
defaultValue:@"default"];
[self addParameter:@"Compression"
type:BooleanParameter
paramId:PARAMETER_COMPRESSION
defaultValue:@"0"];
[self addParameter:@"Logging level"
type:PickerParameter
paramId:PARAMETER_LOGGING_LEVEL
possibleValues:
@[ @"debug", @"info", @"notice", @"warn", @"error", @"critical" ]
defaultIndex:2];
return self;
}
- (void)addParameter:(NSString *)paramId {
// Examples can only add parameters taken from the list of parameter IDs in
// the Parameter class; new parameters cannot be created at run time. As
// this method links parameter IDs to pre-specified information about each
// parameter, such as its type and default value.
if ([paramId isEqualToString:PARAMETER_NUM_MESSAGES]) {
[self addParameter:@"Number of messages"
type:StringParameter
paramId:PARAMETER_NUM_MESSAGES
defaultValue:@"1"];
} else if ([paramId isEqualToString:PARAMETER_DESTINATION_TOPIC]) {
[self addParameter:@"Destination topic"
type:StringParameter
paramId:PARAMETER_DESTINATION_TOPIC
defaultValue:[[NSString alloc]
initWithCString:COMMON_MY_SAMPLE_TOPIC
encoding:NSASCIIStringEncoding]];
} else if ([paramId isEqualToString:PARAMETER_CACHE_NAME]) {
[self addParameter:@"Cache name"
type:StringParameter
paramId:PARAMETER_CACHE_NAME
defaultValue:@""];
} else if ([paramId isEqualToString:PARAMETER_MESSAGES_RATE]) {
[self addParameter:@"Message rate (msgs/sec)"
type:StringParameter
paramId:PARAMETER_MESSAGES_RATE
defaultValue:@"1"];
} else if ([paramId isEqualToString:PARAMETER_SEMP_VERSION]) {
[self addParameter:@"SEMP version"
type:StringParameter
paramId:PARAMETER_SEMP_VERSION
defaultValue:@"soltr/5_1"];
} else if ([paramId isEqualToString:PARAMETER_MESSAGE_SIZE]) {
[self addParameter:@"Message size (bytes)"
type:StringParameter
paramId:PARAMETER_MESSAGE_SIZE
defaultValue:@"100"];
} else if ([paramId isEqualToString:PARAMETER_PUB_SUB_MODE]) {
[self addParameter:@"Test mode"
type:PickerParameter
paramId:PARAMETER_PUB_SUB_MODE
possibleValues:@[
@"Subscriber only",
@"Publisher only",
@"Publishers and subscriber",
]
defaultIndex:2];
} else if ([paramId isEqualToString:PARAMETER_PUB_SUB_QUANTITY]) {
[self addParameter:@"Number of publishers"
type:StringParameter
paramId:PARAMETER_PUB_SUB_QUANTITY
defaultValue:@"1"];
} else if ([paramId isEqualToString:PARAMETER_TCP_NO_DELAY]) {
[self addParameter:@"No TCP delay"
type:BooleanParameter
paramId:PARAMETER_TCP_NO_DELAY
defaultValue:@"0"];
} else if ([paramId isEqualToString:PARAMETER_MULTI_SEND_MODE]) {
[self addParameter:@"Multi-send mode"
type:BooleanParameter
paramId:PARAMETER_MULTI_SEND_MODE
defaultValue:@"0"];
} else if ([paramId isEqualToString:PARAMETER_SSL_TRUST_STORE_DIRECTORY]) {
[self addParameter:@"SSL trust store directory"
type:StringParameter
paramId:PARAMETER_SSL_TRUST_STORE_DIRECTORY
defaultValue:@""];
} else if ([paramId isEqualToString:PARAMETER_SSL_COMMON_NAMES]) {
[self addParameter:@"SSL common names"
type:StringParameter
paramId:PARAMETER_SSL_COMMON_NAMES
defaultValue:@"boo.com"];
} else if ([paramId isEqualToString:PARAMETER_SSL_NO_PROTOCOLS]) {
[self addParameter:@"SSL excluded protocols"
type:StringParameter
paramId:PARAMETER_SSL_NO_PROTOCOLS
defaultValue:@""];
} else if ([paramId isEqualToString:PARAMETER_SSL_CIPHER_LIST]) {
[self addParameter:@"SSL cipher list"
type:StringParameter
paramId:PARAMETER_SSL_CIPHER_LIST
defaultValue:@""];
} else if ([paramId isEqualToString:PARAMETER_SSL_CERTIFICATE_VALIDATION]) {
[self addParameter:@"Certificate validation"
type:BooleanParameter
paramId:PARAMETER_SSL_CERTIFICATE_VALIDATION
defaultValue:@"1"];
} else if ([paramId
isEqualToString:PARAMETER_SSL_CERTIFICATE_DATE_VALIDATION]) {
[self addParameter:@"Certificate date validation"
type:BooleanParameter
paramId:PARAMETER_SSL_CERTIFICATE_DATE_VALIDATION
defaultValue:@"1"];
} else if ([paramId isEqualToString:PARAMETER_SSL_CERTIFICATE]) {
[self addParameter:@"Certificate path"
type:StringParameter
paramId:PARAMETER_SSL_CERTIFICATE
defaultValue:@""];
} else if ([paramId isEqualToString:PARAMETER_SSL_PRIVATE_KEY]) {
[self addParameter:@"Private key path"
type:StringParameter
paramId:PARAMETER_SSL_PRIVATE_KEY
defaultValue:@""];
} else if ([paramId isEqualToString:PARAMETER_SSL_PRIVATE_KEY_PASSWORD]) {
[self addParameter:@"Private key password"
type:StringParameter
paramId:PARAMETER_SSL_PRIVATE_KEY_PASSWORD
defaultValue:@""];
} else if ([paramId isEqualToString:PARAMETER_SSL_AUTHENTICATION_SCHEME]) {
[self addParameter:@"SSL authentication scheme"
type:PickerParameter
paramId:PARAMETER_SSL_AUTHENTICATION_SCHEME
possibleValues:@[ @"Basic", @"Certificate" ]
defaultIndex:0];
} else if ([paramId isEqualToString:PARAMETER_WEB_PROTOCOL]) {
[self addParameter:@"Web transport protocols"
type:StringParameter
paramId:PARAMETER_WEB_PROTOCOL
defaultValue:@""];
} else if ([paramId
isEqualToString:PARAMETER_SSL_CONNECTION_DOWNGRADE_TO]) {
[self addParameter:@"Downgrade To"
type:StringParameter
paramId:PARAMETER_SSL_CONNECTION_DOWNGRADE_TO
defaultValue:@""];
}
}
- (void)addParameter:(NSString *)displayName
type:(enum ParameterType)type
paramId:(NSString *)paramId
defaultValue:(NSString *)value {
Parameter *newParam = [[Parameter alloc] init];
newParam.displayName = displayName;
newParam.paramId = paramId;
newParam.value = value;
newParam.type = type;
[parameters addObject:newParam];
}
- (void)addParameter:(NSString *)displayName
type:(enum ParameterType)type
paramId:(NSString *)paramId
possibleValues:(NSArray *)possibleValues
defaultIndex:(int)index {
Parameter *newParam = [[Parameter alloc] init];
newParam.displayName = displayName;
newParam.paramId = paramId;
newParam.index = index;
newParam.value = possibleValues[index];
newParam.type = type;
newParam.possibleValues = possibleValues;
[parameters addObject:newParam];
}
- (BOOL)removeParameter:(NSString *)paramId {
for (Parameter *parameter in parameters) {
if ([paramId isEqualToString:[parameter paramId]]) {
[parameters removeObject:parameter];
return YES;
}
}
return NO;
}
- (BOOL)containsParameter:(NSString *)paramId {
for (Parameter *p in parameters) {
if ([p.paramId isEqualToString:paramId]) {
return YES;
}
}
return NO;
}
- (Parameter *)parameterWithId:(NSString *)paramId {
for (Parameter *parameter in parameters) {
if ([paramId isEqualToString:[parameter paramId]]) {
return parameter;
}
}
return nil;
}
- (Parameter *)parameterAtIndex:(int)index {
if (index < 0 || index > parameters.count) {
return nil;
} else {
return (Parameter *)[parameters objectAtIndex:index];
}
}
- (int)numOfParameters {
return (int)[parameters count];
}
@end