aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/API/FIRFirestoreSettings.mm
diff options
context:
space:
mode:
Diffstat (limited to 'Firestore/Source/API/FIRFirestoreSettings.mm')
-rw-r--r--Firestore/Source/API/FIRFirestoreSettings.mm92
1 files changed, 92 insertions, 0 deletions
diff --git a/Firestore/Source/API/FIRFirestoreSettings.mm b/Firestore/Source/API/FIRFirestoreSettings.mm
new file mode 100644
index 0000000..9677ff6
--- /dev/null
+++ b/Firestore/Source/API/FIRFirestoreSettings.mm
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2017 Google
+ *
+ * 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.
+ */
+
+#import "FIRFirestoreSettings.h"
+
+#import "Firestore/Source/Util/FSTUsageValidation.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+static NSString *const kDefaultHost = @"firestore.googleapis.com";
+static const BOOL kDefaultSSLEnabled = YES;
+static const BOOL kDefaultPersistenceEnabled = YES;
+
+@implementation FIRFirestoreSettings
+
+- (instancetype)init {
+ if (self = [super init]) {
+ _host = kDefaultHost;
+ _sslEnabled = kDefaultSSLEnabled;
+ _dispatchQueue = dispatch_get_main_queue();
+ _persistenceEnabled = kDefaultPersistenceEnabled;
+ }
+ return self;
+}
+
+- (BOOL)isEqual:(id)other {
+ if (self == other) {
+ return YES;
+ } else if (![other isKindOfClass:[FIRFirestoreSettings class]]) {
+ return NO;
+ }
+
+ FIRFirestoreSettings *otherSettings = (FIRFirestoreSettings *)other;
+ return [self.host isEqual:otherSettings.host] &&
+ self.isSSLEnabled == otherSettings.isSSLEnabled &&
+ self.dispatchQueue == otherSettings.dispatchQueue &&
+ self.isPersistenceEnabled == otherSettings.isPersistenceEnabled;
+}
+
+- (NSUInteger)hash {
+ NSUInteger result = [self.host hash];
+ result = 31 * result + (self.isSSLEnabled ? 1231 : 1237);
+ // Ignore the dispatchQueue to avoid having to deal with sizeof(dispatch_queue_t).
+ result = 31 * result + (self.isPersistenceEnabled ? 1231 : 1237);
+ return result;
+}
+
+- (id)copyWithZone:(nullable NSZone *)zone {
+ FIRFirestoreSettings *copy = [[FIRFirestoreSettings alloc] init];
+ copy.host = _host;
+ copy.sslEnabled = _sslEnabled;
+ copy.dispatchQueue = _dispatchQueue;
+ copy.persistenceEnabled = _persistenceEnabled;
+ return copy;
+}
+
+- (void)setHost:(NSString *)host {
+ if (!host) {
+ FSTThrowInvalidArgument(
+ @"host setting may not be nil. You should generally just use the default value "
+ "(which is %@)",
+ kDefaultHost);
+ }
+ _host = [host mutableCopy];
+}
+
+- (void)setDispatchQueue:(dispatch_queue_t)dispatchQueue {
+ if (!dispatchQueue) {
+ FSTThrowInvalidArgument(
+ @"dispatch queue setting may not be nil. Create a new dispatch queue with "
+ "dispatch_queue_create(\"com.example.MyQueue\", NULL) or just use the default "
+ "(which is the main queue, returned from dispatch_get_main_queue())");
+ }
+ _dispatchQueue = dispatchQueue;
+}
+
+@end
+
+NS_ASSUME_NONNULL_END