From 6c024719443aad53c19a163f9e5e23f75f421aed Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Wed, 4 Mar 2026 17:10:15 +0100 Subject: [PATCH 01/22] feat(database,windows): add support for Realtime Database to windows --- .../firebase_core/windows/CMakeLists.txt | 2 +- .../FirebaseDatabaseMessages.g.swift | 487 ++---- .../firebase_database/pubspec.yaml | 2 + .../firebase_database/windows/CMakeLists.txt | 58 + .../windows/firebase_database_plugin.cpp | 1068 ++++++++++++ .../windows/firebase_database_plugin.h | 147 ++ .../firebase_database_plugin_c_api.cpp | 16 + .../firebase_database_plugin_c_api.h | 29 + .../firebase_database/windows/messages.g.cpp | 1473 +++++++++++++++++ .../firebase_database/windows/messages.g.h | 479 ++++++ .../windows/plugin_version.h.in | 13 + .../lib/src/pigeon/messages.pigeon.dart | 403 ++--- .../pigeons/messages.dart | 3 + .../test/pigeon/test_api.dart | 658 +++----- tests/integration_test/e2e_test.dart | 1 + .../flutter/generated_plugin_registrant.cc | 3 + tests/windows/flutter/generated_plugins.cmake | 1 + 17 files changed, 3827 insertions(+), 1016 deletions(-) create mode 100644 packages/firebase_database/firebase_database/windows/CMakeLists.txt create mode 100644 packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp create mode 100644 packages/firebase_database/firebase_database/windows/firebase_database_plugin.h create mode 100644 packages/firebase_database/firebase_database/windows/firebase_database_plugin_c_api.cpp create mode 100644 packages/firebase_database/firebase_database/windows/include/firebase_database/firebase_database_plugin_c_api.h create mode 100644 packages/firebase_database/firebase_database/windows/messages.g.cpp create mode 100644 packages/firebase_database/firebase_database/windows/messages.g.h create mode 100644 packages/firebase_database/firebase_database/windows/plugin_version.h.in diff --git a/packages/firebase_core/firebase_core/windows/CMakeLists.txt b/packages/firebase_core/firebase_core/windows/CMakeLists.txt index b5d1fce438e1..d944944c8c8a 100644 --- a/packages/firebase_core/firebase_core/windows/CMakeLists.txt +++ b/packages/firebase_core/firebase_core/windows/CMakeLists.txt @@ -122,7 +122,7 @@ add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) target_include_directories(${PLUGIN_NAME} INTERFACE "${FIREBASE_CPP_SDK_DIR}/include") -set(FIREBASE_RELEASE_PATH_LIBS firebase_app firebase_auth firebase_remote_config firebase_storage firebase_firestore) +set(FIREBASE_RELEASE_PATH_LIBS firebase_app firebase_auth firebase_remote_config firebase_storage firebase_firestore firebase_database) foreach(firebase_lib IN ITEMS ${FIREBASE_RELEASE_PATH_LIBS}) get_target_property(firebase_lib_path ${firebase_lib} IMPORTED_LOCATION) string(REPLACE "Debug" "Release" firebase_lib_release_path ${firebase_lib_path}) diff --git a/packages/firebase_database/firebase_database/ios/firebase_database/Sources/firebase_database/FirebaseDatabaseMessages.g.swift b/packages/firebase_database/firebase_database/ios/firebase_database/Sources/firebase_database/FirebaseDatabaseMessages.g.swift index 174bb8cfc69b..525b3bcf98bb 100644 --- a/packages/firebase_database/firebase_database/ios/firebase_database/Sources/firebase_database/FirebaseDatabaseMessages.g.swift +++ b/packages/firebase_database/firebase_database/ios/firebase_database/Sources/firebase_database/FirebaseDatabaseMessages.g.swift @@ -27,12 +27,13 @@ final class PigeonError: Error { } var localizedDescription: String { - "PigeonError(code: \(code), message: \(message ?? ""), details: \(details ?? "")" + return + "PigeonError(code: \(code), message: \(message ?? ""), details: \(details ?? "")" } } private func wrapResult(_ result: Any?) -> [Any?] { - [result] + return [result] } private func wrapError(_ error: Any) -> [Any?] { @@ -58,14 +59,11 @@ private func wrapError(_ error: Any) -> [Any?] { } private func createConnectionError(withChannelName channelName: String) -> PigeonError { - PigeonError( - code: "channel-error", message: "Unable to establish connection on channel: '\(channelName)'.", - details: "" - ) + return PigeonError(code: "channel-error", message: "Unable to establish connection on channel: '\(channelName)'.", details: "") } private func isNullish(_ value: Any?) -> Bool { - value is NSNull || value == nil + return value is NSNull || value == nil } private func nilOrValue(_ value: Any?) -> T? { @@ -109,22 +107,19 @@ func deepEqualsFirebaseDatabaseMessages(_ lhs: Any?, _ rhs: Any?) -> Bool { return true default: - // Any other type shouldn't be able to be used with pigeon. File an issue if you find this to be - // untrue. + // Any other type shouldn't be able to be used with pigeon. File an issue if you find this to be untrue. return false } } func deepHashFirebaseDatabaseMessages(value: Any?, hasher: inout Hasher) { if let valueList = value as? [AnyHashable] { - for item in valueList { - deepHashFirebaseDatabaseMessages(value: item, hasher: &hasher) - } - return + for item in valueList { deepHashFirebaseDatabaseMessages(value: item, hasher: &hasher) } + return } if let valueDict = value as? [AnyHashable: AnyHashable] { - for key in valueDict.keys { + for key in valueDict.keys { hasher.combine(key) deepHashFirebaseDatabaseMessages(value: valueDict[key]!, hasher: &hasher) } @@ -138,13 +133,16 @@ func deepHashFirebaseDatabaseMessages(value: Any?, hasher: inout Hasher) { return hasher.combine(String(describing: value)) } + + /// Generated class from Pigeon that represents data sent in messages. struct DatabasePigeonSettings: Hashable { - var persistenceEnabled: Bool? - var cacheSizeBytes: Int64? - var loggingEnabled: Bool? - var emulatorHost: String? - var emulatorPort: Int64? + var persistenceEnabled: Bool? = nil + var cacheSizeBytes: Int64? = nil + var loggingEnabled: Bool? = nil + var emulatorHost: String? = nil + var emulatorPort: Int64? = nil + // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> DatabasePigeonSettings? { @@ -162,9 +160,8 @@ struct DatabasePigeonSettings: Hashable { emulatorPort: emulatorPort ) } - func toList() -> [Any?] { - [ + return [ persistenceEnabled, cacheSizeBytes, loggingEnabled, @@ -172,11 +169,8 @@ struct DatabasePigeonSettings: Hashable { emulatorPort, ] } - static func == (lhs: DatabasePigeonSettings, rhs: DatabasePigeonSettings) -> Bool { - deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) - } - + return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -185,9 +179,10 @@ struct DatabasePigeonSettings: Hashable { /// Generated class from Pigeon that represents data sent in messages. struct DatabasePigeonFirebaseApp: Hashable { var appName: String - var databaseURL: String? + var databaseURL: String? = nil var settings: DatabasePigeonSettings + // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> DatabasePigeonFirebaseApp? { let appName = pigeonVar_list[0] as! String @@ -200,19 +195,15 @@ struct DatabasePigeonFirebaseApp: Hashable { settings: settings ) } - func toList() -> [Any?] { - [ + return [ appName, databaseURL, settings, ] } - static func == (lhs: DatabasePigeonFirebaseApp, rhs: DatabasePigeonFirebaseApp) -> Bool { - deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) - } - + return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -222,6 +213,7 @@ struct DatabasePigeonFirebaseApp: Hashable { struct DatabaseReferencePlatform: Hashable { var path: String + // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> DatabaseReferencePlatform? { let path = pigeonVar_list[0] as! String @@ -230,17 +222,13 @@ struct DatabaseReferencePlatform: Hashable { path: path ) } - func toList() -> [Any?] { - [ - path, + return [ + path ] } - static func == (lhs: DatabaseReferencePlatform, rhs: DatabaseReferencePlatform) -> Bool { - deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) - } - + return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -249,8 +237,9 @@ struct DatabaseReferencePlatform: Hashable { /// Generated class from Pigeon that represents data sent in messages. struct DatabaseReferenceRequest: Hashable { var path: String - var value: Any? - var priority: Any? + var value: Any? = nil + var priority: Any? = nil + // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> DatabaseReferenceRequest? { @@ -264,19 +253,15 @@ struct DatabaseReferenceRequest: Hashable { priority: priority ) } - func toList() -> [Any?] { - [ + return [ path, value, priority, ] } - static func == (lhs: DatabaseReferenceRequest, rhs: DatabaseReferenceRequest) -> Bool { - deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) - } - + return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -287,6 +272,7 @@ struct UpdateRequest: Hashable { var path: String var value: [String: Any?] + // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> UpdateRequest? { let path = pigeonVar_list[0] as! String @@ -297,18 +283,14 @@ struct UpdateRequest: Hashable { value: value ) } - func toList() -> [Any?] { - [ + return [ path, value, ] } - static func == (lhs: UpdateRequest, rhs: UpdateRequest) -> Bool { - deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) - } - + return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -320,6 +302,7 @@ struct TransactionRequest: Hashable { var transactionKey: Int64 var applyLocally: Bool + // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> TransactionRequest? { let path = pigeonVar_list[0] as! String @@ -332,19 +315,15 @@ struct TransactionRequest: Hashable { applyLocally: applyLocally ) } - func toList() -> [Any?] { - [ + return [ path, transactionKey, applyLocally, ] } - static func == (lhs: TransactionRequest, rhs: TransactionRequest) -> Bool { - deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) - } - + return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -354,7 +333,8 @@ struct TransactionRequest: Hashable { struct QueryRequest: Hashable { var path: String var modifiers: [[String: Any?]] - var value: Bool? + var value: Bool? = nil + // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> QueryRequest? { @@ -368,19 +348,15 @@ struct QueryRequest: Hashable { value: value ) } - func toList() -> [Any?] { - [ + return [ path, modifiers, value, ] } - static func == (lhs: QueryRequest, rhs: QueryRequest) -> Bool { - deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) - } - + return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -388,10 +364,11 @@ struct QueryRequest: Hashable { /// Generated class from Pigeon that represents data sent in messages. struct TransactionHandlerResult: Hashable { - var value: Any? + var value: Any? = nil var aborted: Bool var exception: Bool + // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> TransactionHandlerResult? { let value: Any? = pigeonVar_list[0] @@ -404,19 +381,15 @@ struct TransactionHandlerResult: Hashable { exception: exception ) } - func toList() -> [Any?] { - [ + return [ value, aborted, exception, ] } - static func == (lhs: TransactionHandlerResult, rhs: TransactionHandlerResult) -> Bool { - deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) - } - + return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -426,21 +399,21 @@ private class FirebaseDatabaseMessagesPigeonCodecReader: FlutterStandardReader { override func readValue(ofType type: UInt8) -> Any? { switch type { case 129: - return DatabasePigeonSettings.fromList(readValue() as! [Any?]) + return DatabasePigeonSettings.fromList(self.readValue() as! [Any?]) case 130: - return DatabasePigeonFirebaseApp.fromList(readValue() as! [Any?]) + return DatabasePigeonFirebaseApp.fromList(self.readValue() as! [Any?]) case 131: - return DatabaseReferencePlatform.fromList(readValue() as! [Any?]) + return DatabaseReferencePlatform.fromList(self.readValue() as! [Any?]) case 132: - return DatabaseReferenceRequest.fromList(readValue() as! [Any?]) + return DatabaseReferenceRequest.fromList(self.readValue() as! [Any?]) case 133: - return UpdateRequest.fromList(readValue() as! [Any?]) + return UpdateRequest.fromList(self.readValue() as! [Any?]) case 134: - return TransactionRequest.fromList(readValue() as! [Any?]) + return TransactionRequest.fromList(self.readValue() as! [Any?]) case 135: - return QueryRequest.fromList(readValue() as! [Any?]) + return QueryRequest.fromList(self.readValue() as! [Any?]) case 136: - return TransactionHandlerResult.fromList(readValue() as! [Any?]) + return TransactionHandlerResult.fromList(self.readValue() as! [Any?]) default: return super.readValue(ofType: type) } @@ -481,88 +454,53 @@ private class FirebaseDatabaseMessagesPigeonCodecWriter: FlutterStandardWriter { private class FirebaseDatabaseMessagesPigeonCodecReaderWriter: FlutterStandardReaderWriter { override func reader(with data: Data) -> FlutterStandardReader { - FirebaseDatabaseMessagesPigeonCodecReader(data: data) + return FirebaseDatabaseMessagesPigeonCodecReader(data: data) } override func writer(with data: NSMutableData) -> FlutterStandardWriter { - FirebaseDatabaseMessagesPigeonCodecWriter(data: data) + return FirebaseDatabaseMessagesPigeonCodecWriter(data: data) } } class FirebaseDatabaseMessagesPigeonCodec: FlutterStandardMessageCodec, @unchecked Sendable { - static let shared = FirebaseDatabaseMessagesPigeonCodec( - readerWriter: FirebaseDatabaseMessagesPigeonCodecReaderWriter() - ) + static let shared = FirebaseDatabaseMessagesPigeonCodec(readerWriter: FirebaseDatabaseMessagesPigeonCodecReaderWriter()) } + /// Generated protocol from Pigeon that represents a handler of messages from Flutter. protocol FirebaseDatabaseHostApi { func goOnline(app: DatabasePigeonFirebaseApp, completion: @escaping (Result) -> Void) - func goOffline(app: DatabasePigeonFirebaseApp, - completion: @escaping (Result) -> Void) - func setPersistenceEnabled(app: DatabasePigeonFirebaseApp, enabled: Bool, - completion: @escaping (Result) -> Void) - func setPersistenceCacheSizeBytes(app: DatabasePigeonFirebaseApp, cacheSize: Int64, - completion: @escaping (Result) -> Void) - func setLoggingEnabled(app: DatabasePigeonFirebaseApp, enabled: Bool, - completion: @escaping (Result) -> Void) - func useDatabaseEmulator(app: DatabasePigeonFirebaseApp, host: String, port: Int64, - completion: @escaping (Result) -> Void) - func ref(app: DatabasePigeonFirebaseApp, path: String?, - completion: @escaping (Result) -> Void) - func refFromURL(app: DatabasePigeonFirebaseApp, url: String, - completion: @escaping (Result) -> Void) - func purgeOutstandingWrites(app: DatabasePigeonFirebaseApp, - completion: @escaping (Result) -> Void) - func databaseReferenceSet(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, - completion: @escaping (Result) -> Void) - func databaseReferenceSetWithPriority(app: DatabasePigeonFirebaseApp, - request: DatabaseReferenceRequest, - completion: @escaping (Result) -> Void) - func databaseReferenceUpdate(app: DatabasePigeonFirebaseApp, request: UpdateRequest, - completion: @escaping (Result) -> Void) - func databaseReferenceSetPriority(app: DatabasePigeonFirebaseApp, - request: DatabaseReferenceRequest, - completion: @escaping (Result) -> Void) - func databaseReferenceRunTransaction(app: DatabasePigeonFirebaseApp, request: TransactionRequest, - completion: @escaping (Result) -> Void) - func databaseReferenceGetTransactionResult(app: DatabasePigeonFirebaseApp, transactionKey: Int64, - completion: @escaping (Result<[String: Any?], Error>) - -> Void) - func onDisconnectSet(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, - completion: @escaping (Result) -> Void) - func onDisconnectSetWithPriority(app: DatabasePigeonFirebaseApp, - request: DatabaseReferenceRequest, - completion: @escaping (Result) -> Void) - func onDisconnectUpdate(app: DatabasePigeonFirebaseApp, request: UpdateRequest, - completion: @escaping (Result) -> Void) - func onDisconnectCancel(app: DatabasePigeonFirebaseApp, path: String, - completion: @escaping (Result) -> Void) - func queryObserve(app: DatabasePigeonFirebaseApp, request: QueryRequest, - completion: @escaping (Result) -> Void) - func queryKeepSynced(app: DatabasePigeonFirebaseApp, request: QueryRequest, - completion: @escaping (Result) -> Void) - func queryGet(app: DatabasePigeonFirebaseApp, request: QueryRequest, - completion: @escaping (Result<[String: Any?], Error>) -> Void) + func goOffline(app: DatabasePigeonFirebaseApp, completion: @escaping (Result) -> Void) + func setPersistenceEnabled(app: DatabasePigeonFirebaseApp, enabled: Bool, completion: @escaping (Result) -> Void) + func setPersistenceCacheSizeBytes(app: DatabasePigeonFirebaseApp, cacheSize: Int64, completion: @escaping (Result) -> Void) + func setLoggingEnabled(app: DatabasePigeonFirebaseApp, enabled: Bool, completion: @escaping (Result) -> Void) + func useDatabaseEmulator(app: DatabasePigeonFirebaseApp, host: String, port: Int64, completion: @escaping (Result) -> Void) + func ref(app: DatabasePigeonFirebaseApp, path: String?, completion: @escaping (Result) -> Void) + func refFromURL(app: DatabasePigeonFirebaseApp, url: String, completion: @escaping (Result) -> Void) + func purgeOutstandingWrites(app: DatabasePigeonFirebaseApp, completion: @escaping (Result) -> Void) + func databaseReferenceSet(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, completion: @escaping (Result) -> Void) + func databaseReferenceSetWithPriority(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, completion: @escaping (Result) -> Void) + func databaseReferenceUpdate(app: DatabasePigeonFirebaseApp, request: UpdateRequest, completion: @escaping (Result) -> Void) + func databaseReferenceSetPriority(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, completion: @escaping (Result) -> Void) + func databaseReferenceRunTransaction(app: DatabasePigeonFirebaseApp, request: TransactionRequest, completion: @escaping (Result) -> Void) + func databaseReferenceGetTransactionResult(app: DatabasePigeonFirebaseApp, transactionKey: Int64, completion: @escaping (Result<[String: Any?], Error>) -> Void) + func onDisconnectSet(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, completion: @escaping (Result) -> Void) + func onDisconnectSetWithPriority(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, completion: @escaping (Result) -> Void) + func onDisconnectUpdate(app: DatabasePigeonFirebaseApp, request: UpdateRequest, completion: @escaping (Result) -> Void) + func onDisconnectCancel(app: DatabasePigeonFirebaseApp, path: String, completion: @escaping (Result) -> Void) + func queryObserve(app: DatabasePigeonFirebaseApp, request: QueryRequest, completion: @escaping (Result) -> Void) + func queryKeepSynced(app: DatabasePigeonFirebaseApp, request: QueryRequest, completion: @escaping (Result) -> Void) + func queryGet(app: DatabasePigeonFirebaseApp, request: QueryRequest, completion: @escaping (Result<[String: Any?], Error>) -> Void) } /// Generated setup class from Pigeon to handle messages through the `binaryMessenger`. class FirebaseDatabaseHostApiSetup { - static var codec: FlutterStandardMessageCodec { - FirebaseDatabaseMessagesPigeonCodec.shared - } - - /// Sets up an instance of `FirebaseDatabaseHostApi` to handle messages through the - /// `binaryMessenger`. - static func setUp(binaryMessenger: FlutterBinaryMessenger, api: FirebaseDatabaseHostApi?, - messageChannelSuffix: String = "") { + static var codec: FlutterStandardMessageCodec { FirebaseDatabaseMessagesPigeonCodec.shared } + /// Sets up an instance of `FirebaseDatabaseHostApi` to handle messages through the `binaryMessenger`. + static func setUp(binaryMessenger: FlutterBinaryMessenger, api: FirebaseDatabaseHostApi?, messageChannelSuffix: String = "") { let channelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" - let goOnlineChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let goOnlineChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { goOnlineChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -570,7 +508,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -578,12 +516,8 @@ class FirebaseDatabaseHostApiSetup { } else { goOnlineChannel.setMessageHandler(nil) } - let goOfflineChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let goOfflineChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { goOfflineChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -591,7 +525,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -599,12 +533,8 @@ class FirebaseDatabaseHostApiSetup { } else { goOfflineChannel.setMessageHandler(nil) } - let setPersistenceEnabledChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let setPersistenceEnabledChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { setPersistenceEnabledChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -613,7 +543,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -621,12 +551,8 @@ class FirebaseDatabaseHostApiSetup { } else { setPersistenceEnabledChannel.setMessageHandler(nil) } - let setPersistenceCacheSizeBytesChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let setPersistenceCacheSizeBytesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { setPersistenceCacheSizeBytesChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -635,7 +561,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -643,12 +569,8 @@ class FirebaseDatabaseHostApiSetup { } else { setPersistenceCacheSizeBytesChannel.setMessageHandler(nil) } - let setLoggingEnabledChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let setLoggingEnabledChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { setLoggingEnabledChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -657,7 +579,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -665,12 +587,8 @@ class FirebaseDatabaseHostApiSetup { } else { setLoggingEnabledChannel.setMessageHandler(nil) } - let useDatabaseEmulatorChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let useDatabaseEmulatorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { useDatabaseEmulatorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -680,7 +598,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -688,21 +606,17 @@ class FirebaseDatabaseHostApiSetup { } else { useDatabaseEmulatorChannel.setMessageHandler(nil) } - let refChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let refChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { refChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp let pathArg: String? = nilOrValue(args[1]) api.ref(app: appArg, path: pathArg) { result in switch result { - case let .success(res): + case .success(let res): reply(wrapResult(res)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -710,21 +624,17 @@ class FirebaseDatabaseHostApiSetup { } else { refChannel.setMessageHandler(nil) } - let refFromURLChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let refFromURLChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { refFromURLChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp let urlArg = args[1] as! String api.refFromURL(app: appArg, url: urlArg) { result in switch result { - case let .success(res): + case .success(let res): reply(wrapResult(res)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -732,12 +642,8 @@ class FirebaseDatabaseHostApiSetup { } else { refFromURLChannel.setMessageHandler(nil) } - let purgeOutstandingWritesChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let purgeOutstandingWritesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { purgeOutstandingWritesChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -745,7 +651,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -753,12 +659,8 @@ class FirebaseDatabaseHostApiSetup { } else { purgeOutstandingWritesChannel.setMessageHandler(nil) } - let databaseReferenceSetChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let databaseReferenceSetChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { databaseReferenceSetChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -767,7 +669,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -775,12 +677,8 @@ class FirebaseDatabaseHostApiSetup { } else { databaseReferenceSetChannel.setMessageHandler(nil) } - let databaseReferenceSetWithPriorityChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let databaseReferenceSetWithPriorityChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { databaseReferenceSetWithPriorityChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -789,7 +687,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -797,12 +695,8 @@ class FirebaseDatabaseHostApiSetup { } else { databaseReferenceSetWithPriorityChannel.setMessageHandler(nil) } - let databaseReferenceUpdateChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let databaseReferenceUpdateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { databaseReferenceUpdateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -811,7 +705,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -819,12 +713,8 @@ class FirebaseDatabaseHostApiSetup { } else { databaseReferenceUpdateChannel.setMessageHandler(nil) } - let databaseReferenceSetPriorityChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let databaseReferenceSetPriorityChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { databaseReferenceSetPriorityChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -833,7 +723,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -841,12 +731,8 @@ class FirebaseDatabaseHostApiSetup { } else { databaseReferenceSetPriorityChannel.setMessageHandler(nil) } - let databaseReferenceRunTransactionChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let databaseReferenceRunTransactionChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { databaseReferenceRunTransactionChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -855,7 +741,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -863,22 +749,17 @@ class FirebaseDatabaseHostApiSetup { } else { databaseReferenceRunTransactionChannel.setMessageHandler(nil) } - let databaseReferenceGetTransactionResultChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let databaseReferenceGetTransactionResultChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { databaseReferenceGetTransactionResultChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp let transactionKeyArg = args[1] as! Int64 - api.databaseReferenceGetTransactionResult(app: appArg, transactionKey: transactionKeyArg) { - result in + api.databaseReferenceGetTransactionResult(app: appArg, transactionKey: transactionKeyArg) { result in switch result { - case let .success(res): + case .success(let res): reply(wrapResult(res)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -886,12 +767,8 @@ class FirebaseDatabaseHostApiSetup { } else { databaseReferenceGetTransactionResultChannel.setMessageHandler(nil) } - let onDisconnectSetChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let onDisconnectSetChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { onDisconnectSetChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -900,7 +777,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -908,12 +785,8 @@ class FirebaseDatabaseHostApiSetup { } else { onDisconnectSetChannel.setMessageHandler(nil) } - let onDisconnectSetWithPriorityChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let onDisconnectSetWithPriorityChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { onDisconnectSetWithPriorityChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -922,7 +795,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -930,12 +803,8 @@ class FirebaseDatabaseHostApiSetup { } else { onDisconnectSetWithPriorityChannel.setMessageHandler(nil) } - let onDisconnectUpdateChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let onDisconnectUpdateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { onDisconnectUpdateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -944,7 +813,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -952,12 +821,8 @@ class FirebaseDatabaseHostApiSetup { } else { onDisconnectUpdateChannel.setMessageHandler(nil) } - let onDisconnectCancelChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let onDisconnectCancelChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { onDisconnectCancelChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -966,7 +831,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -974,21 +839,17 @@ class FirebaseDatabaseHostApiSetup { } else { onDisconnectCancelChannel.setMessageHandler(nil) } - let queryObserveChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let queryObserveChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { queryObserveChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp let requestArg = args[1] as! QueryRequest api.queryObserve(app: appArg, request: requestArg) { result in switch result { - case let .success(res): + case .success(let res): reply(wrapResult(res)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -996,12 +857,8 @@ class FirebaseDatabaseHostApiSetup { } else { queryObserveChannel.setMessageHandler(nil) } - let queryKeepSyncedChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let queryKeepSyncedChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { queryKeepSyncedChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -1010,7 +867,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -1018,21 +875,17 @@ class FirebaseDatabaseHostApiSetup { } else { queryKeepSyncedChannel.setMessageHandler(nil) } - let queryGetChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet\(channelSuffix)", - binaryMessenger: binaryMessenger, codec: codec - ) - if let api { + let queryGetChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { queryGetChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp let requestArg = args[1] as! QueryRequest api.queryGet(app: appArg, request: requestArg) { result in switch result { - case let .success(res): + case .success(let res): reply(wrapResult(res)) - case let .failure(error): + case .failure(let error): reply(wrapError(error)) } } @@ -1042,15 +895,10 @@ class FirebaseDatabaseHostApiSetup { } } } - /// Generated protocol from Pigeon that represents Flutter messages that can be called from Swift. protocol FirebaseDatabaseFlutterApiProtocol { - func callTransactionHandler(transactionKey transactionKeyArg: Int64, - snapshotValue snapshotValueArg: Any?, - completion: @escaping (Result) - -> Void) + func callTransactionHandler(transactionKey transactionKeyArg: Int64, snapshotValue snapshotValueArg: Any?, completion: @escaping (Result) -> Void) } - class FirebaseDatabaseFlutterApi: FirebaseDatabaseFlutterApiProtocol { private let binaryMessenger: FlutterBinaryMessenger private let messageChannelSuffix: String @@ -1058,20 +906,12 @@ class FirebaseDatabaseFlutterApi: FirebaseDatabaseFlutterApiProtocol { self.binaryMessenger = binaryMessenger self.messageChannelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" } - var codec: FirebaseDatabaseMessagesPigeonCodec { - FirebaseDatabaseMessagesPigeonCodec.shared + return FirebaseDatabaseMessagesPigeonCodec.shared } - - func callTransactionHandler(transactionKey transactionKeyArg: Int64, - snapshotValue snapshotValueArg: Any?, - completion: @escaping (Result) - -> Void) { - let channelName = - "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler\(messageChannelSuffix)" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec - ) + func callTransactionHandler(transactionKey transactionKeyArg: Int64, snapshotValue snapshotValueArg: Any?, completion: @escaping (Result) -> Void) { + let channelName: String = "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler\(messageChannelSuffix)" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([transactionKeyArg, snapshotValueArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -1083,14 +923,7 @@ class FirebaseDatabaseFlutterApi: FirebaseDatabaseFlutterApiProtocol { let details: String? = nilOrValue(listResponse[2]) completion(.failure(PigeonError(code: code, message: message, details: details))) } else if listResponse[0] == nil { - completion( - .failure( - PigeonError( - code: "null-error", - message: "Flutter api returned null value for non-null return value.", details: "" - ) - ) - ) + completion(.failure(PigeonError(code: "null-error", message: "Flutter api returned null value for non-null return value.", details: ""))) } else { let result = listResponse[0] as! TransactionHandlerResult completion(.success(result)) diff --git a/packages/firebase_database/firebase_database/pubspec.yaml b/packages/firebase_database/firebase_database/pubspec.yaml index 708d05cfe5ac..abbe7eb8e522 100755 --- a/packages/firebase_database/firebase_database/pubspec.yaml +++ b/packages/firebase_database/firebase_database/pubspec.yaml @@ -39,5 +39,7 @@ flutter: pluginClass: FLTFirebaseDatabasePlugin macos: pluginClass: FLTFirebaseDatabasePlugin + windows: + pluginClass: FirebaseDatabasePluginCApi web: default_package: firebase_database_web diff --git a/packages/firebase_database/firebase_database/windows/CMakeLists.txt b/packages/firebase_database/firebase_database/windows/CMakeLists.txt new file mode 100644 index 000000000000..6b6bdc617af2 --- /dev/null +++ b/packages/firebase_database/firebase_database/windows/CMakeLists.txt @@ -0,0 +1,58 @@ +cmake_minimum_required(VERSION 3.14) + +set(PROJECT_NAME "flutterfire_database") +project(${PROJECT_NAME} LANGUAGES CXX) + +set(PLUGIN_NAME "firebase_database_plugin") + +list(APPEND PLUGIN_SOURCES + "firebase_database_plugin.cpp" + "firebase_database_plugin.h" + "messages.g.cpp" + "messages.g.h" +) + +# Read version from pubspec.yaml +file(STRINGS "../pubspec.yaml" pubspec_content) +foreach(line ${pubspec_content}) + string(FIND ${line} "version: " has_version) + + if("${has_version}" STREQUAL "0") + string(FIND ${line} ": " version_start_pos) + math(EXPR version_start_pos "${version_start_pos} + 2") + string(LENGTH ${line} version_end_pos) + math(EXPR len "${version_end_pos} - ${version_start_pos}") + string(SUBSTRING ${line} ${version_start_pos} ${len} PLUGIN_VERSION) + break() + endif() +endforeach(line) + +configure_file(plugin_version.h.in ${CMAKE_BINARY_DIR}/generated/firebase_database/plugin_version.h) +include_directories(${CMAKE_BINARY_DIR}/generated/) + +add_library(${PLUGIN_NAME} STATIC + "include/firebase_database/firebase_database_plugin_c_api.h" + "firebase_database_plugin_c_api.cpp" + ${PLUGIN_SOURCES} + ${CMAKE_BINARY_DIR}/generated/firebase_database/plugin_version.h +) + +apply_standard_settings(${PLUGIN_NAME}) + +set_target_properties(${PLUGIN_NAME} PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_compile_definitions(${PLUGIN_NAME} PUBLIC FLUTTER_PLUGIN_IMPL) +target_compile_definitions(${PLUGIN_NAME} PRIVATE -DINTERNAL_EXPERIMENTAL=1) + +set(MSVC_RUNTIME_MODE MD) +set(firebase_libs firebase_core_plugin firebase_database) +target_link_libraries(${PLUGIN_NAME} PRIVATE "${firebase_libs}" "${ADDITIONAL_LIBS}") + +target_include_directories(${PLUGIN_NAME} INTERFACE + "${CMAKE_CURRENT_SOURCE_DIR}/include") +target_link_libraries(${PLUGIN_NAME} PRIVATE flutter flutter_wrapper_plugin) + +set(firebase_database_bundled_libraries + "" + PARENT_SCOPE +) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp new file mode 100644 index 000000000000..ff36c334b5fd --- /dev/null +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -0,0 +1,1068 @@ +// Copyright 2025, the Chromium project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#include "firebase_database_plugin.h" + +#include "firebase/app.h" +#include "firebase/database.h" +#include "firebase/database/common.h" +#include "firebase/database/data_snapshot.h" +#include "firebase/database/database_reference.h" +#include "firebase/database/disconnection.h" +#include "firebase/database/listener.h" +#include "firebase/database/mutable_data.h" +#include "firebase/database/query.h" +#include "firebase/future.h" +#include "firebase/log.h" +#include "firebase/variant.h" +#include "firebase_database/plugin_version.h" +#include "messages.g.h" + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using firebase::App; +using firebase::Future; +using firebase::Variant; +using firebase::database::Database; +using firebase::database::DatabaseReference; +using firebase::database::DataSnapshot; +using firebase::database::Error; +using firebase::database::MutableData; +using firebase::database::TransactionResult; +using flutter::EncodableList; +using flutter::EncodableMap; +using flutter::EncodableValue; + +namespace firebase_database_windows { + +static const std::string kLibraryName = "flutter-fire-db"; + +// Static member initialization +flutter::BinaryMessenger* FirebaseDatabasePlugin::messenger_ = nullptr; +std::map>> + FirebaseDatabasePlugin::event_channels_; +std::map>> + FirebaseDatabasePlugin::stream_handlers_; + +// --- Helper: Register an EventChannel with a generated name --- +static std::string RegisterEventChannel( + const std::string& prefix, + std::unique_ptr> handler) { + static int channel_counter = 0; + std::string channelName = + prefix + std::to_string(channel_counter++) + "_" + + std::to_string( + std::chrono::system_clock::now().time_since_epoch().count()); + + FirebaseDatabasePlugin::event_channels_[channelName] = + std::make_unique>( + FirebaseDatabasePlugin::messenger_, channelName, + &flutter::StandardMethodCodec::GetInstance()); + FirebaseDatabasePlugin::stream_handlers_[channelName] = std::move(handler); + FirebaseDatabasePlugin::event_channels_[channelName]->SetStreamHandler( + std::move(FirebaseDatabasePlugin::stream_handlers_[channelName])); + return channelName; +} + +// --- Helper: Convert firebase::Variant to flutter::EncodableValue --- +EncodableValue FirebaseDatabasePlugin::VariantToEncodableValue( + const Variant& variant) { + switch (variant.type()) { + case Variant::kTypeNull: + return EncodableValue(); + case Variant::kTypeInt64: + return EncodableValue(variant.int64_value()); + case Variant::kTypeDouble: + return EncodableValue(variant.double_value()); + case Variant::kTypeBool: + return EncodableValue(variant.bool_value()); + case Variant::kTypeStaticString: + return EncodableValue(std::string(variant.string_value())); + case Variant::kTypeMutableString: + return EncodableValue(variant.mutable_string()); + case Variant::kTypeVector: { + EncodableList list; + for (const auto& item : variant.vector()) { + list.push_back(VariantToEncodableValue(item)); + } + return EncodableValue(list); + } + case Variant::kTypeMap: { + EncodableMap map; + for (const auto& kv : variant.map()) { + EncodableValue key = VariantToEncodableValue(kv.first); + EncodableValue value = VariantToEncodableValue(kv.second); + map[key] = value; + } + return EncodableValue(map); + } + case Variant::kTypeStaticBlob: { + std::vector blob(variant.blob_data(), + variant.blob_data() + variant.blob_size()); + return EncodableValue(blob); + } + case Variant::kTypeMutableBlob: { + std::vector blob( + variant.mutable_blob_data(), + variant.mutable_blob_data() + variant.blob_size()); + return EncodableValue(blob); + } + default: + return EncodableValue(); + } +} + +// --- Helper: Convert flutter::EncodableValue to firebase::Variant --- +Variant FirebaseDatabasePlugin::EncodableValueToVariant( + const EncodableValue& value) { + if (std::holds_alternative(value)) { + return Variant::Null(); + } else if (std::holds_alternative(value)) { + return Variant(std::get(value)); + } else if (std::holds_alternative(value)) { + return Variant(static_cast(std::get(value))); + } else if (std::holds_alternative(value)) { + return Variant(std::get(value)); + } else if (std::holds_alternative(value)) { + return Variant(std::get(value)); + } else if (std::holds_alternative(value)) { + return Variant(std::get(value)); + } else if (std::holds_alternative>(value)) { + const auto& blob = std::get>(value); + return Variant::FromMutableBlob(blob.data(), blob.size()); + } else if (std::holds_alternative(value)) { + const auto& list = std::get(value); + std::vector vec; + vec.reserve(list.size()); + for (const auto& item : list) { + vec.push_back(EncodableValueToVariant(item)); + } + return Variant(vec); + } else if (std::holds_alternative(value)) { + const auto& map = std::get(value); + std::map variant_map; + for (const auto& kv : map) { + variant_map[EncodableValueToVariant(kv.first)] = + EncodableValueToVariant(kv.second); + } + return Variant(variant_map); + } + return Variant::Null(); +} + +// --- Helper: Error code string from C++ SDK Error enum --- +std::string FirebaseDatabasePlugin::GetDatabaseErrorCode(Error error) { + switch (error) { + case Error::kErrorNone: + return "none"; + case Error::kErrorDisconnected: + return "disconnected"; + case Error::kErrorExpiredToken: + return "expired-token"; + case Error::kErrorInvalidToken: + return "invalid-token"; + case Error::kErrorMaxRetries: + return "max-retries"; + case Error::kErrorNetworkError: + return "network-error"; + case Error::kErrorOperationFailed: + return "operation-failed"; + case Error::kErrorOverriddenBySet: + return "overridden-by-set"; + case Error::kErrorPermissionDenied: + return "permission-denied"; + case Error::kErrorUnavailable: + return "unavailable"; + case Error::kErrorWriteCanceled: + return "write-canceled"; + case Error::kErrorInvalidVariantType: + return "invalid-variant-type"; + case Error::kErrorConflictingOperationInProgress: + return "conflicting-operation-in-progress"; + case Error::kErrorTransactionAbortedByUser: + return "transaction-aborted-by-user"; + default: + return "unknown"; + } +} + +std::string FirebaseDatabasePlugin::GetDatabaseErrorMessage(Error error) { + const char* msg = firebase::database::GetErrorMessage(error); + return msg ? std::string(msg) : "Unknown error"; +} + +FlutterError FirebaseDatabasePlugin::ParseError( + const firebase::FutureBase& future) { + Error error = static_cast(future.error()); + std::string code = GetDatabaseErrorCode(error); + std::string message = + future.error_message() ? future.error_message() : "Unknown error"; + return FlutterError(code, message); +} + +// --- Helper: Convert DataSnapshot to EncodableMap --- +EncodableMap FirebaseDatabasePlugin::DataSnapshotToEncodableMap( + const DataSnapshot& snapshot) { + EncodableMap result; + result[EncodableValue("key")] = + snapshot.key() ? EncodableValue(std::string(snapshot.key())) + : EncodableValue(); + result[EncodableValue("value")] = VariantToEncodableValue(snapshot.value()); + result[EncodableValue("priority")] = + VariantToEncodableValue(snapshot.priority()); + + EncodableList childKeys; + std::vector children = snapshot.children(); + for (const auto& child : children) { + if (child.key()) { + childKeys.push_back(EncodableValue(std::string(child.key()))); + } + } + result[EncodableValue("childKeys")] = EncodableValue(childKeys); + + return result; +} + +// --- Helper: Apply query modifiers --- +firebase::database::Query FirebaseDatabasePlugin::ApplyQueryModifiers( + firebase::database::Query query, const EncodableList& modifiers) { + for (const auto& mod_value : modifiers) { + const auto& mod = std::get(mod_value); + + auto type_it = mod.find(EncodableValue("type")); + if (type_it == mod.end()) continue; + std::string type = std::get(type_it->second); + + auto name_it = mod.find(EncodableValue("name")); + if (name_it == mod.end()) continue; + std::string name = std::get(name_it->second); + + if (type == "orderBy") { + if (name == "orderByChild") { + auto path_it = mod.find(EncodableValue("path")); + if (path_it != mod.end()) { + query = query.OrderByChild( + std::get(path_it->second).c_str()); + } + } else if (name == "orderByKey") { + query = query.OrderByKey(); + } else if (name == "orderByValue") { + query = query.OrderByValue(); + } else if (name == "orderByPriority") { + query = query.OrderByPriority(); + } + } else if (type == "cursor") { + auto value_it = mod.find(EncodableValue("value")); + Variant cursor_value = Variant::Null(); + if (value_it != mod.end()) { + cursor_value = EncodableValueToVariant(value_it->second); + } + + auto key_it = mod.find(EncodableValue("key")); + const char* child_key = nullptr; + std::string key_str; + if (key_it != mod.end() && + std::holds_alternative(key_it->second)) { + key_str = std::get(key_it->second); + child_key = key_str.c_str(); + } + + if (name == "startAt") { + query = child_key ? query.StartAt(cursor_value, child_key) + : query.StartAt(cursor_value); + } else if (name == "startAfter") { + // C++ SDK doesn't have StartAfter; use StartAt workaround + query = child_key ? query.StartAt(cursor_value, child_key) + : query.StartAt(cursor_value); + } else if (name == "endAt") { + query = child_key ? query.EndAt(cursor_value, child_key) + : query.EndAt(cursor_value); + } else if (name == "endBefore") { + // C++ SDK doesn't have EndBefore; use EndAt workaround + query = child_key ? query.EndAt(cursor_value, child_key) + : query.EndAt(cursor_value); + } + } else if (type == "limit") { + auto limit_it = mod.find(EncodableValue("limit")); + if (limit_it != mod.end()) { + int limit = 0; + if (std::holds_alternative(limit_it->second)) { + limit = std::get(limit_it->second); + } else if (std::holds_alternative(limit_it->second)) { + limit = static_cast(std::get(limit_it->second)); + } + if (name == "limitToFirst") { + query = query.LimitToFirst(static_cast(limit)); + } else if (name == "limitToLast") { + query = query.LimitToLast(static_cast(limit)); + } + } + } + } + return query; +} + +// ===== Plugin Implementation ===== + +FirebaseDatabasePlugin::FirebaseDatabasePlugin() {} + +FirebaseDatabasePlugin::~FirebaseDatabasePlugin() {} + +void FirebaseDatabasePlugin::RegisterWithRegistrar( + flutter::PluginRegistrarWindows* registrar) { + auto plugin = std::make_unique(); + messenger_ = registrar->messenger(); + FirebaseDatabaseHostApi::SetUp(registrar->messenger(), plugin.get()); + registrar->AddPlugin(std::move(plugin)); + App::RegisterLibrary(kLibraryName.c_str(), getPluginVersion().c_str(), + nullptr); +} + +// --- Helper: Get Database instance from Pigeon app --- +Database* FirebaseDatabasePlugin::GetDatabaseFromPigeon( + const DatabasePigeonFirebaseApp& app) { + App* firebase_app = App::GetInstance(app.app_name().c_str()); + if (!firebase_app) { + return nullptr; + } + + Database* database = nullptr; + const std::string* url = app.database_u_r_l(); + if (url && !url->empty()) { + database = Database::GetInstance(firebase_app, url->c_str()); + } else { + database = Database::GetInstance(firebase_app); + } + + if (!database) return nullptr; + + // Apply settings + const auto& settings = app.settings(); + if (settings.persistence_enabled()) { + database->set_persistence_enabled(*settings.persistence_enabled()); + } + if (settings.logging_enabled() && *settings.logging_enabled()) { + database->set_log_level(firebase::kLogLevelDebug); + } + + return database; +} + +// ===== Database methods ===== + +void FirebaseDatabasePlugin::GoOnline( + const DatabasePigeonFirebaseApp& app, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + database->GoOnline(); + result(std::nullopt); +} + +void FirebaseDatabasePlugin::GoOffline( + const DatabasePigeonFirebaseApp& app, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + database->GoOffline(); + result(std::nullopt); +} + +void FirebaseDatabasePlugin::SetPersistenceEnabled( + const DatabasePigeonFirebaseApp& app, bool enabled, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + database->set_persistence_enabled(enabled); + result(std::nullopt); +} + +void FirebaseDatabasePlugin::SetPersistenceCacheSizeBytes( + const DatabasePigeonFirebaseApp& app, int64_t cache_size, + std::function reply)> result) { + // C++ SDK doesn't directly support setting cache size + result(std::nullopt); +} + +void FirebaseDatabasePlugin::SetLoggingEnabled( + const DatabasePigeonFirebaseApp& app, bool enabled, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + database->set_log_level(enabled ? firebase::kLogLevelDebug + : firebase::kLogLevelInfo); + result(std::nullopt); +} + +void FirebaseDatabasePlugin::UseDatabaseEmulator( + const DatabasePigeonFirebaseApp& app, const std::string& host, + int64_t port, + std::function reply)> result) { + // The C++ SDK does not have a direct emulator API. + // The emulator host/port should be set via the database URL or settings + // before any other operations. + result(std::nullopt); +} + +void FirebaseDatabasePlugin::Ref( + const DatabasePigeonFirebaseApp& app, const std::string* path, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref; + if (path && !path->empty()) { + ref = database->GetReference(path->c_str()); + } else { + ref = database->GetReference(); + } + + std::string ref_path; + if (ref.key()) { + // Build path from the URL + std::string url = ref.url(); + // Extract path from URL (after the host) + auto pos = url.find(".com/"); + if (pos != std::string::npos) { + ref_path = url.substr(pos + 4); + } else { + ref_path = path ? *path : "/"; + } + } else { + ref_path = path ? *path : "/"; + } + + result(DatabaseReferencePlatform(ref_path)); +} + +void FirebaseDatabasePlugin::RefFromURL( + const DatabasePigeonFirebaseApp& app, const std::string& url, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref = database->GetReferenceFromUrl(url.c_str()); + + std::string ref_path; + std::string ref_url = ref.url(); + auto pos = ref_url.find(".com/"); + if (pos != std::string::npos) { + ref_path = ref_url.substr(pos + 4); + } else { + ref_path = "/"; + } + + result(DatabaseReferencePlatform(ref_path)); +} + +void FirebaseDatabasePlugin::PurgeOutstandingWrites( + const DatabasePigeonFirebaseApp& app, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + database->PurgeOutstandingWrites(); + result(std::nullopt); +} + +// ===== DatabaseReference methods ===== + +void FirebaseDatabasePlugin::DatabaseReferenceSet( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref = database->GetReference(request.path().c_str()); + Variant value = request.value() ? EncodableValueToVariant(*request.value()) + : Variant::Null(); + + ref.SetValue(value).OnCompletion( + [result](const Future& future) { + if (future.error() == Error::kErrorNone) { + result(std::nullopt); + } else { + result(FirebaseDatabasePlugin::ParseError(future)); + } + }); +} + +void FirebaseDatabasePlugin::DatabaseReferenceSetWithPriority( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref = database->GetReference(request.path().c_str()); + Variant value = request.value() ? EncodableValueToVariant(*request.value()) + : Variant::Null(); + Variant priority = request.priority() + ? EncodableValueToVariant(*request.priority()) + : Variant::Null(); + + ref.SetValueAndPriority(value, priority) + .OnCompletion([result](const Future& future) { + if (future.error() == Error::kErrorNone) { + result(std::nullopt); + } else { + result(FirebaseDatabasePlugin::ParseError(future)); + } + }); +} + +void FirebaseDatabasePlugin::DatabaseReferenceUpdate( + const DatabasePigeonFirebaseApp& app, const UpdateRequest& request, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref = database->GetReference(request.path().c_str()); + Variant values = EncodableValueToVariant(EncodableValue(request.value())); + + ref.UpdateChildren(values).OnCompletion( + [result](const Future& future) { + if (future.error() == Error::kErrorNone) { + result(std::nullopt); + } else { + result(FirebaseDatabasePlugin::ParseError(future)); + } + }); +} + +void FirebaseDatabasePlugin::DatabaseReferenceSetPriority( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref = database->GetReference(request.path().c_str()); + Variant priority = request.priority() + ? EncodableValueToVariant(*request.priority()) + : Variant::Null(); + + ref.SetPriority(priority).OnCompletion( + [result](const Future& future) { + if (future.error() == Error::kErrorNone) { + result(std::nullopt); + } else { + result(FirebaseDatabasePlugin::ParseError(future)); + } + }); +} + +void FirebaseDatabasePlugin::DatabaseReferenceRunTransaction( + const DatabasePigeonFirebaseApp& app, + const TransactionRequest& request, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref = database->GetReference(request.path().c_str()); + int64_t transaction_key = request.transaction_key(); + bool apply_locally = request.apply_locally(); + + // Store a reference to this plugin and the transaction results map + auto* plugin = this; + + struct TransactionContext { + flutter::BinaryMessenger* messenger; + int64_t transaction_key; + std::map* transaction_results; + std::function reply)> result; + }; + + auto* ctx = new TransactionContext{messenger_, transaction_key, + &transaction_results_, result}; + + ref.RunTransaction( + [](MutableData* data, void* context) -> firebase::database::TransactionResult { + auto* ctx = static_cast(context); + + // Convert current data to EncodableValue + Variant current_value = data->value(); + EncodableValue snapshot_value = + FirebaseDatabasePlugin::VariantToEncodableValue(current_value); + + // Call the Flutter transaction handler synchronously using a semaphore + std::mutex mtx; + std::condition_variable cv; + bool handler_complete = false; + TransactionHandlerResult* handler_result = nullptr; + + auto flutter_api = + std::make_unique(ctx->messenger); + + const EncodableValue* snapshot_ptr = + std::holds_alternative(snapshot_value) + ? nullptr + : &snapshot_value; + + flutter_api->CallTransactionHandler( + ctx->transaction_key, snapshot_ptr, + [&](const TransactionHandlerResult& result) { + handler_result = new TransactionHandlerResult( + result.value(), result.aborted(), result.exception()); + std::lock_guard lock(mtx); + handler_complete = true; + cv.notify_one(); + }, + [&](const FlutterError& error) { + handler_result = new TransactionHandlerResult(true, true); + std::lock_guard lock(mtx); + handler_complete = true; + cv.notify_one(); + }); + + // Wait for the Flutter callback to complete + { + std::unique_lock lock(mtx); + cv.wait(lock, [&] { return handler_complete; }); + } + + if (!handler_result || handler_result->aborted() || + handler_result->exception()) { + delete handler_result; + return firebase::database::kTransactionResultAbort; + } + + // Apply the result value + if (handler_result->value()) { + Variant new_value = FirebaseDatabasePlugin::EncodableValueToVariant( + *handler_result->value()); + data->set_value(new_value); + } else { + data->set_value(Variant::Null()); + } + + delete handler_result; + return firebase::database::kTransactionResultSuccess; + }, + ctx, apply_locally); + + // Wait for the transaction to complete + ref.RunTransactionLastResult().OnCompletion( + [ctx](const Future& future) { + if (future.error() == Error::kErrorNone) { + const DataSnapshot* snapshot = future.result(); + EncodableMap result_map; + result_map[EncodableValue("committed")] = EncodableValue(true); + if (snapshot) { + result_map[EncodableValue("snapshot")] = EncodableValue( + FirebaseDatabasePlugin::DataSnapshotToEncodableMap(*snapshot)); + } else { + result_map[EncodableValue("snapshot")] = EncodableValue(); + } + (*ctx->transaction_results)[ctx->transaction_key] = result_map; + ctx->result(std::nullopt); + } else { + // Transaction failed but may have been aborted + EncodableMap result_map; + result_map[EncodableValue("committed")] = EncodableValue(false); + result_map[EncodableValue("snapshot")] = EncodableValue(EncodableMap{ + {EncodableValue("key"), EncodableValue()}, + {EncodableValue("value"), EncodableValue()}, + {EncodableValue("priority"), EncodableValue()}, + {EncodableValue("childKeys"), EncodableValue(EncodableList{})}, + }); + (*ctx->transaction_results)[ctx->transaction_key] = result_map; + + if (static_cast(future.error()) == + Error::kErrorTransactionAbortedByUser) { + // Aborted by user is not an error condition + ctx->result(std::nullopt); + } else { + ctx->result(FirebaseDatabasePlugin::ParseError(future)); + } + } + delete ctx; + }); +} + +void FirebaseDatabasePlugin::DatabaseReferenceGetTransactionResult( + const DatabasePigeonFirebaseApp& app, int64_t transaction_key, + std::function reply)> result) { + auto it = transaction_results_.find(transaction_key); + if (it != transaction_results_.end()) { + result(it->second); + transaction_results_.erase(it); + } else { + // Return default result + EncodableMap default_result; + default_result[EncodableValue("committed")] = EncodableValue(false); + default_result[EncodableValue("snapshot")] = EncodableValue(EncodableMap{ + {EncodableValue("key"), EncodableValue()}, + {EncodableValue("value"), EncodableValue()}, + {EncodableValue("priority"), EncodableValue()}, + {EncodableValue("childKeys"), EncodableValue(EncodableList{})}, + }); + result(default_result); + } +} + +// ===== OnDisconnect methods ===== + +void FirebaseDatabasePlugin::OnDisconnectSet( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref = database->GetReference(request.path().c_str()); + Variant value = request.value() ? EncodableValueToVariant(*request.value()) + : Variant::Null(); + + ref.OnDisconnect()->SetValue(value).OnCompletion( + [result](const Future& future) { + if (future.error() == Error::kErrorNone) { + result(std::nullopt); + } else { + result(FirebaseDatabasePlugin::ParseError(future)); + } + }); +} + +void FirebaseDatabasePlugin::OnDisconnectSetWithPriority( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref = database->GetReference(request.path().c_str()); + Variant value = request.value() ? EncodableValueToVariant(*request.value()) + : Variant::Null(); + Variant priority = request.priority() + ? EncodableValueToVariant(*request.priority()) + : Variant::Null(); + + ref.OnDisconnect() + ->SetValueAndPriority(value, priority) + .OnCompletion([result](const Future& future) { + if (future.error() == Error::kErrorNone) { + result(std::nullopt); + } else { + result(FirebaseDatabasePlugin::ParseError(future)); + } + }); +} + +void FirebaseDatabasePlugin::OnDisconnectUpdate( + const DatabasePigeonFirebaseApp& app, const UpdateRequest& request, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref = database->GetReference(request.path().c_str()); + Variant values = EncodableValueToVariant(EncodableValue(request.value())); + + ref.OnDisconnect()->UpdateChildren(values).OnCompletion( + [result](const Future& future) { + if (future.error() == Error::kErrorNone) { + result(std::nullopt); + } else { + result(FirebaseDatabasePlugin::ParseError(future)); + } + }); +} + +void FirebaseDatabasePlugin::OnDisconnectCancel( + const DatabasePigeonFirebaseApp& app, const std::string& path, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref = database->GetReference(path.c_str()); + + ref.OnDisconnect()->Cancel().OnCompletion( + [result](const Future& future) { + if (future.error() == Error::kErrorNone) { + result(std::nullopt); + } else { + result(FirebaseDatabasePlugin::ParseError(future)); + } + }); +} + +// ===== Query methods ===== + +void FirebaseDatabasePlugin::QueryObserve( + const DatabasePigeonFirebaseApp& app, const QueryRequest& request, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref = database->GetReference(request.path().c_str()); + firebase::database::Query query = ApplyQueryModifiers(ref, request.modifiers()); + + // The event type will be passed as an argument when the Dart side calls + // listen on the EventChannel. We need to create the appropriate handler. + // Since we don't know the event type here, we create both a value and child + // handler based on a shared approach: the Dart side passes eventType as an + // argument to the EventChannel's listen call. + + // We use a generic approach: create one handler that reads the eventType + // from the listen arguments. + class DatabaseGenericStreamHandler + : public flutter::StreamHandler { + public: + DatabaseGenericStreamHandler(firebase::database::Query query) + : query_(query), value_listener_(nullptr), child_listener_(nullptr) {} + + ~DatabaseGenericStreamHandler() override { + if (value_listener_) { + query_.RemoveValueListener(value_listener_); + delete value_listener_; + } + if (child_listener_) { + query_.RemoveChildListener(child_listener_); + delete child_listener_; + } + } + + protected: + std::unique_ptr> + OnListenInternal( + const flutter::EncodableValue* arguments, + std::unique_ptr>&& events) + override { + events_ = std::move(events); + + // Extract eventType from arguments + std::string event_type = "value"; + if (arguments && std::holds_alternative(*arguments)) { + const auto& args_map = std::get(*arguments); + auto it = args_map.find(EncodableValue("eventType")); + if (it != args_map.end() && + std::holds_alternative(it->second)) { + event_type = std::get(it->second); + } + } + + if (event_type == "value") { + // Value listener + class VL : public firebase::database::ValueListener { + public: + VL(flutter::EventSink* events) + : events_(events) {} + void OnValueChanged(const DataSnapshot& snapshot) override { + EncodableMap event; + event[EncodableValue("eventType")] = EncodableValue("value"); + event[EncodableValue("previousChildKey")] = EncodableValue(); + event[EncodableValue("snapshot")] = EncodableValue( + FirebaseDatabasePlugin::DataSnapshotToEncodableMap(snapshot)); + events_->Success(EncodableValue(event)); + } + void OnCancelled(const Error& error, + const char* error_message) override { + events_->Error( + FirebaseDatabasePlugin::GetDatabaseErrorCode(error), + error_message ? error_message : "Unknown error"); + } + + private: + flutter::EventSink* events_; + }; + value_listener_ = new VL(events_.get()); + query_.AddValueListener(value_listener_); + } else { + // Child listener + class CL : public firebase::database::ChildListener { + public: + CL(flutter::EventSink* events, + const std::string& event_type) + : events_(events), event_type_(event_type) {} + void OnChildAdded(const DataSnapshot& snapshot, + const char* prev) override { + if (event_type_ == "childAdded") Send("childAdded", snapshot, prev); + } + void OnChildChanged(const DataSnapshot& snapshot, + const char* prev) override { + if (event_type_ == "childChanged") + Send("childChanged", snapshot, prev); + } + void OnChildMoved(const DataSnapshot& snapshot, + const char* prev) override { + if (event_type_ == "childMoved") Send("childMoved", snapshot, prev); + } + void OnChildRemoved(const DataSnapshot& snapshot) override { + if (event_type_ == "childRemoved") + Send("childRemoved", snapshot, nullptr); + } + void OnCancelled(const Error& error, + const char* error_message) override { + events_->Error( + FirebaseDatabasePlugin::GetDatabaseErrorCode(error), + error_message ? error_message : "Unknown error"); + } + + private: + void Send(const std::string& type, const DataSnapshot& snapshot, + const char* prev) { + EncodableMap event; + event[EncodableValue("eventType")] = EncodableValue(type); + event[EncodableValue("previousChildKey")] = + prev ? EncodableValue(std::string(prev)) : EncodableValue(); + event[EncodableValue("snapshot")] = EncodableValue( + FirebaseDatabasePlugin::DataSnapshotToEncodableMap(snapshot)); + events_->Success(EncodableValue(event)); + } + flutter::EventSink* events_; + std::string event_type_; + }; + child_listener_ = new CL(events_.get(), event_type); + query_.AddChildListener(child_listener_); + } + + return nullptr; + } + + std::unique_ptr> + OnCancelInternal(const flutter::EncodableValue* arguments) override { + if (value_listener_) { + query_.RemoveValueListener(value_listener_); + delete value_listener_; + value_listener_ = nullptr; + } + if (child_listener_) { + query_.RemoveChildListener(child_listener_); + delete child_listener_; + child_listener_ = nullptr; + } + if (events_) { + events_->EndOfStream(); + } + return nullptr; + } + + private: + firebase::database::Query query_; + firebase::database::ValueListener* value_listener_; + firebase::database::ChildListener* child_listener_; + std::unique_ptr> events_; + }; + + auto handler = std::make_unique(query); + std::string channelName = RegisterEventChannel( + "plugins.flutter.io/firebase_database/query/", std::move(handler)); + + result(channelName); +} + +void FirebaseDatabasePlugin::QueryKeepSynced( + const DatabasePigeonFirebaseApp& app, const QueryRequest& request, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref = database->GetReference(request.path().c_str()); + firebase::database::Query query = ApplyQueryModifiers(ref, request.modifiers()); + + bool keep_synced = request.value() ? *request.value() : false; + query.SetKeepSynchronized(keep_synced); + result(std::nullopt); +} + +void FirebaseDatabasePlugin::QueryGet( + const DatabasePigeonFirebaseApp& app, const QueryRequest& request, + std::function reply)> result) { + Database* database = GetDatabaseFromPigeon(app); + if (!database) { + result(FlutterError("unknown", "Database instance not found")); + return; + } + + DatabaseReference ref = database->GetReference(request.path().c_str()); + firebase::database::Query query = ApplyQueryModifiers(ref, request.modifiers()); + + query.GetValue().OnCompletion( + [result](const Future& future) { + if (future.error() == Error::kErrorNone) { + const DataSnapshot* snapshot = future.result(); + EncodableMap result_map; + if (snapshot) { + result_map[EncodableValue("snapshot")] = EncodableValue( + FirebaseDatabasePlugin::DataSnapshotToEncodableMap(*snapshot)); + } else { + result_map[EncodableValue("snapshot")] = EncodableValue(); + } + result(result_map); + } else { + result(FirebaseDatabasePlugin::ParseError(future)); + } + }); +} + +} // namespace firebase_database_windows diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h new file mode 100644 index 000000000000..a17f447f8991 --- /dev/null +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h @@ -0,0 +1,147 @@ +/* + * Copyright 2025, the Chromium project authors. Please see the AUTHORS file + * for details. All rights reserved. Use of this source code is governed by a + * BSD-style license that can be found in the LICENSE file. + */ + +#ifndef FLUTTER_PLUGIN_FIREBASE_DATABASE_PLUGIN_H_ +#define FLUTTER_PLUGIN_FIREBASE_DATABASE_PLUGIN_H_ + +#include +#include +#include + +#include + +#include "firebase/database.h" +#include "firebase/database/common.h" +#include "firebase/database/data_snapshot.h" +#include "messages.g.h" + +namespace firebase_database_windows { + +class FirebaseDatabasePlugin : public flutter::Plugin, + public FirebaseDatabaseHostApi { + public: + static void RegisterWithRegistrar(flutter::PluginRegistrarWindows* registrar); + + FirebaseDatabasePlugin(); + + virtual ~FirebaseDatabasePlugin(); + + // Disallow copy and assign. + FirebaseDatabasePlugin(const FirebaseDatabasePlugin&) = delete; + FirebaseDatabasePlugin& operator=(const FirebaseDatabasePlugin&) = delete; + + // Helper functions + static flutter::EncodableValue VariantToEncodableValue( + const firebase::Variant& variant); + static firebase::Variant EncodableValueToVariant( + const flutter::EncodableValue& value); + static std::string GetDatabaseErrorCode(firebase::database::Error error); + static std::string GetDatabaseErrorMessage(firebase::database::Error error); + static FlutterError ParseError(const firebase::FutureBase& future); + static flutter::EncodableMap DataSnapshotToEncodableMap( + const firebase::database::DataSnapshot& snapshot); + + // FirebaseDatabaseHostApi methods + void GoOnline( + const DatabasePigeonFirebaseApp& app, + std::function reply)> result) override; + void GoOffline( + const DatabasePigeonFirebaseApp& app, + std::function reply)> result) override; + void SetPersistenceEnabled( + const DatabasePigeonFirebaseApp& app, bool enabled, + std::function reply)> result) override; + void SetPersistenceCacheSizeBytes( + const DatabasePigeonFirebaseApp& app, int64_t cache_size, + std::function reply)> result) override; + void SetLoggingEnabled( + const DatabasePigeonFirebaseApp& app, bool enabled, + std::function reply)> result) override; + void UseDatabaseEmulator( + const DatabasePigeonFirebaseApp& app, const std::string& host, + int64_t port, + std::function reply)> result) override; + void Ref( + const DatabasePigeonFirebaseApp& app, const std::string* path, + std::function reply)> result) + override; + void RefFromURL( + const DatabasePigeonFirebaseApp& app, const std::string& url, + std::function reply)> result) + override; + void PurgeOutstandingWrites( + const DatabasePigeonFirebaseApp& app, + std::function reply)> result) override; + void DatabaseReferenceSet( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) override; + void DatabaseReferenceSetWithPriority( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) override; + void DatabaseReferenceUpdate( + const DatabasePigeonFirebaseApp& app, const UpdateRequest& request, + std::function reply)> result) override; + void DatabaseReferenceSetPriority( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) override; + void DatabaseReferenceRunTransaction( + const DatabasePigeonFirebaseApp& app, + const TransactionRequest& request, + std::function reply)> result) override; + void DatabaseReferenceGetTransactionResult( + const DatabasePigeonFirebaseApp& app, int64_t transaction_key, + std::function reply)> result) + override; + void OnDisconnectSet( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) override; + void OnDisconnectSetWithPriority( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) override; + void OnDisconnectUpdate( + const DatabasePigeonFirebaseApp& app, const UpdateRequest& request, + std::function reply)> result) override; + void OnDisconnectCancel( + const DatabasePigeonFirebaseApp& app, const std::string& path, + std::function reply)> result) override; + void QueryObserve( + const DatabasePigeonFirebaseApp& app, const QueryRequest& request, + std::function reply)> result) override; + void QueryKeepSynced( + const DatabasePigeonFirebaseApp& app, const QueryRequest& request, + std::function reply)> result) override; + void QueryGet( + const DatabasePigeonFirebaseApp& app, const QueryRequest& request, + std::function reply)> result) + override; + + static flutter::BinaryMessenger* messenger_; + static std::map< + std::string, + std::unique_ptr>> + event_channels_; + static std::map>> + stream_handlers_; + + private: + firebase::database::Database* GetDatabaseFromPigeon( + const DatabasePigeonFirebaseApp& app); + firebase::database::Query ApplyQueryModifiers( + firebase::database::Query query, + const flutter::EncodableList& modifiers); + + std::map transaction_results_; + int listener_count_ = 0; +}; + +} // namespace firebase_database_windows + +#endif /* FLUTTER_PLUGIN_FIREBASE_DATABASE_PLUGIN_H_ */ diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin_c_api.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin_c_api.cpp new file mode 100644 index 000000000000..41cf8fae1737 --- /dev/null +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin_c_api.cpp @@ -0,0 +1,16 @@ +// Copyright 2025, the Chromium project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#include "include/firebase_database/firebase_database_plugin_c_api.h" + +#include + +#include "firebase_database_plugin.h" + +void FirebaseDatabasePluginCApiRegisterWithRegistrar( + FlutterDesktopPluginRegistrarRef registrar) { + firebase_database_windows::FirebaseDatabasePlugin::RegisterWithRegistrar( + flutter::PluginRegistrarManager::GetInstance() + ->GetRegistrar(registrar)); +} diff --git a/packages/firebase_database/firebase_database/windows/include/firebase_database/firebase_database_plugin_c_api.h b/packages/firebase_database/firebase_database/windows/include/firebase_database/firebase_database_plugin_c_api.h new file mode 100644 index 000000000000..f333dc88edf3 --- /dev/null +++ b/packages/firebase_database/firebase_database/windows/include/firebase_database/firebase_database_plugin_c_api.h @@ -0,0 +1,29 @@ +/* + * Copyright 2025, the Chromium project authors. Please see the AUTHORS file + * for details. All rights reserved. Use of this source code is governed by a + * BSD-style license that can be found in the LICENSE file. + */ + +#ifndef FLUTTER_PLUGIN_FIREBASE_DATABASE_PLUGIN_C_API_H_ +#define FLUTTER_PLUGIN_FIREBASE_DATABASE_PLUGIN_C_API_H_ + +#include + +#ifdef FLUTTER_PLUGIN_IMPL +#define FLUTTER_PLUGIN_EXPORT __declspec(dllexport) +#else +#define FLUTTER_PLUGIN_EXPORT __declspec(dllimport) +#endif + +#if defined(__cplusplus) +extern "C" { +#endif + +FLUTTER_PLUGIN_EXPORT void FirebaseDatabasePluginCApiRegisterWithRegistrar( + FlutterDesktopPluginRegistrarRef registrar); + +#if defined(__cplusplus) +} // extern "C" +#endif + +#endif /* FLUTTER_PLUGIN_FIREBASE_DATABASE_PLUGIN_C_API_H_ */ diff --git a/packages/firebase_database/firebase_database/windows/messages.g.cpp b/packages/firebase_database/firebase_database/windows/messages.g.cpp new file mode 100644 index 000000000000..5fa70bf1858a --- /dev/null +++ b/packages/firebase_database/firebase_database/windows/messages.g.cpp @@ -0,0 +1,1473 @@ +// Copyright 2025, the Chromium project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. +// Autogenerated from Pigeon (v25.3.2), do not edit directly. +// See also: https://pub.dev/packages/pigeon + +#undef _HAS_EXCEPTIONS + +#include "messages.g.h" + +#include +#include +#include +#include + +#include +#include +#include + +namespace firebase_database_windows { +using flutter::BasicMessageChannel; +using flutter::CustomEncodableValue; +using flutter::EncodableList; +using flutter::EncodableMap; +using flutter::EncodableValue; + +FlutterError CreateConnectionError(const std::string channel_name) { + return FlutterError( + "channel-error", + "Unable to establish connection on channel: '" + channel_name + "'.", + EncodableValue("")); +} + +// DatabasePigeonSettings + +DatabasePigeonSettings::DatabasePigeonSettings() {} + +DatabasePigeonSettings::DatabasePigeonSettings( + const bool* persistence_enabled, + const int64_t* cache_size_bytes, + const bool* logging_enabled, + const std::string* emulator_host, + const int64_t* emulator_port) + : persistence_enabled_(persistence_enabled ? std::optional(*persistence_enabled) : std::nullopt), + cache_size_bytes_(cache_size_bytes ? std::optional(*cache_size_bytes) : std::nullopt), + logging_enabled_(logging_enabled ? std::optional(*logging_enabled) : std::nullopt), + emulator_host_(emulator_host ? std::optional(*emulator_host) : std::nullopt), + emulator_port_(emulator_port ? std::optional(*emulator_port) : std::nullopt) {} + +const bool* DatabasePigeonSettings::persistence_enabled() const { + return persistence_enabled_ ? &(*persistence_enabled_) : nullptr; +} + +void DatabasePigeonSettings::set_persistence_enabled(const bool* value_arg) { + persistence_enabled_ = value_arg ? std::optional(*value_arg) : std::nullopt; +} + +void DatabasePigeonSettings::set_persistence_enabled(bool value_arg) { + persistence_enabled_ = value_arg; +} + + +const int64_t* DatabasePigeonSettings::cache_size_bytes() const { + return cache_size_bytes_ ? &(*cache_size_bytes_) : nullptr; +} + +void DatabasePigeonSettings::set_cache_size_bytes(const int64_t* value_arg) { + cache_size_bytes_ = value_arg ? std::optional(*value_arg) : std::nullopt; +} + +void DatabasePigeonSettings::set_cache_size_bytes(int64_t value_arg) { + cache_size_bytes_ = value_arg; +} + + +const bool* DatabasePigeonSettings::logging_enabled() const { + return logging_enabled_ ? &(*logging_enabled_) : nullptr; +} + +void DatabasePigeonSettings::set_logging_enabled(const bool* value_arg) { + logging_enabled_ = value_arg ? std::optional(*value_arg) : std::nullopt; +} + +void DatabasePigeonSettings::set_logging_enabled(bool value_arg) { + logging_enabled_ = value_arg; +} + + +const std::string* DatabasePigeonSettings::emulator_host() const { + return emulator_host_ ? &(*emulator_host_) : nullptr; +} + +void DatabasePigeonSettings::set_emulator_host(const std::string_view* value_arg) { + emulator_host_ = value_arg ? std::optional(*value_arg) : std::nullopt; +} + +void DatabasePigeonSettings::set_emulator_host(std::string_view value_arg) { + emulator_host_ = value_arg; +} + + +const int64_t* DatabasePigeonSettings::emulator_port() const { + return emulator_port_ ? &(*emulator_port_) : nullptr; +} + +void DatabasePigeonSettings::set_emulator_port(const int64_t* value_arg) { + emulator_port_ = value_arg ? std::optional(*value_arg) : std::nullopt; +} + +void DatabasePigeonSettings::set_emulator_port(int64_t value_arg) { + emulator_port_ = value_arg; +} + + +EncodableList DatabasePigeonSettings::ToEncodableList() const { + EncodableList list; + list.reserve(5); + list.push_back(persistence_enabled_ ? EncodableValue(*persistence_enabled_) : EncodableValue()); + list.push_back(cache_size_bytes_ ? EncodableValue(*cache_size_bytes_) : EncodableValue()); + list.push_back(logging_enabled_ ? EncodableValue(*logging_enabled_) : EncodableValue()); + list.push_back(emulator_host_ ? EncodableValue(*emulator_host_) : EncodableValue()); + list.push_back(emulator_port_ ? EncodableValue(*emulator_port_) : EncodableValue()); + return list; +} + +DatabasePigeonSettings DatabasePigeonSettings::FromEncodableList(const EncodableList& list) { + DatabasePigeonSettings decoded; + auto& encodable_persistence_enabled = list[0]; + if (!encodable_persistence_enabled.IsNull()) { + decoded.set_persistence_enabled(std::get(encodable_persistence_enabled)); + } + auto& encodable_cache_size_bytes = list[1]; + if (!encodable_cache_size_bytes.IsNull()) { + decoded.set_cache_size_bytes(std::get(encodable_cache_size_bytes)); + } + auto& encodable_logging_enabled = list[2]; + if (!encodable_logging_enabled.IsNull()) { + decoded.set_logging_enabled(std::get(encodable_logging_enabled)); + } + auto& encodable_emulator_host = list[3]; + if (!encodable_emulator_host.IsNull()) { + decoded.set_emulator_host(std::get(encodable_emulator_host)); + } + auto& encodable_emulator_port = list[4]; + if (!encodable_emulator_port.IsNull()) { + decoded.set_emulator_port(std::get(encodable_emulator_port)); + } + return decoded; +} + +// DatabasePigeonFirebaseApp + +DatabasePigeonFirebaseApp::DatabasePigeonFirebaseApp( + const std::string& app_name, + const DatabasePigeonSettings& settings) + : app_name_(app_name), + settings_(std::make_unique(settings)) {} + +DatabasePigeonFirebaseApp::DatabasePigeonFirebaseApp( + const std::string& app_name, + const std::string* database_u_r_l, + const DatabasePigeonSettings& settings) + : app_name_(app_name), + database_u_r_l_(database_u_r_l ? std::optional(*database_u_r_l) : std::nullopt), + settings_(std::make_unique(settings)) {} + +DatabasePigeonFirebaseApp::DatabasePigeonFirebaseApp(const DatabasePigeonFirebaseApp& other) + : app_name_(other.app_name_), + database_u_r_l_(other.database_u_r_l_ ? std::optional(*other.database_u_r_l_) : std::nullopt), + settings_(std::make_unique(*other.settings_)) {} + +DatabasePigeonFirebaseApp& DatabasePigeonFirebaseApp::operator=(const DatabasePigeonFirebaseApp& other) { + app_name_ = other.app_name_; + database_u_r_l_ = other.database_u_r_l_; + settings_ = std::make_unique(*other.settings_); + return *this; +} + +const std::string& DatabasePigeonFirebaseApp::app_name() const { + return app_name_; +} + +void DatabasePigeonFirebaseApp::set_app_name(std::string_view value_arg) { + app_name_ = value_arg; +} + + +const std::string* DatabasePigeonFirebaseApp::database_u_r_l() const { + return database_u_r_l_ ? &(*database_u_r_l_) : nullptr; +} + +void DatabasePigeonFirebaseApp::set_database_u_r_l(const std::string_view* value_arg) { + database_u_r_l_ = value_arg ? std::optional(*value_arg) : std::nullopt; +} + +void DatabasePigeonFirebaseApp::set_database_u_r_l(std::string_view value_arg) { + database_u_r_l_ = value_arg; +} + + +const DatabasePigeonSettings& DatabasePigeonFirebaseApp::settings() const { + return *settings_; +} + +void DatabasePigeonFirebaseApp::set_settings(const DatabasePigeonSettings& value_arg) { + settings_ = std::make_unique(value_arg); +} + + +EncodableList DatabasePigeonFirebaseApp::ToEncodableList() const { + EncodableList list; + list.reserve(3); + list.push_back(EncodableValue(app_name_)); + list.push_back(database_u_r_l_ ? EncodableValue(*database_u_r_l_) : EncodableValue()); + list.push_back(CustomEncodableValue(*settings_)); + return list; +} + +DatabasePigeonFirebaseApp DatabasePigeonFirebaseApp::FromEncodableList(const EncodableList& list) { + DatabasePigeonFirebaseApp decoded( + std::get(list[0]), + std::any_cast(std::get(list[2]))); + auto& encodable_database_u_r_l = list[1]; + if (!encodable_database_u_r_l.IsNull()) { + decoded.set_database_u_r_l(std::get(encodable_database_u_r_l)); + } + return decoded; +} + +// DatabaseReferencePlatform + +DatabaseReferencePlatform::DatabaseReferencePlatform(const std::string& path) + : path_(path) {} + +const std::string& DatabaseReferencePlatform::path() const { + return path_; +} + +void DatabaseReferencePlatform::set_path(std::string_view value_arg) { + path_ = value_arg; +} + + +EncodableList DatabaseReferencePlatform::ToEncodableList() const { + EncodableList list; + list.reserve(1); + list.push_back(EncodableValue(path_)); + return list; +} + +DatabaseReferencePlatform DatabaseReferencePlatform::FromEncodableList(const EncodableList& list) { + DatabaseReferencePlatform decoded( + std::get(list[0])); + return decoded; +} + +// DatabaseReferenceRequest + +DatabaseReferenceRequest::DatabaseReferenceRequest(const std::string& path) + : path_(path) {} + +DatabaseReferenceRequest::DatabaseReferenceRequest( + const std::string& path, + const EncodableValue* value, + const EncodableValue* priority) + : path_(path), + value_(value ? std::optional(*value) : std::nullopt), + priority_(priority ? std::optional(*priority) : std::nullopt) {} + +const std::string& DatabaseReferenceRequest::path() const { + return path_; +} + +void DatabaseReferenceRequest::set_path(std::string_view value_arg) { + path_ = value_arg; +} + + +const EncodableValue* DatabaseReferenceRequest::value() const { + return value_ ? &(*value_) : nullptr; +} + +void DatabaseReferenceRequest::set_value(const EncodableValue* value_arg) { + value_ = value_arg ? std::optional(*value_arg) : std::nullopt; +} + +void DatabaseReferenceRequest::set_value(const EncodableValue& value_arg) { + value_ = value_arg; +} + + +const EncodableValue* DatabaseReferenceRequest::priority() const { + return priority_ ? &(*priority_) : nullptr; +} + +void DatabaseReferenceRequest::set_priority(const EncodableValue* value_arg) { + priority_ = value_arg ? std::optional(*value_arg) : std::nullopt; +} + +void DatabaseReferenceRequest::set_priority(const EncodableValue& value_arg) { + priority_ = value_arg; +} + + +EncodableList DatabaseReferenceRequest::ToEncodableList() const { + EncodableList list; + list.reserve(3); + list.push_back(EncodableValue(path_)); + list.push_back(value_ ? *value_ : EncodableValue()); + list.push_back(priority_ ? *priority_ : EncodableValue()); + return list; +} + +DatabaseReferenceRequest DatabaseReferenceRequest::FromEncodableList(const EncodableList& list) { + DatabaseReferenceRequest decoded( + std::get(list[0])); + auto& encodable_value = list[1]; + if (!encodable_value.IsNull()) { + decoded.set_value(encodable_value); + } + auto& encodable_priority = list[2]; + if (!encodable_priority.IsNull()) { + decoded.set_priority(encodable_priority); + } + return decoded; +} + +// UpdateRequest + +UpdateRequest::UpdateRequest( + const std::string& path, + const EncodableMap& value) + : path_(path), + value_(value) {} + +const std::string& UpdateRequest::path() const { + return path_; +} + +void UpdateRequest::set_path(std::string_view value_arg) { + path_ = value_arg; +} + + +const EncodableMap& UpdateRequest::value() const { + return value_; +} + +void UpdateRequest::set_value(const EncodableMap& value_arg) { + value_ = value_arg; +} + + +EncodableList UpdateRequest::ToEncodableList() const { + EncodableList list; + list.reserve(2); + list.push_back(EncodableValue(path_)); + list.push_back(EncodableValue(value_)); + return list; +} + +UpdateRequest UpdateRequest::FromEncodableList(const EncodableList& list) { + UpdateRequest decoded( + std::get(list[0]), + std::get(list[1])); + return decoded; +} + +// TransactionRequest + +TransactionRequest::TransactionRequest( + const std::string& path, + int64_t transaction_key, + bool apply_locally) + : path_(path), + transaction_key_(transaction_key), + apply_locally_(apply_locally) {} + +const std::string& TransactionRequest::path() const { + return path_; +} + +void TransactionRequest::set_path(std::string_view value_arg) { + path_ = value_arg; +} + + +int64_t TransactionRequest::transaction_key() const { + return transaction_key_; +} + +void TransactionRequest::set_transaction_key(int64_t value_arg) { + transaction_key_ = value_arg; +} + + +bool TransactionRequest::apply_locally() const { + return apply_locally_; +} + +void TransactionRequest::set_apply_locally(bool value_arg) { + apply_locally_ = value_arg; +} + + +EncodableList TransactionRequest::ToEncodableList() const { + EncodableList list; + list.reserve(3); + list.push_back(EncodableValue(path_)); + list.push_back(EncodableValue(transaction_key_)); + list.push_back(EncodableValue(apply_locally_)); + return list; +} + +TransactionRequest TransactionRequest::FromEncodableList(const EncodableList& list) { + TransactionRequest decoded( + std::get(list[0]), + std::get(list[1]), + std::get(list[2])); + return decoded; +} + +// QueryRequest + +QueryRequest::QueryRequest( + const std::string& path, + const EncodableList& modifiers) + : path_(path), + modifiers_(modifiers) {} + +QueryRequest::QueryRequest( + const std::string& path, + const EncodableList& modifiers, + const bool* value) + : path_(path), + modifiers_(modifiers), + value_(value ? std::optional(*value) : std::nullopt) {} + +const std::string& QueryRequest::path() const { + return path_; +} + +void QueryRequest::set_path(std::string_view value_arg) { + path_ = value_arg; +} + + +const EncodableList& QueryRequest::modifiers() const { + return modifiers_; +} + +void QueryRequest::set_modifiers(const EncodableList& value_arg) { + modifiers_ = value_arg; +} + + +const bool* QueryRequest::value() const { + return value_ ? &(*value_) : nullptr; +} + +void QueryRequest::set_value(const bool* value_arg) { + value_ = value_arg ? std::optional(*value_arg) : std::nullopt; +} + +void QueryRequest::set_value(bool value_arg) { + value_ = value_arg; +} + + +EncodableList QueryRequest::ToEncodableList() const { + EncodableList list; + list.reserve(3); + list.push_back(EncodableValue(path_)); + list.push_back(EncodableValue(modifiers_)); + list.push_back(value_ ? EncodableValue(*value_) : EncodableValue()); + return list; +} + +QueryRequest QueryRequest::FromEncodableList(const EncodableList& list) { + QueryRequest decoded( + std::get(list[0]), + std::get(list[1])); + auto& encodable_value = list[2]; + if (!encodable_value.IsNull()) { + decoded.set_value(std::get(encodable_value)); + } + return decoded; +} + +// TransactionHandlerResult + +TransactionHandlerResult::TransactionHandlerResult( + bool aborted, + bool exception) + : aborted_(aborted), + exception_(exception) {} + +TransactionHandlerResult::TransactionHandlerResult( + const EncodableValue* value, + bool aborted, + bool exception) + : value_(value ? std::optional(*value) : std::nullopt), + aborted_(aborted), + exception_(exception) {} + +const EncodableValue* TransactionHandlerResult::value() const { + return value_ ? &(*value_) : nullptr; +} + +void TransactionHandlerResult::set_value(const EncodableValue* value_arg) { + value_ = value_arg ? std::optional(*value_arg) : std::nullopt; +} + +void TransactionHandlerResult::set_value(const EncodableValue& value_arg) { + value_ = value_arg; +} + + +bool TransactionHandlerResult::aborted() const { + return aborted_; +} + +void TransactionHandlerResult::set_aborted(bool value_arg) { + aborted_ = value_arg; +} + + +bool TransactionHandlerResult::exception() const { + return exception_; +} + +void TransactionHandlerResult::set_exception(bool value_arg) { + exception_ = value_arg; +} + + +EncodableList TransactionHandlerResult::ToEncodableList() const { + EncodableList list; + list.reserve(3); + list.push_back(value_ ? *value_ : EncodableValue()); + list.push_back(EncodableValue(aborted_)); + list.push_back(EncodableValue(exception_)); + return list; +} + +TransactionHandlerResult TransactionHandlerResult::FromEncodableList(const EncodableList& list) { + TransactionHandlerResult decoded( + std::get(list[1]), + std::get(list[2])); + auto& encodable_value = list[0]; + if (!encodable_value.IsNull()) { + decoded.set_value(encodable_value); + } + return decoded; +} + + +PigeonInternalCodecSerializer::PigeonInternalCodecSerializer() {} + +EncodableValue PigeonInternalCodecSerializer::ReadValueOfType( + uint8_t type, + flutter::ByteStreamReader* stream) const { + switch (type) { + case 129: { + return CustomEncodableValue(DatabasePigeonSettings::FromEncodableList(std::get(ReadValue(stream)))); + } + case 130: { + return CustomEncodableValue(DatabasePigeonFirebaseApp::FromEncodableList(std::get(ReadValue(stream)))); + } + case 131: { + return CustomEncodableValue(DatabaseReferencePlatform::FromEncodableList(std::get(ReadValue(stream)))); + } + case 132: { + return CustomEncodableValue(DatabaseReferenceRequest::FromEncodableList(std::get(ReadValue(stream)))); + } + case 133: { + return CustomEncodableValue(UpdateRequest::FromEncodableList(std::get(ReadValue(stream)))); + } + case 134: { + return CustomEncodableValue(TransactionRequest::FromEncodableList(std::get(ReadValue(stream)))); + } + case 135: { + return CustomEncodableValue(QueryRequest::FromEncodableList(std::get(ReadValue(stream)))); + } + case 136: { + return CustomEncodableValue(TransactionHandlerResult::FromEncodableList(std::get(ReadValue(stream)))); + } + default: + return flutter::StandardCodecSerializer::ReadValueOfType(type, stream); + } +} + +void PigeonInternalCodecSerializer::WriteValue( + const EncodableValue& value, + flutter::ByteStreamWriter* stream) const { + if (const CustomEncodableValue* custom_value = std::get_if(&value)) { + if (custom_value->type() == typeid(DatabasePigeonSettings)) { + stream->WriteByte(129); + WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + return; + } + if (custom_value->type() == typeid(DatabasePigeonFirebaseApp)) { + stream->WriteByte(130); + WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + return; + } + if (custom_value->type() == typeid(DatabaseReferencePlatform)) { + stream->WriteByte(131); + WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + return; + } + if (custom_value->type() == typeid(DatabaseReferenceRequest)) { + stream->WriteByte(132); + WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + return; + } + if (custom_value->type() == typeid(UpdateRequest)) { + stream->WriteByte(133); + WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + return; + } + if (custom_value->type() == typeid(TransactionRequest)) { + stream->WriteByte(134); + WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + return; + } + if (custom_value->type() == typeid(QueryRequest)) { + stream->WriteByte(135); + WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + return; + } + if (custom_value->type() == typeid(TransactionHandlerResult)) { + stream->WriteByte(136); + WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + return; + } + } + flutter::StandardCodecSerializer::WriteValue(value, stream); +} + +/// The codec used by FirebaseDatabaseHostApi. +const flutter::StandardMessageCodec& FirebaseDatabaseHostApi::GetCodec() { + return flutter::StandardMessageCodec::GetInstance(&PigeonInternalCodecSerializer::GetInstance()); +} + +// Sets up an instance of `FirebaseDatabaseHostApi` to handle messages through the `binary_messenger`. +void FirebaseDatabaseHostApi::SetUp( + flutter::BinaryMessenger* binary_messenger, + FirebaseDatabaseHostApi* api) { + FirebaseDatabaseHostApi::SetUp(binary_messenger, api, ""); +} + +void FirebaseDatabaseHostApi::SetUp( + flutter::BinaryMessenger* binary_messenger, + FirebaseDatabaseHostApi* api, + const std::string& message_channel_suffix) { + const std::string prepended_suffix = message_channel_suffix.length() > 0 ? std::string(".") + message_channel_suffix : ""; + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + api->GoOnline(app_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + api->GoOffline(app_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_enabled_arg = args.at(1); + if (encodable_enabled_arg.IsNull()) { + reply(WrapError("enabled_arg unexpectedly null.")); + return; + } + const auto& enabled_arg = std::get(encodable_enabled_arg); + api->SetPersistenceEnabled(app_arg, enabled_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_cache_size_arg = args.at(1); + if (encodable_cache_size_arg.IsNull()) { + reply(WrapError("cache_size_arg unexpectedly null.")); + return; + } + const int64_t cache_size_arg = encodable_cache_size_arg.LongValue(); + api->SetPersistenceCacheSizeBytes(app_arg, cache_size_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_enabled_arg = args.at(1); + if (encodable_enabled_arg.IsNull()) { + reply(WrapError("enabled_arg unexpectedly null.")); + return; + } + const auto& enabled_arg = std::get(encodable_enabled_arg); + api->SetLoggingEnabled(app_arg, enabled_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_host_arg = args.at(1); + if (encodable_host_arg.IsNull()) { + reply(WrapError("host_arg unexpectedly null.")); + return; + } + const auto& host_arg = std::get(encodable_host_arg); + const auto& encodable_port_arg = args.at(2); + if (encodable_port_arg.IsNull()) { + reply(WrapError("port_arg unexpectedly null.")); + return; + } + const int64_t port_arg = encodable_port_arg.LongValue(); + api->UseDatabaseEmulator(app_arg, host_arg, port_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_path_arg = args.at(1); + const auto* path_arg = std::get_if(&encodable_path_arg); + api->Ref(app_arg, path_arg, [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back(CustomEncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_url_arg = args.at(1); + if (encodable_url_arg.IsNull()) { + reply(WrapError("url_arg unexpectedly null.")); + return; + } + const auto& url_arg = std::get(encodable_url_arg); + api->RefFromURL(app_arg, url_arg, [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back(CustomEncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + api->PurgeOutstandingWrites(app_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); + api->DatabaseReferenceSet(app_arg, request_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); + api->DatabaseReferenceSetWithPriority(app_arg, request_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); + api->DatabaseReferenceUpdate(app_arg, request_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); + api->DatabaseReferenceSetPriority(app_arg, request_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); + api->DatabaseReferenceRunTransaction(app_arg, request_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_transaction_key_arg = args.at(1); + if (encodable_transaction_key_arg.IsNull()) { + reply(WrapError("transaction_key_arg unexpectedly null.")); + return; + } + const int64_t transaction_key_arg = encodable_transaction_key_arg.LongValue(); + api->DatabaseReferenceGetTransactionResult(app_arg, transaction_key_arg, [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); + api->OnDisconnectSet(app_arg, request_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); + api->OnDisconnectSetWithPriority(app_arg, request_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); + api->OnDisconnectUpdate(app_arg, request_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_path_arg = args.at(1); + if (encodable_path_arg.IsNull()) { + reply(WrapError("path_arg unexpectedly null.")); + return; + } + const auto& path_arg = std::get(encodable_path_arg); + api->OnDisconnectCancel(app_arg, path_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); + api->QueryObserve(app_arg, request_arg, [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); + api->QueryKeepSynced(app_arg, request_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } + { + BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet" + prepended_suffix, &GetCodec()); + if (api != nullptr) { + channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); + api->QueryGet(app_arg, request_arg, [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); + } + }); + } else { + channel.SetMessageHandler(nullptr); + } + } +} + +EncodableValue FirebaseDatabaseHostApi::WrapError(std::string_view error_message) { + return EncodableValue(EncodableList{ + EncodableValue(std::string(error_message)), + EncodableValue("Error"), + EncodableValue() + }); +} + +EncodableValue FirebaseDatabaseHostApi::WrapError(const FlutterError& error) { + return EncodableValue(EncodableList{ + EncodableValue(error.code()), + EncodableValue(error.message()), + error.details() + }); +} + +// Generated class from Pigeon that represents Flutter messages that can be called from C++. +FirebaseDatabaseFlutterApi::FirebaseDatabaseFlutterApi(flutter::BinaryMessenger* binary_messenger) + : binary_messenger_(binary_messenger), + message_channel_suffix_("") {} + +FirebaseDatabaseFlutterApi::FirebaseDatabaseFlutterApi( + flutter::BinaryMessenger* binary_messenger, + const std::string& message_channel_suffix) + : binary_messenger_(binary_messenger), + message_channel_suffix_(message_channel_suffix.length() > 0 ? std::string(".") + message_channel_suffix : "") {} + +const flutter::StandardMessageCodec& FirebaseDatabaseFlutterApi::GetCodec() { + return flutter::StandardMessageCodec::GetInstance(&PigeonInternalCodecSerializer::GetInstance()); +} + +void FirebaseDatabaseFlutterApi::CallTransactionHandler( + int64_t transaction_key_arg, + const EncodableValue* snapshot_value_arg, + std::function&& on_success, + std::function&& on_error) { + const std::string channel_name = "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler" + message_channel_suffix_; + BasicMessageChannel<> channel(binary_messenger_, channel_name, &GetCodec()); + EncodableValue encoded_api_arguments = EncodableValue(EncodableList{ + EncodableValue(transaction_key_arg), + snapshot_value_arg ? *snapshot_value_arg : EncodableValue(), + }); + channel.Send(encoded_api_arguments, [channel_name, on_success = std::move(on_success), on_error = std::move(on_error)](const uint8_t* reply, size_t reply_size) { + std::unique_ptr response = GetCodec().DecodeMessage(reply, reply_size); + const auto& encodable_return_value = *response; + const auto* list_return_value = std::get_if(&encodable_return_value); + if (list_return_value) { + if (list_return_value->size() > 1) { + on_error(FlutterError(std::get(list_return_value->at(0)), std::get(list_return_value->at(1)), list_return_value->at(2))); + } else { + const auto& return_value = std::any_cast(std::get(list_return_value->at(0))); + on_success(return_value); + } + } else { + on_error(CreateConnectionError(channel_name)); + } + }); +} + +} // namespace firebase_database_windows diff --git a/packages/firebase_database/firebase_database/windows/messages.g.h b/packages/firebase_database/firebase_database/windows/messages.g.h new file mode 100644 index 000000000000..6089fec54c1a --- /dev/null +++ b/packages/firebase_database/firebase_database/windows/messages.g.h @@ -0,0 +1,479 @@ +// Copyright 2025, the Chromium project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. +// Autogenerated from Pigeon (v25.3.2), do not edit directly. +// See also: https://pub.dev/packages/pigeon + +#ifndef PIGEON_MESSAGES_G_H_ +#define PIGEON_MESSAGES_G_H_ +#include +#include +#include +#include + +#include +#include +#include + +namespace firebase_database_windows { + + +// Generated class from Pigeon. + +class FlutterError { + public: + explicit FlutterError(const std::string& code) + : code_(code) {} + explicit FlutterError(const std::string& code, const std::string& message) + : code_(code), message_(message) {} + explicit FlutterError(const std::string& code, const std::string& message, const flutter::EncodableValue& details) + : code_(code), message_(message), details_(details) {} + + const std::string& code() const { return code_; } + const std::string& message() const { return message_; } + const flutter::EncodableValue& details() const { return details_; } + + private: + std::string code_; + std::string message_; + flutter::EncodableValue details_; +}; + +template class ErrorOr { + public: + ErrorOr(const T& rhs) : v_(rhs) {} + ErrorOr(const T&& rhs) : v_(std::move(rhs)) {} + ErrorOr(const FlutterError& rhs) : v_(rhs) {} + ErrorOr(const FlutterError&& rhs) : v_(std::move(rhs)) {} + + bool has_error() const { return std::holds_alternative(v_); } + const T& value() const { return std::get(v_); }; + const FlutterError& error() const { return std::get(v_); }; + + private: + friend class FirebaseDatabaseHostApi; + friend class FirebaseDatabaseFlutterApi; + ErrorOr() = default; + T TakeValue() && { return std::get(std::move(v_)); } + + std::variant v_; +}; + + + +// Generated class from Pigeon that represents data sent in messages. +class DatabasePigeonSettings { + public: + // Constructs an object setting all non-nullable fields. + DatabasePigeonSettings(); + + // Constructs an object setting all fields. + explicit DatabasePigeonSettings( + const bool* persistence_enabled, + const int64_t* cache_size_bytes, + const bool* logging_enabled, + const std::string* emulator_host, + const int64_t* emulator_port); + + const bool* persistence_enabled() const; + void set_persistence_enabled(const bool* value_arg); + void set_persistence_enabled(bool value_arg); + + const int64_t* cache_size_bytes() const; + void set_cache_size_bytes(const int64_t* value_arg); + void set_cache_size_bytes(int64_t value_arg); + + const bool* logging_enabled() const; + void set_logging_enabled(const bool* value_arg); + void set_logging_enabled(bool value_arg); + + const std::string* emulator_host() const; + void set_emulator_host(const std::string_view* value_arg); + void set_emulator_host(std::string_view value_arg); + + const int64_t* emulator_port() const; + void set_emulator_port(const int64_t* value_arg); + void set_emulator_port(int64_t value_arg); + + private: + static DatabasePigeonSettings FromEncodableList(const flutter::EncodableList& list); + flutter::EncodableList ToEncodableList() const; + friend class DatabasePigeonFirebaseApp; + friend class FirebaseDatabaseHostApi; + friend class FirebaseDatabaseFlutterApi; + friend class PigeonInternalCodecSerializer; + std::optional persistence_enabled_; + std::optional cache_size_bytes_; + std::optional logging_enabled_; + std::optional emulator_host_; + std::optional emulator_port_; +}; + + +// Generated class from Pigeon that represents data sent in messages. +class DatabasePigeonFirebaseApp { + public: + // Constructs an object setting all non-nullable fields. + explicit DatabasePigeonFirebaseApp( + const std::string& app_name, + const DatabasePigeonSettings& settings); + + // Constructs an object setting all fields. + explicit DatabasePigeonFirebaseApp( + const std::string& app_name, + const std::string* database_u_r_l, + const DatabasePigeonSettings& settings); + + ~DatabasePigeonFirebaseApp() = default; + DatabasePigeonFirebaseApp(const DatabasePigeonFirebaseApp& other); + DatabasePigeonFirebaseApp& operator=(const DatabasePigeonFirebaseApp& other); + DatabasePigeonFirebaseApp(DatabasePigeonFirebaseApp&& other) = default; + DatabasePigeonFirebaseApp& operator=(DatabasePigeonFirebaseApp&& other) noexcept = default; + const std::string& app_name() const; + void set_app_name(std::string_view value_arg); + + const std::string* database_u_r_l() const; + void set_database_u_r_l(const std::string_view* value_arg); + void set_database_u_r_l(std::string_view value_arg); + + const DatabasePigeonSettings& settings() const; + void set_settings(const DatabasePigeonSettings& value_arg); + + private: + static DatabasePigeonFirebaseApp FromEncodableList(const flutter::EncodableList& list); + flutter::EncodableList ToEncodableList() const; + friend class FirebaseDatabaseHostApi; + friend class FirebaseDatabaseFlutterApi; + friend class PigeonInternalCodecSerializer; + std::string app_name_; + std::optional database_u_r_l_; + std::unique_ptr settings_; +}; + + +// Generated class from Pigeon that represents data sent in messages. +class DatabaseReferencePlatform { + public: + // Constructs an object setting all fields. + explicit DatabaseReferencePlatform(const std::string& path); + + const std::string& path() const; + void set_path(std::string_view value_arg); + + private: + static DatabaseReferencePlatform FromEncodableList(const flutter::EncodableList& list); + flutter::EncodableList ToEncodableList() const; + friend class FirebaseDatabaseHostApi; + friend class FirebaseDatabaseFlutterApi; + friend class PigeonInternalCodecSerializer; + std::string path_; +}; + + +// Generated class from Pigeon that represents data sent in messages. +class DatabaseReferenceRequest { + public: + // Constructs an object setting all non-nullable fields. + explicit DatabaseReferenceRequest(const std::string& path); + + // Constructs an object setting all fields. + explicit DatabaseReferenceRequest( + const std::string& path, + const flutter::EncodableValue* value, + const flutter::EncodableValue* priority); + + const std::string& path() const; + void set_path(std::string_view value_arg); + + const flutter::EncodableValue* value() const; + void set_value(const flutter::EncodableValue* value_arg); + void set_value(const flutter::EncodableValue& value_arg); + + const flutter::EncodableValue* priority() const; + void set_priority(const flutter::EncodableValue* value_arg); + void set_priority(const flutter::EncodableValue& value_arg); + + private: + static DatabaseReferenceRequest FromEncodableList(const flutter::EncodableList& list); + flutter::EncodableList ToEncodableList() const; + friend class FirebaseDatabaseHostApi; + friend class FirebaseDatabaseFlutterApi; + friend class PigeonInternalCodecSerializer; + std::string path_; + std::optional value_; + std::optional priority_; +}; + + +// Generated class from Pigeon that represents data sent in messages. +class UpdateRequest { + public: + // Constructs an object setting all fields. + explicit UpdateRequest( + const std::string& path, + const flutter::EncodableMap& value); + + const std::string& path() const; + void set_path(std::string_view value_arg); + + const flutter::EncodableMap& value() const; + void set_value(const flutter::EncodableMap& value_arg); + + private: + static UpdateRequest FromEncodableList(const flutter::EncodableList& list); + flutter::EncodableList ToEncodableList() const; + friend class FirebaseDatabaseHostApi; + friend class FirebaseDatabaseFlutterApi; + friend class PigeonInternalCodecSerializer; + std::string path_; + flutter::EncodableMap value_; +}; + + +// Generated class from Pigeon that represents data sent in messages. +class TransactionRequest { + public: + // Constructs an object setting all fields. + explicit TransactionRequest( + const std::string& path, + int64_t transaction_key, + bool apply_locally); + + const std::string& path() const; + void set_path(std::string_view value_arg); + + int64_t transaction_key() const; + void set_transaction_key(int64_t value_arg); + + bool apply_locally() const; + void set_apply_locally(bool value_arg); + + private: + static TransactionRequest FromEncodableList(const flutter::EncodableList& list); + flutter::EncodableList ToEncodableList() const; + friend class FirebaseDatabaseHostApi; + friend class FirebaseDatabaseFlutterApi; + friend class PigeonInternalCodecSerializer; + std::string path_; + int64_t transaction_key_; + bool apply_locally_; +}; + + +// Generated class from Pigeon that represents data sent in messages. +class QueryRequest { + public: + // Constructs an object setting all non-nullable fields. + explicit QueryRequest( + const std::string& path, + const flutter::EncodableList& modifiers); + + // Constructs an object setting all fields. + explicit QueryRequest( + const std::string& path, + const flutter::EncodableList& modifiers, + const bool* value); + + const std::string& path() const; + void set_path(std::string_view value_arg); + + const flutter::EncodableList& modifiers() const; + void set_modifiers(const flutter::EncodableList& value_arg); + + const bool* value() const; + void set_value(const bool* value_arg); + void set_value(bool value_arg); + + private: + static QueryRequest FromEncodableList(const flutter::EncodableList& list); + flutter::EncodableList ToEncodableList() const; + friend class FirebaseDatabaseHostApi; + friend class FirebaseDatabaseFlutterApi; + friend class PigeonInternalCodecSerializer; + std::string path_; + flutter::EncodableList modifiers_; + std::optional value_; +}; + + +// Generated class from Pigeon that represents data sent in messages. +class TransactionHandlerResult { + public: + // Constructs an object setting all non-nullable fields. + explicit TransactionHandlerResult( + bool aborted, + bool exception); + + // Constructs an object setting all fields. + explicit TransactionHandlerResult( + const flutter::EncodableValue* value, + bool aborted, + bool exception); + + const flutter::EncodableValue* value() const; + void set_value(const flutter::EncodableValue* value_arg); + void set_value(const flutter::EncodableValue& value_arg); + + bool aborted() const; + void set_aborted(bool value_arg); + + bool exception() const; + void set_exception(bool value_arg); + + private: + static TransactionHandlerResult FromEncodableList(const flutter::EncodableList& list); + flutter::EncodableList ToEncodableList() const; + friend class FirebaseDatabaseHostApi; + friend class FirebaseDatabaseFlutterApi; + friend class PigeonInternalCodecSerializer; + std::optional value_; + bool aborted_; + bool exception_; +}; + + +class PigeonInternalCodecSerializer : public flutter::StandardCodecSerializer { + public: + PigeonInternalCodecSerializer(); + inline static PigeonInternalCodecSerializer& GetInstance() { + static PigeonInternalCodecSerializer sInstance; + return sInstance; + } + + void WriteValue( + const flutter::EncodableValue& value, + flutter::ByteStreamWriter* stream) const override; + protected: + flutter::EncodableValue ReadValueOfType( + uint8_t type, + flutter::ByteStreamReader* stream) const override; +}; + +// Generated interface from Pigeon that represents a handler of messages from Flutter. +class FirebaseDatabaseHostApi { + public: + FirebaseDatabaseHostApi(const FirebaseDatabaseHostApi&) = delete; + FirebaseDatabaseHostApi& operator=(const FirebaseDatabaseHostApi&) = delete; + virtual ~FirebaseDatabaseHostApi() {} + virtual void GoOnline( + const DatabasePigeonFirebaseApp& app, + std::function reply)> result) = 0; + virtual void GoOffline( + const DatabasePigeonFirebaseApp& app, + std::function reply)> result) = 0; + virtual void SetPersistenceEnabled( + const DatabasePigeonFirebaseApp& app, + bool enabled, + std::function reply)> result) = 0; + virtual void SetPersistenceCacheSizeBytes( + const DatabasePigeonFirebaseApp& app, + int64_t cache_size, + std::function reply)> result) = 0; + virtual void SetLoggingEnabled( + const DatabasePigeonFirebaseApp& app, + bool enabled, + std::function reply)> result) = 0; + virtual void UseDatabaseEmulator( + const DatabasePigeonFirebaseApp& app, + const std::string& host, + int64_t port, + std::function reply)> result) = 0; + virtual void Ref( + const DatabasePigeonFirebaseApp& app, + const std::string* path, + std::function reply)> result) = 0; + virtual void RefFromURL( + const DatabasePigeonFirebaseApp& app, + const std::string& url, + std::function reply)> result) = 0; + virtual void PurgeOutstandingWrites( + const DatabasePigeonFirebaseApp& app, + std::function reply)> result) = 0; + virtual void DatabaseReferenceSet( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) = 0; + virtual void DatabaseReferenceSetWithPriority( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) = 0; + virtual void DatabaseReferenceUpdate( + const DatabasePigeonFirebaseApp& app, + const UpdateRequest& request, + std::function reply)> result) = 0; + virtual void DatabaseReferenceSetPriority( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) = 0; + virtual void DatabaseReferenceRunTransaction( + const DatabasePigeonFirebaseApp& app, + const TransactionRequest& request, + std::function reply)> result) = 0; + virtual void DatabaseReferenceGetTransactionResult( + const DatabasePigeonFirebaseApp& app, + int64_t transaction_key, + std::function reply)> result) = 0; + virtual void OnDisconnectSet( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) = 0; + virtual void OnDisconnectSetWithPriority( + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) = 0; + virtual void OnDisconnectUpdate( + const DatabasePigeonFirebaseApp& app, + const UpdateRequest& request, + std::function reply)> result) = 0; + virtual void OnDisconnectCancel( + const DatabasePigeonFirebaseApp& app, + const std::string& path, + std::function reply)> result) = 0; + virtual void QueryObserve( + const DatabasePigeonFirebaseApp& app, + const QueryRequest& request, + std::function reply)> result) = 0; + virtual void QueryKeepSynced( + const DatabasePigeonFirebaseApp& app, + const QueryRequest& request, + std::function reply)> result) = 0; + virtual void QueryGet( + const DatabasePigeonFirebaseApp& app, + const QueryRequest& request, + std::function reply)> result) = 0; + + // The codec used by FirebaseDatabaseHostApi. + static const flutter::StandardMessageCodec& GetCodec(); + // Sets up an instance of `FirebaseDatabaseHostApi` to handle messages through the `binary_messenger`. + static void SetUp( + flutter::BinaryMessenger* binary_messenger, + FirebaseDatabaseHostApi* api); + static void SetUp( + flutter::BinaryMessenger* binary_messenger, + FirebaseDatabaseHostApi* api, + const std::string& message_channel_suffix); + static flutter::EncodableValue WrapError(std::string_view error_message); + static flutter::EncodableValue WrapError(const FlutterError& error); + protected: + FirebaseDatabaseHostApi() = default; +}; +// Generated class from Pigeon that represents Flutter messages that can be called from C++. +class FirebaseDatabaseFlutterApi { + public: + FirebaseDatabaseFlutterApi(flutter::BinaryMessenger* binary_messenger); + FirebaseDatabaseFlutterApi( + flutter::BinaryMessenger* binary_messenger, + const std::string& message_channel_suffix); + static const flutter::StandardMessageCodec& GetCodec(); + void CallTransactionHandler( + int64_t transaction_key, + const flutter::EncodableValue* snapshot_value, + std::function&& on_success, + std::function&& on_error); + private: + flutter::BinaryMessenger* binary_messenger_; + std::string message_channel_suffix_; +}; + +} // namespace firebase_database_windows +#endif // PIGEON_MESSAGES_G_H_ diff --git a/packages/firebase_database/firebase_database/windows/plugin_version.h.in b/packages/firebase_database/firebase_database/windows/plugin_version.h.in new file mode 100644 index 000000000000..7a405b7c9894 --- /dev/null +++ b/packages/firebase_database/firebase_database/windows/plugin_version.h.in @@ -0,0 +1,13 @@ +// Copyright 2025, the Chromium project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#ifndef PLUGIN_VERSION_CONFIG_H +#define PLUGIN_VERSION_CONFIG_H + +namespace firebase_database_windows { + +std::string getPluginVersion() { return "@PLUGIN_VERSION@"; } +} // namespace firebase_database_windows + +#endif // PLUGIN_VERSION_CONFIG_H diff --git a/packages/firebase_database/firebase_database_platform_interface/lib/src/pigeon/messages.pigeon.dart b/packages/firebase_database/firebase_database_platform_interface/lib/src/pigeon/messages.pigeon.dart index 592d072fca61..748ccc65fefe 100644 --- a/packages/firebase_database/firebase_database_platform_interface/lib/src/pigeon/messages.pigeon.dart +++ b/packages/firebase_database/firebase_database_platform_interface/lib/src/pigeon/messages.pigeon.dart @@ -18,8 +18,7 @@ PlatformException _createConnectionError(String channelName) { ); } -List wrapResponse( - {Object? result, PlatformException? error, bool empty = false}) { +List wrapResponse({Object? result, PlatformException? error, bool empty = false}) { if (empty) { return []; } @@ -28,22 +27,21 @@ List wrapResponse( } return [error.code, error.message, error.details]; } - bool _deepEquals(Object? a, Object? b) { if (a is List && b is List) { return a.length == b.length && a.indexed - .every(((int, dynamic) item) => _deepEquals(item.$2, b[item.$1])); + .every(((int, dynamic) item) => _deepEquals(item.$2, b[item.$1])); } if (a is Map && b is Map) { - return a.length == b.length && - a.entries.every((MapEntry entry) => - (b as Map).containsKey(entry.key) && - _deepEquals(entry.value, b[entry.key])); + return a.length == b.length && a.entries.every((MapEntry entry) => + (b as Map).containsKey(entry.key) && + _deepEquals(entry.value, b[entry.key])); } return a == b; } + class DatabasePigeonSettings { DatabasePigeonSettings({ this.persistenceEnabled, @@ -74,8 +72,7 @@ class DatabasePigeonSettings { } Object encode() { - return _toList(); - } + return _toList(); } static DatabasePigeonSettings decode(Object result) { result as List; @@ -102,7 +99,8 @@ class DatabasePigeonSettings { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class DatabasePigeonFirebaseApp { @@ -127,8 +125,7 @@ class DatabasePigeonFirebaseApp { } Object encode() { - return _toList(); - } + return _toList(); } static DatabasePigeonFirebaseApp decode(Object result) { result as List; @@ -142,8 +139,7 @@ class DatabasePigeonFirebaseApp { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { - if (other is! DatabasePigeonFirebaseApp || - other.runtimeType != runtimeType) { + if (other is! DatabasePigeonFirebaseApp || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { @@ -154,7 +150,8 @@ class DatabasePigeonFirebaseApp { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class DatabaseReferencePlatform { @@ -171,8 +168,7 @@ class DatabaseReferencePlatform { } Object encode() { - return _toList(); - } + return _toList(); } static DatabaseReferencePlatform decode(Object result) { result as List; @@ -184,8 +180,7 @@ class DatabaseReferencePlatform { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { - if (other is! DatabaseReferencePlatform || - other.runtimeType != runtimeType) { + if (other is! DatabaseReferencePlatform || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { @@ -196,7 +191,8 @@ class DatabaseReferencePlatform { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class DatabaseReferenceRequest { @@ -221,8 +217,7 @@ class DatabaseReferenceRequest { } Object encode() { - return _toList(); - } + return _toList(); } static DatabaseReferenceRequest decode(Object result) { result as List; @@ -236,8 +231,7 @@ class DatabaseReferenceRequest { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { - if (other is! DatabaseReferenceRequest || - other.runtimeType != runtimeType) { + if (other is! DatabaseReferenceRequest || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { @@ -248,7 +242,8 @@ class DatabaseReferenceRequest { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class UpdateRequest { @@ -269,8 +264,7 @@ class UpdateRequest { } Object encode() { - return _toList(); - } + return _toList(); } static UpdateRequest decode(Object result) { result as List; @@ -294,7 +288,8 @@ class UpdateRequest { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class TransactionRequest { @@ -319,8 +314,7 @@ class TransactionRequest { } Object encode() { - return _toList(); - } + return _toList(); } static TransactionRequest decode(Object result) { result as List; @@ -345,7 +339,8 @@ class TransactionRequest { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class QueryRequest { @@ -370,8 +365,7 @@ class QueryRequest { } Object encode() { - return _toList(); - } + return _toList(); } static QueryRequest decode(Object result) { result as List; @@ -396,7 +390,8 @@ class QueryRequest { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class TransactionHandlerResult { @@ -421,8 +416,7 @@ class TransactionHandlerResult { } Object encode() { - return _toList(); - } + return _toList(); } static TransactionHandlerResult decode(Object result) { result as List; @@ -436,8 +430,7 @@ class TransactionHandlerResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { - if (other is! TransactionHandlerResult || - other.runtimeType != runtimeType) { + if (other is! TransactionHandlerResult || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { @@ -448,9 +441,11 @@ class TransactionHandlerResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } + class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override @@ -458,28 +453,28 @@ class _PigeonCodec extends StandardMessageCodec { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); - } else if (value is DatabasePigeonSettings) { + } else if (value is DatabasePigeonSettings) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is DatabasePigeonFirebaseApp) { + } else if (value is DatabasePigeonFirebaseApp) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is DatabaseReferencePlatform) { + } else if (value is DatabaseReferencePlatform) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is DatabaseReferenceRequest) { + } else if (value is DatabaseReferenceRequest) { buffer.putUint8(132); writeValue(buffer, value.encode()); - } else if (value is UpdateRequest) { + } else if (value is UpdateRequest) { buffer.putUint8(133); writeValue(buffer, value.encode()); - } else if (value is TransactionRequest) { + } else if (value is TransactionRequest) { buffer.putUint8(134); writeValue(buffer, value.encode()); - } else if (value is QueryRequest) { + } else if (value is QueryRequest) { buffer.putUint8(135); writeValue(buffer, value.encode()); - } else if (value is TransactionHandlerResult) { + } else if (value is TransactionHandlerResult) { buffer.putUint8(136); writeValue(buffer, value.encode()); } else { @@ -490,21 +485,21 @@ class _PigeonCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 129: + case 129: return DatabasePigeonSettings.decode(readValue(buffer)!); - case 130: + case 130: return DatabasePigeonFirebaseApp.decode(readValue(buffer)!); - case 131: + case 131: return DatabaseReferencePlatform.decode(readValue(buffer)!); - case 132: + case 132: return DatabaseReferenceRequest.decode(readValue(buffer)!); - case 133: + case 133: return UpdateRequest.decode(readValue(buffer)!); - case 134: + case 134: return TransactionRequest.decode(readValue(buffer)!); - case 135: + case 135: return QueryRequest.decode(readValue(buffer)!); - case 136: + case 136: return TransactionHandlerResult.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -516,11 +511,9 @@ class FirebaseDatabaseHostApi { /// Constructor for [FirebaseDatabaseHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - FirebaseDatabaseHostApi( - {BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + FirebaseDatabaseHostApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = - messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -528,16 +521,13 @@ class FirebaseDatabaseHostApi { final String pigeonVar_messageChannelSuffix; Future goOnline(DatabasePigeonFirebaseApp app) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -554,16 +544,13 @@ class FirebaseDatabaseHostApi { } Future goOffline(DatabasePigeonFirebaseApp app) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -579,18 +566,14 @@ class FirebaseDatabaseHostApi { } } - Future setPersistenceEnabled( - DatabasePigeonFirebaseApp app, bool enabled) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future setPersistenceEnabled(DatabasePigeonFirebaseApp app, bool enabled) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, enabled]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, enabled]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -606,18 +589,14 @@ class FirebaseDatabaseHostApi { } } - Future setPersistenceCacheSizeBytes( - DatabasePigeonFirebaseApp app, int cacheSize) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future setPersistenceCacheSizeBytes(DatabasePigeonFirebaseApp app, int cacheSize) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, cacheSize]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, cacheSize]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -633,18 +612,14 @@ class FirebaseDatabaseHostApi { } } - Future setLoggingEnabled( - DatabasePigeonFirebaseApp app, bool enabled) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future setLoggingEnabled(DatabasePigeonFirebaseApp app, bool enabled) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, enabled]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, enabled]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -660,18 +635,14 @@ class FirebaseDatabaseHostApi { } } - Future useDatabaseEmulator( - DatabasePigeonFirebaseApp app, String host, int port) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future useDatabaseEmulator(DatabasePigeonFirebaseApp app, String host, int port) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, host, port]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, host, port]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -687,18 +658,14 @@ class FirebaseDatabaseHostApi { } } - Future ref(DatabasePigeonFirebaseApp app, - [String? path]) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future ref(DatabasePigeonFirebaseApp app, [String? path]) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, path]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, path]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -719,18 +686,14 @@ class FirebaseDatabaseHostApi { } } - Future refFromURL( - DatabasePigeonFirebaseApp app, String url) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future refFromURL(DatabasePigeonFirebaseApp app, String url) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, url]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, url]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -752,16 +715,13 @@ class FirebaseDatabaseHostApi { } Future purgeOutstandingWrites(DatabasePigeonFirebaseApp app) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -777,18 +737,14 @@ class FirebaseDatabaseHostApi { } } - Future databaseReferenceSet( - DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future databaseReferenceSet(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -804,18 +760,14 @@ class FirebaseDatabaseHostApi { } } - Future databaseReferenceSetWithPriority( - DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future databaseReferenceSetWithPriority(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -831,18 +783,14 @@ class FirebaseDatabaseHostApi { } } - Future databaseReferenceUpdate( - DatabasePigeonFirebaseApp app, UpdateRequest request) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future databaseReferenceUpdate(DatabasePigeonFirebaseApp app, UpdateRequest request) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -858,18 +806,14 @@ class FirebaseDatabaseHostApi { } } - Future databaseReferenceSetPriority( - DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future databaseReferenceSetPriority(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -885,18 +829,14 @@ class FirebaseDatabaseHostApi { } } - Future databaseReferenceRunTransaction( - DatabasePigeonFirebaseApp app, TransactionRequest request) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future databaseReferenceRunTransaction(DatabasePigeonFirebaseApp app, TransactionRequest request) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -912,18 +852,14 @@ class FirebaseDatabaseHostApi { } } - Future> databaseReferenceGetTransactionResult( - DatabasePigeonFirebaseApp app, int transactionKey) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future> databaseReferenceGetTransactionResult(DatabasePigeonFirebaseApp app, int transactionKey) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, transactionKey]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, transactionKey]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -940,23 +876,18 @@ class FirebaseDatabaseHostApi { message: 'Host platform returned null value for non-null return value.', ); } else { - return (pigeonVar_replyList[0] as Map?)! - .cast(); + return (pigeonVar_replyList[0] as Map?)!.cast(); } } - Future onDisconnectSet( - DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future onDisconnectSet(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -972,18 +903,14 @@ class FirebaseDatabaseHostApi { } } - Future onDisconnectSetWithPriority( - DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future onDisconnectSetWithPriority(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -999,18 +926,14 @@ class FirebaseDatabaseHostApi { } } - Future onDisconnectUpdate( - DatabasePigeonFirebaseApp app, UpdateRequest request) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future onDisconnectUpdate(DatabasePigeonFirebaseApp app, UpdateRequest request) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1026,18 +949,14 @@ class FirebaseDatabaseHostApi { } } - Future onDisconnectCancel( - DatabasePigeonFirebaseApp app, String path) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future onDisconnectCancel(DatabasePigeonFirebaseApp app, String path) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, path]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, path]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1053,18 +972,14 @@ class FirebaseDatabaseHostApi { } } - Future queryObserve( - DatabasePigeonFirebaseApp app, QueryRequest request) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future queryObserve(DatabasePigeonFirebaseApp app, QueryRequest request) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1085,18 +1000,14 @@ class FirebaseDatabaseHostApi { } } - Future queryKeepSynced( - DatabasePigeonFirebaseApp app, QueryRequest request) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future queryKeepSynced(DatabasePigeonFirebaseApp app, QueryRequest request) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1112,18 +1023,14 @@ class FirebaseDatabaseHostApi { } } - Future> queryGet( - DatabasePigeonFirebaseApp app, QueryRequest request) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future> queryGet(DatabasePigeonFirebaseApp app, QueryRequest request) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1140,8 +1047,7 @@ class FirebaseDatabaseHostApi { message: 'Host platform returned null value for non-null return value.', ); } else { - return (pigeonVar_replyList[0] as Map?)! - .cast(); + return (pigeonVar_replyList[0] as Map?)!.cast(); } } } @@ -1149,43 +1055,32 @@ class FirebaseDatabaseHostApi { abstract class FirebaseDatabaseFlutterApi { static const MessageCodec pigeonChannelCodec = _PigeonCodec(); - Future callTransactionHandler( - int transactionKey, Object? snapshotValue); + Future callTransactionHandler(int transactionKey, Object? snapshotValue); - static void setUp( - FirebaseDatabaseFlutterApi? api, { - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) { - messageChannelSuffix = - messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + static void setUp(FirebaseDatabaseFlutterApi? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler was null.'); final List args = (message as List?)!; final int? arg_transactionKey = (args[0] as int?); assert(arg_transactionKey != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler was null, expected non-null int.'); final Object? arg_snapshotValue = (args[1] as Object?); try { - final TransactionHandlerResult output = await api - .callTransactionHandler(arg_transactionKey!, arg_snapshotValue); + final TransactionHandlerResult output = await api.callTransactionHandler(arg_transactionKey!, arg_snapshotValue); return wrapResponse(result: output); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } diff --git a/packages/firebase_database/firebase_database_platform_interface/pigeons/messages.dart b/packages/firebase_database/firebase_database_platform_interface/pigeons/messages.dart index 3a752d5c8640..2db035bbae4c 100644 --- a/packages/firebase_database/firebase_database_platform_interface/pigeons/messages.dart +++ b/packages/firebase_database/firebase_database_platform_interface/pigeons/messages.dart @@ -16,6 +16,9 @@ import 'package:pigeon/pigeon.dart'; ), swiftOut: '../firebase_database/ios/firebase_database/Sources/firebase_database/FirebaseDatabaseMessages.g.swift', + cppHeaderOut: '../firebase_database/windows/messages.g.h', + cppSourceOut: '../firebase_database/windows/messages.g.cpp', + cppOptions: CppOptions(namespace: 'firebase_database_windows'), copyrightHeader: 'pigeons/copyright.txt', ), ) diff --git a/packages/firebase_database/firebase_database_platform_interface/test/pigeon/test_api.dart b/packages/firebase_database/firebase_database_platform_interface/test/pigeon/test_api.dart index 9c08cae382af..3ecff12df113 100644 --- a/packages/firebase_database/firebase_database_platform_interface/test/pigeon/test_api.dart +++ b/packages/firebase_database/firebase_database_platform_interface/test/pigeon/test_api.dart @@ -13,6 +13,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:firebase_database_platform_interface/src/pigeon/messages.pigeon.dart'; + class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override @@ -20,28 +21,28 @@ class _PigeonCodec extends StandardMessageCodec { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); - } else if (value is DatabasePigeonSettings) { + } else if (value is DatabasePigeonSettings) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is DatabasePigeonFirebaseApp) { + } else if (value is DatabasePigeonFirebaseApp) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is DatabaseReferencePlatform) { + } else if (value is DatabaseReferencePlatform) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is DatabaseReferenceRequest) { + } else if (value is DatabaseReferenceRequest) { buffer.putUint8(132); writeValue(buffer, value.encode()); - } else if (value is UpdateRequest) { + } else if (value is UpdateRequest) { buffer.putUint8(133); writeValue(buffer, value.encode()); - } else if (value is TransactionRequest) { + } else if (value is TransactionRequest) { buffer.putUint8(134); writeValue(buffer, value.encode()); - } else if (value is QueryRequest) { + } else if (value is QueryRequest) { buffer.putUint8(135); writeValue(buffer, value.encode()); - } else if (value is TransactionHandlerResult) { + } else if (value is TransactionHandlerResult) { buffer.putUint8(136); writeValue(buffer, value.encode()); } else { @@ -52,21 +53,21 @@ class _PigeonCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 129: + case 129: return DatabasePigeonSettings.decode(readValue(buffer)!); - case 130: + case 130: return DatabasePigeonFirebaseApp.decode(readValue(buffer)!); - case 131: + case 131: return DatabaseReferencePlatform.decode(readValue(buffer)!); - case 132: + case 132: return DatabaseReferenceRequest.decode(readValue(buffer)!); - case 133: + case 133: return UpdateRequest.decode(readValue(buffer)!); - case 134: + case 134: return TransactionRequest.decode(readValue(buffer)!); - case 135: + case 135: return QueryRequest.decode(readValue(buffer)!); - case 136: + case 136: return TransactionHandlerResult.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -75,97 +76,67 @@ class _PigeonCodec extends StandardMessageCodec { } abstract class TestFirebaseDatabaseHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); Future goOnline(DatabasePigeonFirebaseApp app); Future goOffline(DatabasePigeonFirebaseApp app); - Future setPersistenceEnabled( - DatabasePigeonFirebaseApp app, bool enabled); + Future setPersistenceEnabled(DatabasePigeonFirebaseApp app, bool enabled); - Future setPersistenceCacheSizeBytes( - DatabasePigeonFirebaseApp app, int cacheSize); + Future setPersistenceCacheSizeBytes(DatabasePigeonFirebaseApp app, int cacheSize); Future setLoggingEnabled(DatabasePigeonFirebaseApp app, bool enabled); - Future useDatabaseEmulator( - DatabasePigeonFirebaseApp app, String host, int port); + Future useDatabaseEmulator(DatabasePigeonFirebaseApp app, String host, int port); - Future ref(DatabasePigeonFirebaseApp app, - [String? path]); + Future ref(DatabasePigeonFirebaseApp app, [String? path]); - Future refFromURL( - DatabasePigeonFirebaseApp app, String url); + Future refFromURL(DatabasePigeonFirebaseApp app, String url); Future purgeOutstandingWrites(DatabasePigeonFirebaseApp app); - Future databaseReferenceSet( - DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); + Future databaseReferenceSet(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); - Future databaseReferenceSetWithPriority( - DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); + Future databaseReferenceSetWithPriority(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); - Future databaseReferenceUpdate( - DatabasePigeonFirebaseApp app, UpdateRequest request); + Future databaseReferenceUpdate(DatabasePigeonFirebaseApp app, UpdateRequest request); - Future databaseReferenceSetPriority( - DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); + Future databaseReferenceSetPriority(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); - Future databaseReferenceRunTransaction( - DatabasePigeonFirebaseApp app, TransactionRequest request); + Future databaseReferenceRunTransaction(DatabasePigeonFirebaseApp app, TransactionRequest request); - Future> databaseReferenceGetTransactionResult( - DatabasePigeonFirebaseApp app, int transactionKey); + Future> databaseReferenceGetTransactionResult(DatabasePigeonFirebaseApp app, int transactionKey); - Future onDisconnectSet( - DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); + Future onDisconnectSet(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); - Future onDisconnectSetWithPriority( - DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); + Future onDisconnectSetWithPriority(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); - Future onDisconnectUpdate( - DatabasePigeonFirebaseApp app, UpdateRequest request); + Future onDisconnectUpdate(DatabasePigeonFirebaseApp app, UpdateRequest request); Future onDisconnectCancel(DatabasePigeonFirebaseApp app, String path); - Future queryObserve( - DatabasePigeonFirebaseApp app, QueryRequest request); + Future queryObserve(DatabasePigeonFirebaseApp app, QueryRequest request); - Future queryKeepSynced( - DatabasePigeonFirebaseApp app, QueryRequest request); + Future queryKeepSynced(DatabasePigeonFirebaseApp app, QueryRequest request); - Future> queryGet( - DatabasePigeonFirebaseApp app, QueryRequest request); + Future> queryGet(DatabasePigeonFirebaseApp app, QueryRequest request); - static void setUp( - TestFirebaseDatabaseHostApi? api, { - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) { - messageChannelSuffix = - messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + static void setUp(TestFirebaseDatabaseHostApi? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline was null, expected non-null DatabasePigeonFirebaseApp.'); try { @@ -173,32 +144,24 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline was null, expected non-null DatabasePigeonFirebaseApp.'); try { @@ -206,32 +169,24 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled was null, expected non-null DatabasePigeonFirebaseApp.'); final bool? arg_enabled = (args[1] as bool?); @@ -242,32 +197,24 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes was null, expected non-null DatabasePigeonFirebaseApp.'); final int? arg_cacheSize = (args[1] as int?); @@ -278,32 +225,24 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled was null, expected non-null DatabasePigeonFirebaseApp.'); final bool? arg_enabled = (args[1] as bool?); @@ -314,32 +253,24 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator was null, expected non-null DatabasePigeonFirebaseApp.'); final String? arg_host = (args[1] as String?); @@ -353,104 +284,78 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref was null, expected non-null DatabasePigeonFirebaseApp.'); final String? arg_path = (args[1] as String?); try { - final DatabaseReferencePlatform output = - await api.ref(arg_app!, arg_path); + final DatabaseReferencePlatform output = await api.ref(arg_app!, arg_path); return [output]; } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL was null, expected non-null DatabasePigeonFirebaseApp.'); final String? arg_url = (args[1] as String?); assert(arg_url != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL was null, expected non-null String.'); try { - final DatabaseReferencePlatform output = - await api.refFromURL(arg_app!, arg_url!); + final DatabaseReferencePlatform output = await api.refFromURL(arg_app!, arg_url!); return [output]; } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites was null, expected non-null DatabasePigeonFirebaseApp.'); try { @@ -458,36 +363,27 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet was null, expected non-null DatabasePigeonFirebaseApp.'); - final DatabaseReferenceRequest? arg_request = - (args[1] as DatabaseReferenceRequest?); + final DatabaseReferenceRequest? arg_request = (args[1] as DatabaseReferenceRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet was null, expected non-null DatabaseReferenceRequest.'); try { @@ -495,36 +391,27 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority was null, expected non-null DatabasePigeonFirebaseApp.'); - final DatabaseReferenceRequest? arg_request = - (args[1] as DatabaseReferenceRequest?); + final DatabaseReferenceRequest? arg_request = (args[1] as DatabaseReferenceRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority was null, expected non-null DatabaseReferenceRequest.'); try { @@ -532,32 +419,24 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate was null, expected non-null DatabasePigeonFirebaseApp.'); final UpdateRequest? arg_request = (args[1] as UpdateRequest?); @@ -568,36 +447,27 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority was null, expected non-null DatabasePigeonFirebaseApp.'); - final DatabaseReferenceRequest? arg_request = - (args[1] as DatabaseReferenceRequest?); + final DatabaseReferenceRequest? arg_request = (args[1] as DatabaseReferenceRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority was null, expected non-null DatabaseReferenceRequest.'); try { @@ -605,36 +475,27 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction was null, expected non-null DatabasePigeonFirebaseApp.'); - final TransactionRequest? arg_request = - (args[1] as TransactionRequest?); + final TransactionRequest? arg_request = (args[1] as TransactionRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction was null, expected non-null TransactionRequest.'); try { @@ -642,74 +503,55 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult was null, expected non-null DatabasePigeonFirebaseApp.'); final int? arg_transactionKey = (args[1] as int?); assert(arg_transactionKey != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult was null, expected non-null int.'); try { - final Map output = - await api.databaseReferenceGetTransactionResult( - arg_app!, arg_transactionKey!); + final Map output = await api.databaseReferenceGetTransactionResult(arg_app!, arg_transactionKey!); return [output]; } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet was null, expected non-null DatabasePigeonFirebaseApp.'); - final DatabaseReferenceRequest? arg_request = - (args[1] as DatabaseReferenceRequest?); + final DatabaseReferenceRequest? arg_request = (args[1] as DatabaseReferenceRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet was null, expected non-null DatabaseReferenceRequest.'); try { @@ -717,36 +559,27 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority was null, expected non-null DatabasePigeonFirebaseApp.'); - final DatabaseReferenceRequest? arg_request = - (args[1] as DatabaseReferenceRequest?); + final DatabaseReferenceRequest? arg_request = (args[1] as DatabaseReferenceRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority was null, expected non-null DatabaseReferenceRequest.'); try { @@ -754,32 +587,24 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate was null, expected non-null DatabasePigeonFirebaseApp.'); final UpdateRequest? arg_request = (args[1] as UpdateRequest?); @@ -790,32 +615,24 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel was null, expected non-null DatabasePigeonFirebaseApp.'); final String? arg_path = (args[1] as String?); @@ -826,69 +643,52 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve was null, expected non-null DatabasePigeonFirebaseApp.'); final QueryRequest? arg_request = (args[1] as QueryRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve was null, expected non-null QueryRequest.'); try { - final String output = - await api.queryObserve(arg_app!, arg_request!); + final String output = await api.queryObserve(arg_app!, arg_request!); return [output]; } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced was null, expected non-null DatabasePigeonFirebaseApp.'); final QueryRequest? arg_request = (args[1] as QueryRequest?); @@ -899,46 +699,36 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(pigeonVar_channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = - (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet was null, expected non-null DatabasePigeonFirebaseApp.'); final QueryRequest? arg_request = (args[1] as QueryRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet was null, expected non-null QueryRequest.'); try { - final Map output = - await api.queryGet(arg_app!, arg_request!); + final Map output = await api.queryGet(arg_app!, arg_request!); return [output]; } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } diff --git a/tests/integration_test/e2e_test.dart b/tests/integration_test/e2e_test.dart index 7f5d657b1b56..7d6245bb7c84 100644 --- a/tests/integration_test/e2e_test.dart +++ b/tests/integration_test/e2e_test.dart @@ -74,6 +74,7 @@ void main() { case TargetPlatform.windows: firebase_core.main(); firebase_auth.main(); + firebase_database.main(); firebase_remote_config.main(); firebase_storage.main(); break; diff --git a/tests/windows/flutter/generated_plugin_registrant.cc b/tests/windows/flutter/generated_plugin_registrant.cc index 2fda6bf3095a..9a180bb54481 100644 --- a/tests/windows/flutter/generated_plugin_registrant.cc +++ b/tests/windows/flutter/generated_plugin_registrant.cc @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -16,6 +17,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("FirebaseAuthPluginCApi")); FirebaseCorePluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); + FirebaseDatabasePluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseDatabasePluginCApi")); FirebaseRemoteConfigPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("FirebaseRemoteConfigPluginCApi")); FirebaseStoragePluginCApiRegisterWithRegistrar( diff --git a/tests/windows/flutter/generated_plugins.cmake b/tests/windows/flutter/generated_plugins.cmake index 7a8854af51e0..1a9da22be867 100644 --- a/tests/windows/flutter/generated_plugins.cmake +++ b/tests/windows/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST firebase_auth firebase_core + firebase_database firebase_remote_config firebase_storage ) From 71457fe7b8a15e169de96becf21976d78838ce9d Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Wed, 4 Mar 2026 17:12:40 +0100 Subject: [PATCH 02/22] format --- .../FirebaseDatabaseMessages.g.swift | 496 +++-- .../windows/firebase_database_plugin.cpp | 136 +- .../windows/firebase_database_plugin.h | 26 +- .../firebase_database/windows/messages.g.cpp | 1947 ++++++++++------- .../firebase_database/windows/messages.g.h | 266 +-- .../lib/src/pigeon/messages.pigeon.dart | 403 ++-- .../test/pigeon/test_api.dart | 658 ++++-- 7 files changed, 2323 insertions(+), 1609 deletions(-) diff --git a/packages/firebase_database/firebase_database/ios/firebase_database/Sources/firebase_database/FirebaseDatabaseMessages.g.swift b/packages/firebase_database/firebase_database/ios/firebase_database/Sources/firebase_database/FirebaseDatabaseMessages.g.swift index 525b3bcf98bb..e91097627f7e 100644 --- a/packages/firebase_database/firebase_database/ios/firebase_database/Sources/firebase_database/FirebaseDatabaseMessages.g.swift +++ b/packages/firebase_database/firebase_database/ios/firebase_database/Sources/firebase_database/FirebaseDatabaseMessages.g.swift @@ -27,13 +27,12 @@ final class PigeonError: Error { } var localizedDescription: String { - return - "PigeonError(code: \(code), message: \(message ?? ""), details: \(details ?? "")" + "PigeonError(code: \(code), message: \(message ?? ""), details: \(details ?? "")" } } private func wrapResult(_ result: Any?) -> [Any?] { - return [result] + [result] } private func wrapError(_ error: Any) -> [Any?] { @@ -59,11 +58,15 @@ private func wrapError(_ error: Any) -> [Any?] { } private func createConnectionError(withChannelName channelName: String) -> PigeonError { - return PigeonError(code: "channel-error", message: "Unable to establish connection on channel: '\(channelName)'.", details: "") + PigeonError( + code: "channel-error", + message: "Unable to establish connection on channel: '\(channelName)'.", + details: "" + ) } private func isNullish(_ value: Any?) -> Bool { - return value is NSNull || value == nil + value is NSNull || value == nil } private func nilOrValue(_ value: Any?) -> T? { @@ -107,19 +110,22 @@ func deepEqualsFirebaseDatabaseMessages(_ lhs: Any?, _ rhs: Any?) -> Bool { return true default: - // Any other type shouldn't be able to be used with pigeon. File an issue if you find this to be untrue. + // Any other type shouldn't be able to be used with pigeon. File an issue if you find this to be + // untrue. return false } } func deepHashFirebaseDatabaseMessages(value: Any?, hasher: inout Hasher) { if let valueList = value as? [AnyHashable] { - for item in valueList { deepHashFirebaseDatabaseMessages(value: item, hasher: &hasher) } - return + for item in valueList { + deepHashFirebaseDatabaseMessages(value: item, hasher: &hasher) + } + return } if let valueDict = value as? [AnyHashable: AnyHashable] { - for key in valueDict.keys { + for key in valueDict.keys { hasher.combine(key) deepHashFirebaseDatabaseMessages(value: valueDict[key]!, hasher: &hasher) } @@ -133,16 +139,13 @@ func deepHashFirebaseDatabaseMessages(value: Any?, hasher: inout Hasher) { return hasher.combine(String(describing: value)) } - - /// Generated class from Pigeon that represents data sent in messages. struct DatabasePigeonSettings: Hashable { - var persistenceEnabled: Bool? = nil - var cacheSizeBytes: Int64? = nil - var loggingEnabled: Bool? = nil - var emulatorHost: String? = nil - var emulatorPort: Int64? = nil - + var persistenceEnabled: Bool? + var cacheSizeBytes: Int64? + var loggingEnabled: Bool? + var emulatorHost: String? + var emulatorPort: Int64? // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> DatabasePigeonSettings? { @@ -160,8 +163,9 @@ struct DatabasePigeonSettings: Hashable { emulatorPort: emulatorPort ) } + func toList() -> [Any?] { - return [ + [ persistenceEnabled, cacheSizeBytes, loggingEnabled, @@ -169,8 +173,11 @@ struct DatabasePigeonSettings: Hashable { emulatorPort, ] } + static func == (lhs: DatabasePigeonSettings, rhs: DatabasePigeonSettings) -> Bool { - return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } + deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) + } + func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -179,10 +186,9 @@ struct DatabasePigeonSettings: Hashable { /// Generated class from Pigeon that represents data sent in messages. struct DatabasePigeonFirebaseApp: Hashable { var appName: String - var databaseURL: String? = nil + var databaseURL: String? var settings: DatabasePigeonSettings - // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> DatabasePigeonFirebaseApp? { let appName = pigeonVar_list[0] as! String @@ -195,15 +201,19 @@ struct DatabasePigeonFirebaseApp: Hashable { settings: settings ) } + func toList() -> [Any?] { - return [ + [ appName, databaseURL, settings, ] } + static func == (lhs: DatabasePigeonFirebaseApp, rhs: DatabasePigeonFirebaseApp) -> Bool { - return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } + deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) + } + func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -213,7 +223,6 @@ struct DatabasePigeonFirebaseApp: Hashable { struct DatabaseReferencePlatform: Hashable { var path: String - // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> DatabaseReferencePlatform? { let path = pigeonVar_list[0] as! String @@ -222,13 +231,17 @@ struct DatabaseReferencePlatform: Hashable { path: path ) } + func toList() -> [Any?] { - return [ - path + [ + path, ] } + static func == (lhs: DatabaseReferencePlatform, rhs: DatabaseReferencePlatform) -> Bool { - return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } + deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) + } + func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -237,9 +250,8 @@ struct DatabaseReferencePlatform: Hashable { /// Generated class from Pigeon that represents data sent in messages. struct DatabaseReferenceRequest: Hashable { var path: String - var value: Any? = nil - var priority: Any? = nil - + var value: Any? + var priority: Any? // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> DatabaseReferenceRequest? { @@ -253,15 +265,19 @@ struct DatabaseReferenceRequest: Hashable { priority: priority ) } + func toList() -> [Any?] { - return [ + [ path, value, priority, ] } + static func == (lhs: DatabaseReferenceRequest, rhs: DatabaseReferenceRequest) -> Bool { - return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } + deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) + } + func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -272,7 +288,6 @@ struct UpdateRequest: Hashable { var path: String var value: [String: Any?] - // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> UpdateRequest? { let path = pigeonVar_list[0] as! String @@ -283,14 +298,18 @@ struct UpdateRequest: Hashable { value: value ) } + func toList() -> [Any?] { - return [ + [ path, value, ] } + static func == (lhs: UpdateRequest, rhs: UpdateRequest) -> Bool { - return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } + deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) + } + func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -302,7 +321,6 @@ struct TransactionRequest: Hashable { var transactionKey: Int64 var applyLocally: Bool - // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> TransactionRequest? { let path = pigeonVar_list[0] as! String @@ -315,15 +333,19 @@ struct TransactionRequest: Hashable { applyLocally: applyLocally ) } + func toList() -> [Any?] { - return [ + [ path, transactionKey, applyLocally, ] } + static func == (lhs: TransactionRequest, rhs: TransactionRequest) -> Bool { - return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } + deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) + } + func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -333,8 +355,7 @@ struct TransactionRequest: Hashable { struct QueryRequest: Hashable { var path: String var modifiers: [[String: Any?]] - var value: Bool? = nil - + var value: Bool? // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> QueryRequest? { @@ -348,15 +369,19 @@ struct QueryRequest: Hashable { value: value ) } + func toList() -> [Any?] { - return [ + [ path, modifiers, value, ] } + static func == (lhs: QueryRequest, rhs: QueryRequest) -> Bool { - return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } + deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) + } + func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -364,11 +389,10 @@ struct QueryRequest: Hashable { /// Generated class from Pigeon that represents data sent in messages. struct TransactionHandlerResult: Hashable { - var value: Any? = nil + var value: Any? var aborted: Bool var exception: Bool - // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> TransactionHandlerResult? { let value: Any? = pigeonVar_list[0] @@ -381,15 +405,19 @@ struct TransactionHandlerResult: Hashable { exception: exception ) } + func toList() -> [Any?] { - return [ + [ value, aborted, exception, ] } + static func == (lhs: TransactionHandlerResult, rhs: TransactionHandlerResult) -> Bool { - return deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) } + deepEqualsFirebaseDatabaseMessages(lhs.toList(), rhs.toList()) + } + func hash(into hasher: inout Hasher) { deepHashFirebaseDatabaseMessages(value: toList(), hasher: &hasher) } @@ -399,21 +427,21 @@ private class FirebaseDatabaseMessagesPigeonCodecReader: FlutterStandardReader { override func readValue(ofType type: UInt8) -> Any? { switch type { case 129: - return DatabasePigeonSettings.fromList(self.readValue() as! [Any?]) + return DatabasePigeonSettings.fromList(readValue() as! [Any?]) case 130: - return DatabasePigeonFirebaseApp.fromList(self.readValue() as! [Any?]) + return DatabasePigeonFirebaseApp.fromList(readValue() as! [Any?]) case 131: - return DatabaseReferencePlatform.fromList(self.readValue() as! [Any?]) + return DatabaseReferencePlatform.fromList(readValue() as! [Any?]) case 132: - return DatabaseReferenceRequest.fromList(self.readValue() as! [Any?]) + return DatabaseReferenceRequest.fromList(readValue() as! [Any?]) case 133: - return UpdateRequest.fromList(self.readValue() as! [Any?]) + return UpdateRequest.fromList(readValue() as! [Any?]) case 134: - return TransactionRequest.fromList(self.readValue() as! [Any?]) + return TransactionRequest.fromList(readValue() as! [Any?]) case 135: - return QueryRequest.fromList(self.readValue() as! [Any?]) + return QueryRequest.fromList(readValue() as! [Any?]) case 136: - return TransactionHandlerResult.fromList(self.readValue() as! [Any?]) + return TransactionHandlerResult.fromList(readValue() as! [Any?]) default: return super.readValue(ofType: type) } @@ -454,53 +482,89 @@ private class FirebaseDatabaseMessagesPigeonCodecWriter: FlutterStandardWriter { private class FirebaseDatabaseMessagesPigeonCodecReaderWriter: FlutterStandardReaderWriter { override func reader(with data: Data) -> FlutterStandardReader { - return FirebaseDatabaseMessagesPigeonCodecReader(data: data) + FirebaseDatabaseMessagesPigeonCodecReader(data: data) } override func writer(with data: NSMutableData) -> FlutterStandardWriter { - return FirebaseDatabaseMessagesPigeonCodecWriter(data: data) + FirebaseDatabaseMessagesPigeonCodecWriter(data: data) } } class FirebaseDatabaseMessagesPigeonCodec: FlutterStandardMessageCodec, @unchecked Sendable { - static let shared = FirebaseDatabaseMessagesPigeonCodec(readerWriter: FirebaseDatabaseMessagesPigeonCodecReaderWriter()) + static let shared = + FirebaseDatabaseMessagesPigeonCodec( + readerWriter: FirebaseDatabaseMessagesPigeonCodecReaderWriter() + ) } - /// Generated protocol from Pigeon that represents a handler of messages from Flutter. protocol FirebaseDatabaseHostApi { func goOnline(app: DatabasePigeonFirebaseApp, completion: @escaping (Result) -> Void) - func goOffline(app: DatabasePigeonFirebaseApp, completion: @escaping (Result) -> Void) - func setPersistenceEnabled(app: DatabasePigeonFirebaseApp, enabled: Bool, completion: @escaping (Result) -> Void) - func setPersistenceCacheSizeBytes(app: DatabasePigeonFirebaseApp, cacheSize: Int64, completion: @escaping (Result) -> Void) - func setLoggingEnabled(app: DatabasePigeonFirebaseApp, enabled: Bool, completion: @escaping (Result) -> Void) - func useDatabaseEmulator(app: DatabasePigeonFirebaseApp, host: String, port: Int64, completion: @escaping (Result) -> Void) - func ref(app: DatabasePigeonFirebaseApp, path: String?, completion: @escaping (Result) -> Void) - func refFromURL(app: DatabasePigeonFirebaseApp, url: String, completion: @escaping (Result) -> Void) - func purgeOutstandingWrites(app: DatabasePigeonFirebaseApp, completion: @escaping (Result) -> Void) - func databaseReferenceSet(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, completion: @escaping (Result) -> Void) - func databaseReferenceSetWithPriority(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, completion: @escaping (Result) -> Void) - func databaseReferenceUpdate(app: DatabasePigeonFirebaseApp, request: UpdateRequest, completion: @escaping (Result) -> Void) - func databaseReferenceSetPriority(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, completion: @escaping (Result) -> Void) - func databaseReferenceRunTransaction(app: DatabasePigeonFirebaseApp, request: TransactionRequest, completion: @escaping (Result) -> Void) - func databaseReferenceGetTransactionResult(app: DatabasePigeonFirebaseApp, transactionKey: Int64, completion: @escaping (Result<[String: Any?], Error>) -> Void) - func onDisconnectSet(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, completion: @escaping (Result) -> Void) - func onDisconnectSetWithPriority(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, completion: @escaping (Result) -> Void) - func onDisconnectUpdate(app: DatabasePigeonFirebaseApp, request: UpdateRequest, completion: @escaping (Result) -> Void) - func onDisconnectCancel(app: DatabasePigeonFirebaseApp, path: String, completion: @escaping (Result) -> Void) - func queryObserve(app: DatabasePigeonFirebaseApp, request: QueryRequest, completion: @escaping (Result) -> Void) - func queryKeepSynced(app: DatabasePigeonFirebaseApp, request: QueryRequest, completion: @escaping (Result) -> Void) - func queryGet(app: DatabasePigeonFirebaseApp, request: QueryRequest, completion: @escaping (Result<[String: Any?], Error>) -> Void) + func goOffline(app: DatabasePigeonFirebaseApp, + completion: @escaping (Result) -> Void) + func setPersistenceEnabled(app: DatabasePigeonFirebaseApp, enabled: Bool, + completion: @escaping (Result) -> Void) + func setPersistenceCacheSizeBytes(app: DatabasePigeonFirebaseApp, cacheSize: Int64, + completion: @escaping (Result) -> Void) + func setLoggingEnabled(app: DatabasePigeonFirebaseApp, enabled: Bool, + completion: @escaping (Result) -> Void) + func useDatabaseEmulator(app: DatabasePigeonFirebaseApp, host: String, port: Int64, + completion: @escaping (Result) -> Void) + func ref(app: DatabasePigeonFirebaseApp, path: String?, + completion: @escaping (Result) -> Void) + func refFromURL(app: DatabasePigeonFirebaseApp, url: String, + completion: @escaping (Result) -> Void) + func purgeOutstandingWrites(app: DatabasePigeonFirebaseApp, + completion: @escaping (Result) -> Void) + func databaseReferenceSet(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, + completion: @escaping (Result) -> Void) + func databaseReferenceSetWithPriority(app: DatabasePigeonFirebaseApp, + request: DatabaseReferenceRequest, + completion: @escaping (Result) -> Void) + func databaseReferenceUpdate(app: DatabasePigeonFirebaseApp, request: UpdateRequest, + completion: @escaping (Result) -> Void) + func databaseReferenceSetPriority(app: DatabasePigeonFirebaseApp, + request: DatabaseReferenceRequest, + completion: @escaping (Result) -> Void) + func databaseReferenceRunTransaction(app: DatabasePigeonFirebaseApp, request: TransactionRequest, + completion: @escaping (Result) -> Void) + func databaseReferenceGetTransactionResult(app: DatabasePigeonFirebaseApp, transactionKey: Int64, + completion: @escaping (Result<[String: Any?], Error>) + -> Void) + func onDisconnectSet(app: DatabasePigeonFirebaseApp, request: DatabaseReferenceRequest, + completion: @escaping (Result) -> Void) + func onDisconnectSetWithPriority(app: DatabasePigeonFirebaseApp, + request: DatabaseReferenceRequest, + completion: @escaping (Result) -> Void) + func onDisconnectUpdate(app: DatabasePigeonFirebaseApp, request: UpdateRequest, + completion: @escaping (Result) -> Void) + func onDisconnectCancel(app: DatabasePigeonFirebaseApp, path: String, + completion: @escaping (Result) -> Void) + func queryObserve(app: DatabasePigeonFirebaseApp, request: QueryRequest, + completion: @escaping (Result) -> Void) + func queryKeepSynced(app: DatabasePigeonFirebaseApp, request: QueryRequest, + completion: @escaping (Result) -> Void) + func queryGet(app: DatabasePigeonFirebaseApp, request: QueryRequest, + completion: @escaping (Result<[String: Any?], Error>) -> Void) } /// Generated setup class from Pigeon to handle messages through the `binaryMessenger`. class FirebaseDatabaseHostApiSetup { - static var codec: FlutterStandardMessageCodec { FirebaseDatabaseMessagesPigeonCodec.shared } - /// Sets up an instance of `FirebaseDatabaseHostApi` to handle messages through the `binaryMessenger`. - static func setUp(binaryMessenger: FlutterBinaryMessenger, api: FirebaseDatabaseHostApi?, messageChannelSuffix: String = "") { + static var codec: FlutterStandardMessageCodec { + FirebaseDatabaseMessagesPigeonCodec.shared + } + + /// Sets up an instance of `FirebaseDatabaseHostApi` to handle messages through the + /// `binaryMessenger`. + static func setUp(binaryMessenger: FlutterBinaryMessenger, api: FirebaseDatabaseHostApi?, + messageChannelSuffix: String = "") { let channelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" - let goOnlineChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let goOnlineChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { goOnlineChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -508,7 +572,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -516,8 +580,12 @@ class FirebaseDatabaseHostApiSetup { } else { goOnlineChannel.setMessageHandler(nil) } - let goOfflineChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let goOfflineChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { goOfflineChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -525,7 +593,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -533,8 +601,12 @@ class FirebaseDatabaseHostApiSetup { } else { goOfflineChannel.setMessageHandler(nil) } - let setPersistenceEnabledChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let setPersistenceEnabledChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { setPersistenceEnabledChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -543,7 +615,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -551,8 +623,12 @@ class FirebaseDatabaseHostApiSetup { } else { setPersistenceEnabledChannel.setMessageHandler(nil) } - let setPersistenceCacheSizeBytesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let setPersistenceCacheSizeBytesChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { setPersistenceCacheSizeBytesChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -561,7 +637,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -569,8 +645,12 @@ class FirebaseDatabaseHostApiSetup { } else { setPersistenceCacheSizeBytesChannel.setMessageHandler(nil) } - let setLoggingEnabledChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let setLoggingEnabledChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { setLoggingEnabledChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -579,7 +659,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -587,8 +667,12 @@ class FirebaseDatabaseHostApiSetup { } else { setLoggingEnabledChannel.setMessageHandler(nil) } - let useDatabaseEmulatorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let useDatabaseEmulatorChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { useDatabaseEmulatorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -598,7 +682,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -606,17 +690,21 @@ class FirebaseDatabaseHostApiSetup { } else { useDatabaseEmulatorChannel.setMessageHandler(nil) } - let refChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let refChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { refChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp let pathArg: String? = nilOrValue(args[1]) api.ref(app: appArg, path: pathArg) { result in switch result { - case .success(let res): + case let .success(res): reply(wrapResult(res)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -624,17 +712,21 @@ class FirebaseDatabaseHostApiSetup { } else { refChannel.setMessageHandler(nil) } - let refFromURLChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let refFromURLChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { refFromURLChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp let urlArg = args[1] as! String api.refFromURL(app: appArg, url: urlArg) { result in switch result { - case .success(let res): + case let .success(res): reply(wrapResult(res)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -642,8 +734,12 @@ class FirebaseDatabaseHostApiSetup { } else { refFromURLChannel.setMessageHandler(nil) } - let purgeOutstandingWritesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let purgeOutstandingWritesChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { purgeOutstandingWritesChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -651,7 +747,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -659,8 +755,12 @@ class FirebaseDatabaseHostApiSetup { } else { purgeOutstandingWritesChannel.setMessageHandler(nil) } - let databaseReferenceSetChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let databaseReferenceSetChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { databaseReferenceSetChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -669,7 +769,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -677,8 +777,12 @@ class FirebaseDatabaseHostApiSetup { } else { databaseReferenceSetChannel.setMessageHandler(nil) } - let databaseReferenceSetWithPriorityChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let databaseReferenceSetWithPriorityChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { databaseReferenceSetWithPriorityChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -687,7 +791,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -695,8 +799,12 @@ class FirebaseDatabaseHostApiSetup { } else { databaseReferenceSetWithPriorityChannel.setMessageHandler(nil) } - let databaseReferenceUpdateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let databaseReferenceUpdateChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { databaseReferenceUpdateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -705,7 +813,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -713,8 +821,12 @@ class FirebaseDatabaseHostApiSetup { } else { databaseReferenceUpdateChannel.setMessageHandler(nil) } - let databaseReferenceSetPriorityChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let databaseReferenceSetPriorityChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { databaseReferenceSetPriorityChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -723,7 +835,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -731,8 +843,12 @@ class FirebaseDatabaseHostApiSetup { } else { databaseReferenceSetPriorityChannel.setMessageHandler(nil) } - let databaseReferenceRunTransactionChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let databaseReferenceRunTransactionChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { databaseReferenceRunTransactionChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -741,7 +857,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -749,26 +865,36 @@ class FirebaseDatabaseHostApiSetup { } else { databaseReferenceRunTransactionChannel.setMessageHandler(nil) } - let databaseReferenceGetTransactionResultChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let databaseReferenceGetTransactionResultChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { databaseReferenceGetTransactionResultChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp let transactionKeyArg = args[1] as! Int64 - api.databaseReferenceGetTransactionResult(app: appArg, transactionKey: transactionKeyArg) { result in - switch result { - case .success(let res): - reply(wrapResult(res)) - case .failure(let error): - reply(wrapError(error)) + api + .databaseReferenceGetTransactionResult(app: appArg, + transactionKey: transactionKeyArg) { result in + switch result { + case let .success(res): + reply(wrapResult(res)) + case let .failure(error): + reply(wrapError(error)) + } } - } } } else { databaseReferenceGetTransactionResultChannel.setMessageHandler(nil) } - let onDisconnectSetChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let onDisconnectSetChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { onDisconnectSetChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -777,7 +903,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -785,8 +911,12 @@ class FirebaseDatabaseHostApiSetup { } else { onDisconnectSetChannel.setMessageHandler(nil) } - let onDisconnectSetWithPriorityChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let onDisconnectSetWithPriorityChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { onDisconnectSetWithPriorityChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -795,7 +925,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -803,8 +933,12 @@ class FirebaseDatabaseHostApiSetup { } else { onDisconnectSetWithPriorityChannel.setMessageHandler(nil) } - let onDisconnectUpdateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let onDisconnectUpdateChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { onDisconnectUpdateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -813,7 +947,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -821,8 +955,12 @@ class FirebaseDatabaseHostApiSetup { } else { onDisconnectUpdateChannel.setMessageHandler(nil) } - let onDisconnectCancelChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let onDisconnectCancelChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { onDisconnectCancelChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -831,7 +969,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -839,17 +977,21 @@ class FirebaseDatabaseHostApiSetup { } else { onDisconnectCancelChannel.setMessageHandler(nil) } - let queryObserveChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let queryObserveChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { queryObserveChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp let requestArg = args[1] as! QueryRequest api.queryObserve(app: appArg, request: requestArg) { result in switch result { - case .success(let res): + case let .success(res): reply(wrapResult(res)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -857,8 +999,12 @@ class FirebaseDatabaseHostApiSetup { } else { queryObserveChannel.setMessageHandler(nil) } - let queryKeepSyncedChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let queryKeepSyncedChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { queryKeepSyncedChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp @@ -867,7 +1013,7 @@ class FirebaseDatabaseHostApiSetup { switch result { case .success: reply(wrapResult(nil)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -875,17 +1021,21 @@ class FirebaseDatabaseHostApiSetup { } else { queryKeepSyncedChannel.setMessageHandler(nil) } - let queryGetChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { + let queryGetChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet\(channelSuffix)", + binaryMessenger: binaryMessenger, + codec: codec + ) + if let api { queryGetChannel.setMessageHandler { message, reply in let args = message as! [Any?] let appArg = args[0] as! DatabasePigeonFirebaseApp let requestArg = args[1] as! QueryRequest api.queryGet(app: appArg, request: requestArg) { result in switch result { - case .success(let res): + case let .success(res): reply(wrapResult(res)) - case .failure(let error): + case let .failure(error): reply(wrapError(error)) } } @@ -895,10 +1045,15 @@ class FirebaseDatabaseHostApiSetup { } } } + /// Generated protocol from Pigeon that represents Flutter messages that can be called from Swift. protocol FirebaseDatabaseFlutterApiProtocol { - func callTransactionHandler(transactionKey transactionKeyArg: Int64, snapshotValue snapshotValueArg: Any?, completion: @escaping (Result) -> Void) + func callTransactionHandler(transactionKey transactionKeyArg: Int64, + snapshotValue snapshotValueArg: Any?, + completion: @escaping (Result) + -> Void) } + class FirebaseDatabaseFlutterApi: FirebaseDatabaseFlutterApiProtocol { private let binaryMessenger: FlutterBinaryMessenger private let messageChannelSuffix: String @@ -906,12 +1061,21 @@ class FirebaseDatabaseFlutterApi: FirebaseDatabaseFlutterApiProtocol { self.binaryMessenger = binaryMessenger self.messageChannelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" } + var codec: FirebaseDatabaseMessagesPigeonCodec { - return FirebaseDatabaseMessagesPigeonCodec.shared + FirebaseDatabaseMessagesPigeonCodec.shared } - func callTransactionHandler(transactionKey transactionKeyArg: Int64, snapshotValue snapshotValueArg: Any?, completion: @escaping (Result) -> Void) { - let channelName: String = "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler\(messageChannelSuffix)" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + + func callTransactionHandler(transactionKey transactionKeyArg: Int64, + snapshotValue snapshotValueArg: Any?, + completion: @escaping (Result) + -> Void) { + let channelName = "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler\(messageChannelSuffix)" + let channel = FlutterBasicMessageChannel( + name: channelName, + binaryMessenger: binaryMessenger, + codec: codec + ) channel.sendMessage([transactionKeyArg, snapshotValueArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -923,7 +1087,11 @@ class FirebaseDatabaseFlutterApi: FirebaseDatabaseFlutterApiProtocol { let details: String? = nilOrValue(listResponse[2]) completion(.failure(PigeonError(code: code, message: message, details: details))) } else if listResponse[0] == nil { - completion(.failure(PigeonError(code: "null-error", message: "Flutter api returned null value for non-null return value.", details: ""))) + completion(.failure(PigeonError( + code: "null-error", + message: "Flutter api returned null value for non-null return value.", + details: "" + ))) } else { let result = listResponse[0] as! TransactionHandlerResult completion(.success(result)) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index ff36c334b5fd..179b1b5c396a 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -4,21 +4,6 @@ #include "firebase_database_plugin.h" -#include "firebase/app.h" -#include "firebase/database.h" -#include "firebase/database/common.h" -#include "firebase/database/data_snapshot.h" -#include "firebase/database/database_reference.h" -#include "firebase/database/disconnection.h" -#include "firebase/database/listener.h" -#include "firebase/database/mutable_data.h" -#include "firebase/database/query.h" -#include "firebase/future.h" -#include "firebase/log.h" -#include "firebase/variant.h" -#include "firebase_database/plugin_version.h" -#include "messages.g.h" - #include #include #include @@ -35,6 +20,21 @@ #include #include +#include "firebase/app.h" +#include "firebase/database.h" +#include "firebase/database/common.h" +#include "firebase/database/data_snapshot.h" +#include "firebase/database/database_reference.h" +#include "firebase/database/disconnection.h" +#include "firebase/database/listener.h" +#include "firebase/database/mutable_data.h" +#include "firebase/database/query.h" +#include "firebase/future.h" +#include "firebase/log.h" +#include "firebase/variant.h" +#include "firebase_database/plugin_version.h" +#include "messages.g.h" + using firebase::App; using firebase::Future; using firebase::Variant; @@ -423,8 +423,7 @@ void FirebaseDatabasePlugin::SetLoggingEnabled( } void FirebaseDatabasePlugin::UseDatabaseEmulator( - const DatabasePigeonFirebaseApp& app, const std::string& host, - int64_t port, + const DatabasePigeonFirebaseApp& app, const std::string& host, int64_t port, std::function reply)> result) { // The C++ SDK does not have a direct emulator API. // The emulator host/port should be set via the database URL or settings @@ -517,14 +516,13 @@ void FirebaseDatabasePlugin::DatabaseReferenceSet( Variant value = request.value() ? EncodableValueToVariant(*request.value()) : Variant::Null(); - ref.SetValue(value).OnCompletion( - [result](const Future& future) { - if (future.error() == Error::kErrorNone) { - result(std::nullopt); - } else { - result(FirebaseDatabasePlugin::ParseError(future)); - } - }); + ref.SetValue(value).OnCompletion([result](const Future& future) { + if (future.error() == Error::kErrorNone) { + result(std::nullopt); + } else { + result(FirebaseDatabasePlugin::ParseError(future)); + } + }); } void FirebaseDatabasePlugin::DatabaseReferenceSetWithPriority( @@ -566,14 +564,13 @@ void FirebaseDatabasePlugin::DatabaseReferenceUpdate( DatabaseReference ref = database->GetReference(request.path().c_str()); Variant values = EncodableValueToVariant(EncodableValue(request.value())); - ref.UpdateChildren(values).OnCompletion( - [result](const Future& future) { - if (future.error() == Error::kErrorNone) { - result(std::nullopt); - } else { - result(FirebaseDatabasePlugin::ParseError(future)); - } - }); + ref.UpdateChildren(values).OnCompletion([result](const Future& future) { + if (future.error() == Error::kErrorNone) { + result(std::nullopt); + } else { + result(FirebaseDatabasePlugin::ParseError(future)); + } + }); } void FirebaseDatabasePlugin::DatabaseReferenceSetPriority( @@ -591,19 +588,17 @@ void FirebaseDatabasePlugin::DatabaseReferenceSetPriority( ? EncodableValueToVariant(*request.priority()) : Variant::Null(); - ref.SetPriority(priority).OnCompletion( - [result](const Future& future) { - if (future.error() == Error::kErrorNone) { - result(std::nullopt); - } else { - result(FirebaseDatabasePlugin::ParseError(future)); - } - }); + ref.SetPriority(priority).OnCompletion([result](const Future& future) { + if (future.error() == Error::kErrorNone) { + result(std::nullopt); + } else { + result(FirebaseDatabasePlugin::ParseError(future)); + } + }); } void FirebaseDatabasePlugin::DatabaseReferenceRunTransaction( - const DatabasePigeonFirebaseApp& app, - const TransactionRequest& request, + const DatabasePigeonFirebaseApp& app, const TransactionRequest& request, std::function reply)> result) { Database* database = GetDatabaseFromPigeon(app); if (!database) { @@ -629,7 +624,8 @@ void FirebaseDatabasePlugin::DatabaseReferenceRunTransaction( &transaction_results_, result}; ref.RunTransaction( - [](MutableData* data, void* context) -> firebase::database::TransactionResult { + [](MutableData* data, + void* context) -> firebase::database::TransactionResult { auto* ctx = static_cast(context); // Convert current data to EncodableValue @@ -862,7 +858,8 @@ void FirebaseDatabasePlugin::QueryObserve( } DatabaseReference ref = database->GetReference(request.path().c_str()); - firebase::database::Query query = ApplyQueryModifiers(ref, request.modifiers()); + firebase::database::Query query = + ApplyQueryModifiers(ref, request.modifiers()); // The event type will be passed as an argument when the Dart side calls // listen on the EventChannel. We need to create the appropriate handler. @@ -924,9 +921,8 @@ void FirebaseDatabasePlugin::QueryObserve( } void OnCancelled(const Error& error, const char* error_message) override { - events_->Error( - FirebaseDatabasePlugin::GetDatabaseErrorCode(error), - error_message ? error_message : "Unknown error"); + events_->Error(FirebaseDatabasePlugin::GetDatabaseErrorCode(error), + error_message ? error_message : "Unknown error"); } private: @@ -960,9 +956,8 @@ void FirebaseDatabasePlugin::QueryObserve( } void OnCancelled(const Error& error, const char* error_message) override { - events_->Error( - FirebaseDatabasePlugin::GetDatabaseErrorCode(error), - error_message ? error_message : "Unknown error"); + events_->Error(FirebaseDatabasePlugin::GetDatabaseErrorCode(error), + error_message ? error_message : "Unknown error"); } private: @@ -1028,7 +1023,8 @@ void FirebaseDatabasePlugin::QueryKeepSynced( } DatabaseReference ref = database->GetReference(request.path().c_str()); - firebase::database::Query query = ApplyQueryModifiers(ref, request.modifiers()); + firebase::database::Query query = + ApplyQueryModifiers(ref, request.modifiers()); bool keep_synced = request.value() ? *request.value() : false; query.SetKeepSynchronized(keep_synced); @@ -1045,24 +1041,24 @@ void FirebaseDatabasePlugin::QueryGet( } DatabaseReference ref = database->GetReference(request.path().c_str()); - firebase::database::Query query = ApplyQueryModifiers(ref, request.modifiers()); - - query.GetValue().OnCompletion( - [result](const Future& future) { - if (future.error() == Error::kErrorNone) { - const DataSnapshot* snapshot = future.result(); - EncodableMap result_map; - if (snapshot) { - result_map[EncodableValue("snapshot")] = EncodableValue( - FirebaseDatabasePlugin::DataSnapshotToEncodableMap(*snapshot)); - } else { - result_map[EncodableValue("snapshot")] = EncodableValue(); - } - result(result_map); - } else { - result(FirebaseDatabasePlugin::ParseError(future)); - } - }); + firebase::database::Query query = + ApplyQueryModifiers(ref, request.modifiers()); + + query.GetValue().OnCompletion([result](const Future& future) { + if (future.error() == Error::kErrorNone) { + const DataSnapshot* snapshot = future.result(); + EncodableMap result_map; + if (snapshot) { + result_map[EncodableValue("snapshot")] = EncodableValue( + FirebaseDatabasePlugin::DataSnapshotToEncodableMap(*snapshot)); + } else { + result_map[EncodableValue("snapshot")] = EncodableValue(); + } + result(result_map); + } else { + result(FirebaseDatabasePlugin::ParseError(future)); + } + }); } } // namespace firebase_database_windows diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h index a17f447f8991..c3903f5e3120 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h @@ -64,14 +64,12 @@ class FirebaseDatabasePlugin : public flutter::Plugin, const DatabasePigeonFirebaseApp& app, const std::string& host, int64_t port, std::function reply)> result) override; - void Ref( - const DatabasePigeonFirebaseApp& app, const std::string* path, - std::function reply)> result) - override; - void RefFromURL( - const DatabasePigeonFirebaseApp& app, const std::string& url, - std::function reply)> result) + void Ref(const DatabasePigeonFirebaseApp& app, const std::string* path, + std::function reply)> result) override; + void RefFromURL(const DatabasePigeonFirebaseApp& app, const std::string& url, + std::function reply)> + result) override; void PurgeOutstandingWrites( const DatabasePigeonFirebaseApp& app, std::function reply)> result) override; @@ -91,8 +89,7 @@ class FirebaseDatabasePlugin : public flutter::Plugin, const DatabaseReferenceRequest& request, std::function reply)> result) override; void DatabaseReferenceRunTransaction( - const DatabasePigeonFirebaseApp& app, - const TransactionRequest& request, + const DatabasePigeonFirebaseApp& app, const TransactionRequest& request, std::function reply)> result) override; void DatabaseReferenceGetTransactionResult( const DatabasePigeonFirebaseApp& app, int64_t transaction_key, @@ -118,10 +115,10 @@ class FirebaseDatabasePlugin : public flutter::Plugin, void QueryKeepSynced( const DatabasePigeonFirebaseApp& app, const QueryRequest& request, std::function reply)> result) override; - void QueryGet( - const DatabasePigeonFirebaseApp& app, const QueryRequest& request, - std::function reply)> result) - override; + void QueryGet(const DatabasePigeonFirebaseApp& app, + const QueryRequest& request, + std::function reply)> + result) override; static flutter::BinaryMessenger* messenger_; static std::map< @@ -135,8 +132,7 @@ class FirebaseDatabasePlugin : public flutter::Plugin, firebase::database::Database* GetDatabaseFromPigeon( const DatabasePigeonFirebaseApp& app); firebase::database::Query ApplyQueryModifiers( - firebase::database::Query query, - const flutter::EncodableList& modifiers); + firebase::database::Query query, const flutter::EncodableList& modifiers); std::map transaction_results_; int listener_count_ = 0; diff --git a/packages/firebase_database/firebase_database/windows/messages.g.cpp b/packages/firebase_database/firebase_database/windows/messages.g.cpp index 5fa70bf1858a..8c0aeeb54adc 100644 --- a/packages/firebase_database/firebase_database/windows/messages.g.cpp +++ b/packages/firebase_database/firebase_database/windows/messages.g.cpp @@ -35,44 +35,50 @@ FlutterError CreateConnectionError(const std::string channel_name) { DatabasePigeonSettings::DatabasePigeonSettings() {} -DatabasePigeonSettings::DatabasePigeonSettings( - const bool* persistence_enabled, - const int64_t* cache_size_bytes, - const bool* logging_enabled, - const std::string* emulator_host, - const int64_t* emulator_port) - : persistence_enabled_(persistence_enabled ? std::optional(*persistence_enabled) : std::nullopt), - cache_size_bytes_(cache_size_bytes ? std::optional(*cache_size_bytes) : std::nullopt), - logging_enabled_(logging_enabled ? std::optional(*logging_enabled) : std::nullopt), - emulator_host_(emulator_host ? std::optional(*emulator_host) : std::nullopt), - emulator_port_(emulator_port ? std::optional(*emulator_port) : std::nullopt) {} +DatabasePigeonSettings::DatabasePigeonSettings(const bool* persistence_enabled, + const int64_t* cache_size_bytes, + const bool* logging_enabled, + const std::string* emulator_host, + const int64_t* emulator_port) + : persistence_enabled_(persistence_enabled + ? std::optional(*persistence_enabled) + : std::nullopt), + cache_size_bytes_(cache_size_bytes + ? std::optional(*cache_size_bytes) + : std::nullopt), + logging_enabled_(logging_enabled ? std::optional(*logging_enabled) + : std::nullopt), + emulator_host_(emulator_host ? std::optional(*emulator_host) + : std::nullopt), + emulator_port_(emulator_port ? std::optional(*emulator_port) + : std::nullopt) {} const bool* DatabasePigeonSettings::persistence_enabled() const { return persistence_enabled_ ? &(*persistence_enabled_) : nullptr; } void DatabasePigeonSettings::set_persistence_enabled(const bool* value_arg) { - persistence_enabled_ = value_arg ? std::optional(*value_arg) : std::nullopt; + persistence_enabled_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void DatabasePigeonSettings::set_persistence_enabled(bool value_arg) { persistence_enabled_ = value_arg; } - const int64_t* DatabasePigeonSettings::cache_size_bytes() const { return cache_size_bytes_ ? &(*cache_size_bytes_) : nullptr; } void DatabasePigeonSettings::set_cache_size_bytes(const int64_t* value_arg) { - cache_size_bytes_ = value_arg ? std::optional(*value_arg) : std::nullopt; + cache_size_bytes_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void DatabasePigeonSettings::set_cache_size_bytes(int64_t value_arg) { cache_size_bytes_ = value_arg; } - const bool* DatabasePigeonSettings::logging_enabled() const { return logging_enabled_ ? &(*logging_enabled_) : nullptr; } @@ -85,49 +91,56 @@ void DatabasePigeonSettings::set_logging_enabled(bool value_arg) { logging_enabled_ = value_arg; } - const std::string* DatabasePigeonSettings::emulator_host() const { return emulator_host_ ? &(*emulator_host_) : nullptr; } -void DatabasePigeonSettings::set_emulator_host(const std::string_view* value_arg) { - emulator_host_ = value_arg ? std::optional(*value_arg) : std::nullopt; +void DatabasePigeonSettings::set_emulator_host( + const std::string_view* value_arg) { + emulator_host_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void DatabasePigeonSettings::set_emulator_host(std::string_view value_arg) { emulator_host_ = value_arg; } - const int64_t* DatabasePigeonSettings::emulator_port() const { return emulator_port_ ? &(*emulator_port_) : nullptr; } void DatabasePigeonSettings::set_emulator_port(const int64_t* value_arg) { - emulator_port_ = value_arg ? std::optional(*value_arg) : std::nullopt; + emulator_port_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void DatabasePigeonSettings::set_emulator_port(int64_t value_arg) { emulator_port_ = value_arg; } - EncodableList DatabasePigeonSettings::ToEncodableList() const { EncodableList list; list.reserve(5); - list.push_back(persistence_enabled_ ? EncodableValue(*persistence_enabled_) : EncodableValue()); - list.push_back(cache_size_bytes_ ? EncodableValue(*cache_size_bytes_) : EncodableValue()); - list.push_back(logging_enabled_ ? EncodableValue(*logging_enabled_) : EncodableValue()); - list.push_back(emulator_host_ ? EncodableValue(*emulator_host_) : EncodableValue()); - list.push_back(emulator_port_ ? EncodableValue(*emulator_port_) : EncodableValue()); + list.push_back(persistence_enabled_ ? EncodableValue(*persistence_enabled_) + : EncodableValue()); + list.push_back(cache_size_bytes_ ? EncodableValue(*cache_size_bytes_) + : EncodableValue()); + list.push_back(logging_enabled_ ? EncodableValue(*logging_enabled_) + : EncodableValue()); + list.push_back(emulator_host_ ? EncodableValue(*emulator_host_) + : EncodableValue()); + list.push_back(emulator_port_ ? EncodableValue(*emulator_port_) + : EncodableValue()); return list; } -DatabasePigeonSettings DatabasePigeonSettings::FromEncodableList(const EncodableList& list) { +DatabasePigeonSettings DatabasePigeonSettings::FromEncodableList( + const EncodableList& list) { DatabasePigeonSettings decoded; auto& encodable_persistence_enabled = list[0]; if (!encodable_persistence_enabled.IsNull()) { - decoded.set_persistence_enabled(std::get(encodable_persistence_enabled)); + decoded.set_persistence_enabled( + std::get(encodable_persistence_enabled)); } auto& encodable_cache_size_bytes = list[1]; if (!encodable_cache_size_bytes.IsNull()) { @@ -151,25 +164,29 @@ DatabasePigeonSettings DatabasePigeonSettings::FromEncodableList(const Encodable // DatabasePigeonFirebaseApp DatabasePigeonFirebaseApp::DatabasePigeonFirebaseApp( - const std::string& app_name, - const DatabasePigeonSettings& settings) - : app_name_(app_name), - settings_(std::make_unique(settings)) {} + const std::string& app_name, const DatabasePigeonSettings& settings) + : app_name_(app_name), + settings_(std::make_unique(settings)) {} DatabasePigeonFirebaseApp::DatabasePigeonFirebaseApp( - const std::string& app_name, - const std::string* database_u_r_l, - const DatabasePigeonSettings& settings) - : app_name_(app_name), - database_u_r_l_(database_u_r_l ? std::optional(*database_u_r_l) : std::nullopt), - settings_(std::make_unique(settings)) {} - -DatabasePigeonFirebaseApp::DatabasePigeonFirebaseApp(const DatabasePigeonFirebaseApp& other) - : app_name_(other.app_name_), - database_u_r_l_(other.database_u_r_l_ ? std::optional(*other.database_u_r_l_) : std::nullopt), - settings_(std::make_unique(*other.settings_)) {} - -DatabasePigeonFirebaseApp& DatabasePigeonFirebaseApp::operator=(const DatabasePigeonFirebaseApp& other) { + const std::string& app_name, const std::string* database_u_r_l, + const DatabasePigeonSettings& settings) + : app_name_(app_name), + database_u_r_l_(database_u_r_l + ? std::optional(*database_u_r_l) + : std::nullopt), + settings_(std::make_unique(settings)) {} + +DatabasePigeonFirebaseApp::DatabasePigeonFirebaseApp( + const DatabasePigeonFirebaseApp& other) + : app_name_(other.app_name_), + database_u_r_l_(other.database_u_r_l_ + ? std::optional(*other.database_u_r_l_) + : std::nullopt), + settings_(std::make_unique(*other.settings_)) {} + +DatabasePigeonFirebaseApp& DatabasePigeonFirebaseApp::operator=( + const DatabasePigeonFirebaseApp& other) { app_name_ = other.app_name_; database_u_r_l_ = other.database_u_r_l_; settings_ = std::make_unique(*other.settings_); @@ -184,42 +201,45 @@ void DatabasePigeonFirebaseApp::set_app_name(std::string_view value_arg) { app_name_ = value_arg; } - const std::string* DatabasePigeonFirebaseApp::database_u_r_l() const { return database_u_r_l_ ? &(*database_u_r_l_) : nullptr; } -void DatabasePigeonFirebaseApp::set_database_u_r_l(const std::string_view* value_arg) { - database_u_r_l_ = value_arg ? std::optional(*value_arg) : std::nullopt; +void DatabasePigeonFirebaseApp::set_database_u_r_l( + const std::string_view* value_arg) { + database_u_r_l_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void DatabasePigeonFirebaseApp::set_database_u_r_l(std::string_view value_arg) { database_u_r_l_ = value_arg; } - const DatabasePigeonSettings& DatabasePigeonFirebaseApp::settings() const { return *settings_; } -void DatabasePigeonFirebaseApp::set_settings(const DatabasePigeonSettings& value_arg) { +void DatabasePigeonFirebaseApp::set_settings( + const DatabasePigeonSettings& value_arg) { settings_ = std::make_unique(value_arg); } - EncodableList DatabasePigeonFirebaseApp::ToEncodableList() const { EncodableList list; list.reserve(3); list.push_back(EncodableValue(app_name_)); - list.push_back(database_u_r_l_ ? EncodableValue(*database_u_r_l_) : EncodableValue()); + list.push_back(database_u_r_l_ ? EncodableValue(*database_u_r_l_) + : EncodableValue()); list.push_back(CustomEncodableValue(*settings_)); return list; } -DatabasePigeonFirebaseApp DatabasePigeonFirebaseApp::FromEncodableList(const EncodableList& list) { +DatabasePigeonFirebaseApp DatabasePigeonFirebaseApp::FromEncodableList( + const EncodableList& list) { DatabasePigeonFirebaseApp decoded( - std::get(list[0]), - std::any_cast(std::get(list[2]))); + std::get(list[0]), + std::any_cast( + std::get(list[2]))); auto& encodable_database_u_r_l = list[1]; if (!encodable_database_u_r_l.IsNull()) { decoded.set_database_u_r_l(std::get(encodable_database_u_r_l)); @@ -230,17 +250,14 @@ DatabasePigeonFirebaseApp DatabasePigeonFirebaseApp::FromEncodableList(const Enc // DatabaseReferencePlatform DatabaseReferencePlatform::DatabaseReferencePlatform(const std::string& path) - : path_(path) {} + : path_(path) {} -const std::string& DatabaseReferencePlatform::path() const { - return path_; -} +const std::string& DatabaseReferencePlatform::path() const { return path_; } void DatabaseReferencePlatform::set_path(std::string_view value_arg) { path_ = value_arg; } - EncodableList DatabaseReferencePlatform::ToEncodableList() const { EncodableList list; list.reserve(1); @@ -248,34 +265,31 @@ EncodableList DatabaseReferencePlatform::ToEncodableList() const { return list; } -DatabaseReferencePlatform DatabaseReferencePlatform::FromEncodableList(const EncodableList& list) { - DatabaseReferencePlatform decoded( - std::get(list[0])); +DatabaseReferencePlatform DatabaseReferencePlatform::FromEncodableList( + const EncodableList& list) { + DatabaseReferencePlatform decoded(std::get(list[0])); return decoded; } // DatabaseReferenceRequest DatabaseReferenceRequest::DatabaseReferenceRequest(const std::string& path) - : path_(path) {} + : path_(path) {} DatabaseReferenceRequest::DatabaseReferenceRequest( - const std::string& path, - const EncodableValue* value, - const EncodableValue* priority) - : path_(path), - value_(value ? std::optional(*value) : std::nullopt), - priority_(priority ? std::optional(*priority) : std::nullopt) {} + const std::string& path, const EncodableValue* value, + const EncodableValue* priority) + : path_(path), + value_(value ? std::optional(*value) : std::nullopt), + priority_(priority ? std::optional(*priority) + : std::nullopt) {} -const std::string& DatabaseReferenceRequest::path() const { - return path_; -} +const std::string& DatabaseReferenceRequest::path() const { return path_; } void DatabaseReferenceRequest::set_path(std::string_view value_arg) { path_ = value_arg; } - const EncodableValue* DatabaseReferenceRequest::value() const { return value_ ? &(*value_) : nullptr; } @@ -288,20 +302,19 @@ void DatabaseReferenceRequest::set_value(const EncodableValue& value_arg) { value_ = value_arg; } - const EncodableValue* DatabaseReferenceRequest::priority() const { return priority_ ? &(*priority_) : nullptr; } void DatabaseReferenceRequest::set_priority(const EncodableValue* value_arg) { - priority_ = value_arg ? std::optional(*value_arg) : std::nullopt; + priority_ = + value_arg ? std::optional(*value_arg) : std::nullopt; } void DatabaseReferenceRequest::set_priority(const EncodableValue& value_arg) { priority_ = value_arg; } - EncodableList DatabaseReferenceRequest::ToEncodableList() const { EncodableList list; list.reserve(3); @@ -311,9 +324,9 @@ EncodableList DatabaseReferenceRequest::ToEncodableList() const { return list; } -DatabaseReferenceRequest DatabaseReferenceRequest::FromEncodableList(const EncodableList& list) { - DatabaseReferenceRequest decoded( - std::get(list[0])); +DatabaseReferenceRequest DatabaseReferenceRequest::FromEncodableList( + const EncodableList& list) { + DatabaseReferenceRequest decoded(std::get(list[0])); auto& encodable_value = list[1]; if (!encodable_value.IsNull()) { decoded.set_value(encodable_value); @@ -327,30 +340,19 @@ DatabaseReferenceRequest DatabaseReferenceRequest::FromEncodableList(const Encod // UpdateRequest -UpdateRequest::UpdateRequest( - const std::string& path, - const EncodableMap& value) - : path_(path), - value_(value) {} +UpdateRequest::UpdateRequest(const std::string& path, const EncodableMap& value) + : path_(path), value_(value) {} -const std::string& UpdateRequest::path() const { - return path_; -} +const std::string& UpdateRequest::path() const { return path_; } -void UpdateRequest::set_path(std::string_view value_arg) { - path_ = value_arg; -} +void UpdateRequest::set_path(std::string_view value_arg) { path_ = value_arg; } - -const EncodableMap& UpdateRequest::value() const { - return value_; -} +const EncodableMap& UpdateRequest::value() const { return value_; } void UpdateRequest::set_value(const EncodableMap& value_arg) { value_ = value_arg; } - EncodableList UpdateRequest::ToEncodableList() const { EncodableList list; list.reserve(2); @@ -360,49 +362,38 @@ EncodableList UpdateRequest::ToEncodableList() const { } UpdateRequest UpdateRequest::FromEncodableList(const EncodableList& list) { - UpdateRequest decoded( - std::get(list[0]), - std::get(list[1])); + UpdateRequest decoded(std::get(list[0]), + std::get(list[1])); return decoded; } // TransactionRequest -TransactionRequest::TransactionRequest( - const std::string& path, - int64_t transaction_key, - bool apply_locally) - : path_(path), - transaction_key_(transaction_key), - apply_locally_(apply_locally) {} +TransactionRequest::TransactionRequest(const std::string& path, + int64_t transaction_key, + bool apply_locally) + : path_(path), + transaction_key_(transaction_key), + apply_locally_(apply_locally) {} -const std::string& TransactionRequest::path() const { - return path_; -} +const std::string& TransactionRequest::path() const { return path_; } void TransactionRequest::set_path(std::string_view value_arg) { path_ = value_arg; } - -int64_t TransactionRequest::transaction_key() const { - return transaction_key_; -} +int64_t TransactionRequest::transaction_key() const { return transaction_key_; } void TransactionRequest::set_transaction_key(int64_t value_arg) { transaction_key_ = value_arg; } - -bool TransactionRequest::apply_locally() const { - return apply_locally_; -} +bool TransactionRequest::apply_locally() const { return apply_locally_; } void TransactionRequest::set_apply_locally(bool value_arg) { apply_locally_ = value_arg; } - EncodableList TransactionRequest::ToEncodableList() const { EncodableList list; list.reserve(3); @@ -412,48 +403,36 @@ EncodableList TransactionRequest::ToEncodableList() const { return list; } -TransactionRequest TransactionRequest::FromEncodableList(const EncodableList& list) { - TransactionRequest decoded( - std::get(list[0]), - std::get(list[1]), - std::get(list[2])); +TransactionRequest TransactionRequest::FromEncodableList( + const EncodableList& list) { + TransactionRequest decoded(std::get(list[0]), + std::get(list[1]), + std::get(list[2])); return decoded; } // QueryRequest -QueryRequest::QueryRequest( - const std::string& path, - const EncodableList& modifiers) - : path_(path), - modifiers_(modifiers) {} +QueryRequest::QueryRequest(const std::string& path, + const EncodableList& modifiers) + : path_(path), modifiers_(modifiers) {} -QueryRequest::QueryRequest( - const std::string& path, - const EncodableList& modifiers, - const bool* value) - : path_(path), - modifiers_(modifiers), - value_(value ? std::optional(*value) : std::nullopt) {} +QueryRequest::QueryRequest(const std::string& path, + const EncodableList& modifiers, const bool* value) + : path_(path), + modifiers_(modifiers), + value_(value ? std::optional(*value) : std::nullopt) {} -const std::string& QueryRequest::path() const { - return path_; -} +const std::string& QueryRequest::path() const { return path_; } -void QueryRequest::set_path(std::string_view value_arg) { - path_ = value_arg; -} +void QueryRequest::set_path(std::string_view value_arg) { path_ = value_arg; } - -const EncodableList& QueryRequest::modifiers() const { - return modifiers_; -} +const EncodableList& QueryRequest::modifiers() const { return modifiers_; } void QueryRequest::set_modifiers(const EncodableList& value_arg) { modifiers_ = value_arg; } - const bool* QueryRequest::value() const { return value_ ? &(*value_) : nullptr; } @@ -462,10 +441,7 @@ void QueryRequest::set_value(const bool* value_arg) { value_ = value_arg ? std::optional(*value_arg) : std::nullopt; } -void QueryRequest::set_value(bool value_arg) { - value_ = value_arg; -} - +void QueryRequest::set_value(bool value_arg) { value_ = value_arg; } EncodableList QueryRequest::ToEncodableList() const { EncodableList list; @@ -477,9 +453,8 @@ EncodableList QueryRequest::ToEncodableList() const { } QueryRequest QueryRequest::FromEncodableList(const EncodableList& list) { - QueryRequest decoded( - std::get(list[0]), - std::get(list[1])); + QueryRequest decoded(std::get(list[0]), + std::get(list[1])); auto& encodable_value = list[2]; if (!encodable_value.IsNull()) { decoded.set_value(std::get(encodable_value)); @@ -489,19 +464,14 @@ QueryRequest QueryRequest::FromEncodableList(const EncodableList& list) { // TransactionHandlerResult -TransactionHandlerResult::TransactionHandlerResult( - bool aborted, - bool exception) - : aborted_(aborted), - exception_(exception) {} +TransactionHandlerResult::TransactionHandlerResult(bool aborted, bool exception) + : aborted_(aborted), exception_(exception) {} -TransactionHandlerResult::TransactionHandlerResult( - const EncodableValue* value, - bool aborted, - bool exception) - : value_(value ? std::optional(*value) : std::nullopt), - aborted_(aborted), - exception_(exception) {} +TransactionHandlerResult::TransactionHandlerResult(const EncodableValue* value, + bool aborted, bool exception) + : value_(value ? std::optional(*value) : std::nullopt), + aborted_(aborted), + exception_(exception) {} const EncodableValue* TransactionHandlerResult::value() const { return value_ ? &(*value_) : nullptr; @@ -515,25 +485,18 @@ void TransactionHandlerResult::set_value(const EncodableValue& value_arg) { value_ = value_arg; } - -bool TransactionHandlerResult::aborted() const { - return aborted_; -} +bool TransactionHandlerResult::aborted() const { return aborted_; } void TransactionHandlerResult::set_aborted(bool value_arg) { aborted_ = value_arg; } - -bool TransactionHandlerResult::exception() const { - return exception_; -} +bool TransactionHandlerResult::exception() const { return exception_; } void TransactionHandlerResult::set_exception(bool value_arg) { exception_ = value_arg; } - EncodableList TransactionHandlerResult::ToEncodableList() const { EncodableList list; list.reserve(3); @@ -543,10 +506,10 @@ EncodableList TransactionHandlerResult::ToEncodableList() const { return list; } -TransactionHandlerResult TransactionHandlerResult::FromEncodableList(const EncodableList& list) { - TransactionHandlerResult decoded( - std::get(list[1]), - std::get(list[2])); +TransactionHandlerResult TransactionHandlerResult::FromEncodableList( + const EncodableList& list) { + TransactionHandlerResult decoded(std::get(list[1]), + std::get(list[2])); auto& encodable_value = list[0]; if (!encodable_value.IsNull()) { decoded.set_value(encodable_value); @@ -554,84 +517,113 @@ TransactionHandlerResult TransactionHandlerResult::FromEncodableList(const Encod return decoded; } - PigeonInternalCodecSerializer::PigeonInternalCodecSerializer() {} EncodableValue PigeonInternalCodecSerializer::ReadValueOfType( - uint8_t type, - flutter::ByteStreamReader* stream) const { + uint8_t type, flutter::ByteStreamReader* stream) const { switch (type) { case 129: { - return CustomEncodableValue(DatabasePigeonSettings::FromEncodableList(std::get(ReadValue(stream)))); - } + return CustomEncodableValue(DatabasePigeonSettings::FromEncodableList( + std::get(ReadValue(stream)))); + } case 130: { - return CustomEncodableValue(DatabasePigeonFirebaseApp::FromEncodableList(std::get(ReadValue(stream)))); - } + return CustomEncodableValue(DatabasePigeonFirebaseApp::FromEncodableList( + std::get(ReadValue(stream)))); + } case 131: { - return CustomEncodableValue(DatabaseReferencePlatform::FromEncodableList(std::get(ReadValue(stream)))); - } + return CustomEncodableValue(DatabaseReferencePlatform::FromEncodableList( + std::get(ReadValue(stream)))); + } case 132: { - return CustomEncodableValue(DatabaseReferenceRequest::FromEncodableList(std::get(ReadValue(stream)))); - } + return CustomEncodableValue(DatabaseReferenceRequest::FromEncodableList( + std::get(ReadValue(stream)))); + } case 133: { - return CustomEncodableValue(UpdateRequest::FromEncodableList(std::get(ReadValue(stream)))); - } + return CustomEncodableValue(UpdateRequest::FromEncodableList( + std::get(ReadValue(stream)))); + } case 134: { - return CustomEncodableValue(TransactionRequest::FromEncodableList(std::get(ReadValue(stream)))); - } + return CustomEncodableValue(TransactionRequest::FromEncodableList( + std::get(ReadValue(stream)))); + } case 135: { - return CustomEncodableValue(QueryRequest::FromEncodableList(std::get(ReadValue(stream)))); - } + return CustomEncodableValue(QueryRequest::FromEncodableList( + std::get(ReadValue(stream)))); + } case 136: { - return CustomEncodableValue(TransactionHandlerResult::FromEncodableList(std::get(ReadValue(stream)))); - } + return CustomEncodableValue(TransactionHandlerResult::FromEncodableList( + std::get(ReadValue(stream)))); + } default: return flutter::StandardCodecSerializer::ReadValueOfType(type, stream); - } + } } void PigeonInternalCodecSerializer::WriteValue( - const EncodableValue& value, - flutter::ByteStreamWriter* stream) const { - if (const CustomEncodableValue* custom_value = std::get_if(&value)) { + const EncodableValue& value, flutter::ByteStreamWriter* stream) const { + if (const CustomEncodableValue* custom_value = + std::get_if(&value)) { if (custom_value->type() == typeid(DatabasePigeonSettings)) { stream->WriteByte(129); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(DatabasePigeonFirebaseApp)) { stream->WriteByte(130); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(DatabaseReferencePlatform)) { stream->WriteByte(131); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(DatabaseReferenceRequest)) { stream->WriteByte(132); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(UpdateRequest)) { stream->WriteByte(133); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue( + std::any_cast(*custom_value).ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(TransactionRequest)) { stream->WriteByte(134); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue(EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(QueryRequest)) { stream->WriteByte(135); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue( + std::any_cast(*custom_value).ToEncodableList()), + stream); return; } if (custom_value->type() == typeid(TransactionHandlerResult)) { stream->WriteByte(136); - WriteValue(EncodableValue(std::any_cast(*custom_value).ToEncodableList()), stream); + WriteValue( + EncodableValue(std::any_cast(*custom_value) + .ToEncodableList()), + stream); return; } } @@ -640,834 +632,1111 @@ void PigeonInternalCodecSerializer::WriteValue( /// The codec used by FirebaseDatabaseHostApi. const flutter::StandardMessageCodec& FirebaseDatabaseHostApi::GetCodec() { - return flutter::StandardMessageCodec::GetInstance(&PigeonInternalCodecSerializer::GetInstance()); + return flutter::StandardMessageCodec::GetInstance( + &PigeonInternalCodecSerializer::GetInstance()); } -// Sets up an instance of `FirebaseDatabaseHostApi` to handle messages through the `binary_messenger`. -void FirebaseDatabaseHostApi::SetUp( - flutter::BinaryMessenger* binary_messenger, - FirebaseDatabaseHostApi* api) { +// Sets up an instance of `FirebaseDatabaseHostApi` to handle messages through +// the `binary_messenger`. +void FirebaseDatabaseHostApi::SetUp(flutter::BinaryMessenger* binary_messenger, + FirebaseDatabaseHostApi* api) { FirebaseDatabaseHostApi::SetUp(binary_messenger, api, ""); } -void FirebaseDatabaseHostApi::SetUp( - flutter::BinaryMessenger* binary_messenger, - FirebaseDatabaseHostApi* api, - const std::string& message_channel_suffix) { - const std::string prepended_suffix = message_channel_suffix.length() > 0 ? std::string(".") + message_channel_suffix : ""; +void FirebaseDatabaseHostApi::SetUp(flutter::BinaryMessenger* binary_messenger, + FirebaseDatabaseHostApi* api, + const std::string& message_channel_suffix) { + const std::string prepended_suffix = + message_channel_suffix.length() > 0 + ? std::string(".") + message_channel_suffix + : ""; { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.goOnline" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - api->GoOnline(app_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + api->GoOnline(app_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.goOffline" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - api->GoOffline(app_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + api->GoOffline(app_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.setPersistenceEnabled" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_enabled_arg = args.at(1); - if (encodable_enabled_arg.IsNull()) { - reply(WrapError("enabled_arg unexpectedly null.")); - return; - } - const auto& enabled_arg = std::get(encodable_enabled_arg); - api->SetPersistenceEnabled(app_arg, enabled_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_enabled_arg = args.at(1); + if (encodable_enabled_arg.IsNull()) { + reply(WrapError("enabled_arg unexpectedly null.")); + return; + } + const auto& enabled_arg = std::get(encodable_enabled_arg); + api->SetPersistenceEnabled( + app_arg, enabled_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_cache_size_arg = args.at(1); - if (encodable_cache_size_arg.IsNull()) { - reply(WrapError("cache_size_arg unexpectedly null.")); - return; - } - const int64_t cache_size_arg = encodable_cache_size_arg.LongValue(); - api->SetPersistenceCacheSizeBytes(app_arg, cache_size_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_cache_size_arg = args.at(1); + if (encodable_cache_size_arg.IsNull()) { + reply(WrapError("cache_size_arg unexpectedly null.")); + return; + } + const int64_t cache_size_arg = + encodable_cache_size_arg.LongValue(); + api->SetPersistenceCacheSizeBytes( + app_arg, cache_size_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.setLoggingEnabled" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_enabled_arg = args.at(1); - if (encodable_enabled_arg.IsNull()) { - reply(WrapError("enabled_arg unexpectedly null.")); - return; - } - const auto& enabled_arg = std::get(encodable_enabled_arg); - api->SetLoggingEnabled(app_arg, enabled_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_enabled_arg = args.at(1); + if (encodable_enabled_arg.IsNull()) { + reply(WrapError("enabled_arg unexpectedly null.")); + return; + } + const auto& enabled_arg = std::get(encodable_enabled_arg); + api->SetLoggingEnabled( + app_arg, enabled_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.useDatabaseEmulator" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_host_arg = args.at(1); - if (encodable_host_arg.IsNull()) { - reply(WrapError("host_arg unexpectedly null.")); - return; - } - const auto& host_arg = std::get(encodable_host_arg); - const auto& encodable_port_arg = args.at(2); - if (encodable_port_arg.IsNull()) { - reply(WrapError("port_arg unexpectedly null.")); - return; - } - const int64_t port_arg = encodable_port_arg.LongValue(); - api->UseDatabaseEmulator(app_arg, host_arg, port_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_host_arg = args.at(1); + if (encodable_host_arg.IsNull()) { + reply(WrapError("host_arg unexpectedly null.")); + return; + } + const auto& host_arg = std::get(encodable_host_arg); + const auto& encodable_port_arg = args.at(2); + if (encodable_port_arg.IsNull()) { + reply(WrapError("port_arg unexpectedly null.")); + return; + } + const int64_t port_arg = encodable_port_arg.LongValue(); + api->UseDatabaseEmulator( + app_arg, host_arg, port_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.ref" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_path_arg = args.at(1); - const auto* path_arg = std::get_if(&encodable_path_arg); - api->Ref(app_arg, path_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_path_arg = args.at(1); + const auto* path_arg = + std::get_if(&encodable_path_arg); + api->Ref(app_arg, path_arg, + [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back(CustomEncodableValue( + std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(CustomEncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.refFromURL" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_url_arg = args.at(1); - if (encodable_url_arg.IsNull()) { - reply(WrapError("url_arg unexpectedly null.")); - return; - } - const auto& url_arg = std::get(encodable_url_arg); - api->RefFromURL(app_arg, url_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_url_arg = args.at(1); + if (encodable_url_arg.IsNull()) { + reply(WrapError("url_arg unexpectedly null.")); + return; + } + const auto& url_arg = std::get(encodable_url_arg); + api->RefFromURL( + app_arg, url_arg, + [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back( + CustomEncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(CustomEncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.purgeOutstandingWrites" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - api->PurgeOutstandingWrites(app_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + api->PurgeOutstandingWrites( + app_arg, [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.databaseReferenceSet" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->DatabaseReferenceSet(app_arg, request_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = + std::any_cast( + std::get(encodable_request_arg)); + api->DatabaseReferenceSet( + app_arg, request_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.databaseReferenceSetWithPriority" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->DatabaseReferenceSetWithPriority(app_arg, request_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = + std::any_cast( + std::get(encodable_request_arg)); + api->DatabaseReferenceSetWithPriority( + app_arg, request_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.databaseReferenceUpdate" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->DatabaseReferenceUpdate(app_arg, request_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast( + std::get(encodable_request_arg)); + api->DatabaseReferenceUpdate( + app_arg, request_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.databaseReferenceSetPriority" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->DatabaseReferenceSetPriority(app_arg, request_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = + std::any_cast( + std::get(encodable_request_arg)); + api->DatabaseReferenceSetPriority( + app_arg, request_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.databaseReferenceRunTransaction" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->DatabaseReferenceRunTransaction(app_arg, request_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = + std::any_cast( + std::get(encodable_request_arg)); + api->DatabaseReferenceRunTransaction( + app_arg, request_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_transaction_key_arg = args.at(1); - if (encodable_transaction_key_arg.IsNull()) { - reply(WrapError("transaction_key_arg unexpectedly null.")); - return; - } - const int64_t transaction_key_arg = encodable_transaction_key_arg.LongValue(); - api->DatabaseReferenceGetTransactionResult(app_arg, transaction_key_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_transaction_key_arg = args.at(1); + if (encodable_transaction_key_arg.IsNull()) { + reply(WrapError("transaction_key_arg unexpectedly null.")); + return; + } + const int64_t transaction_key_arg = + encodable_transaction_key_arg.LongValue(); + api->DatabaseReferenceGetTransactionResult( + app_arg, transaction_key_arg, + [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back( + EncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.onDisconnectSet" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->OnDisconnectSet(app_arg, request_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = + std::any_cast( + std::get(encodable_request_arg)); + api->OnDisconnectSet( + app_arg, request_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.onDisconnectSetWithPriority" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->OnDisconnectSetWithPriority(app_arg, request_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = + std::any_cast( + std::get(encodable_request_arg)); + api->OnDisconnectSetWithPriority( + app_arg, request_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.onDisconnectUpdate" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->OnDisconnectUpdate(app_arg, request_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast( + std::get(encodable_request_arg)); + api->OnDisconnectUpdate( + app_arg, request_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.onDisconnectCancel" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_path_arg = args.at(1); - if (encodable_path_arg.IsNull()) { - reply(WrapError("path_arg unexpectedly null.")); - return; - } - const auto& path_arg = std::get(encodable_path_arg); - api->OnDisconnectCancel(app_arg, path_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_path_arg = args.at(1); + if (encodable_path_arg.IsNull()) { + reply(WrapError("path_arg unexpectedly null.")); + return; + } + const auto& path_arg = std::get(encodable_path_arg); + api->OnDisconnectCancel( + app_arg, path_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.queryObserve" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->QueryObserve(app_arg, request_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast( + std::get(encodable_request_arg)); + api->QueryObserve( + app_arg, request_arg, [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back( + EncodableValue(std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.queryKeepSynced" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->QueryKeepSynced(app_arg, request_arg, [reply](std::optional&& output) { - if (output.has_value()) { - reply(WrapError(output.value())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast( + std::get(encodable_request_arg)); + api->QueryKeepSynced( + app_arg, request_arg, + [reply](std::optional&& output) { + if (output.has_value()) { + reply(WrapError(output.value())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue()); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue()); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } { - BasicMessageChannel<> channel(binary_messenger, "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet" + prepended_suffix, &GetCodec()); + BasicMessageChannel<> channel( + binary_messenger, + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseHostApi.queryGet" + + prepended_suffix, + &GetCodec()); if (api != nullptr) { - channel.SetMessageHandler([api](const EncodableValue& message, const flutter::MessageReply& reply) { - try { - const auto& args = std::get(message); - const auto& encodable_app_arg = args.at(0); - if (encodable_app_arg.IsNull()) { - reply(WrapError("app_arg unexpectedly null.")); - return; - } - const auto& app_arg = std::any_cast(std::get(encodable_app_arg)); - const auto& encodable_request_arg = args.at(1); - if (encodable_request_arg.IsNull()) { - reply(WrapError("request_arg unexpectedly null.")); - return; - } - const auto& request_arg = std::any_cast(std::get(encodable_request_arg)); - api->QueryGet(app_arg, request_arg, [reply](ErrorOr&& output) { - if (output.has_error()) { - reply(WrapError(output.error())); - return; + channel.SetMessageHandler( + [api](const EncodableValue& message, + const flutter::MessageReply& reply) { + try { + const auto& args = std::get(message); + const auto& encodable_app_arg = args.at(0); + if (encodable_app_arg.IsNull()) { + reply(WrapError("app_arg unexpectedly null.")); + return; + } + const auto& app_arg = + std::any_cast( + std::get(encodable_app_arg)); + const auto& encodable_request_arg = args.at(1); + if (encodable_request_arg.IsNull()) { + reply(WrapError("request_arg unexpectedly null.")); + return; + } + const auto& request_arg = std::any_cast( + std::get(encodable_request_arg)); + api->QueryGet(app_arg, request_arg, + [reply](ErrorOr&& output) { + if (output.has_error()) { + reply(WrapError(output.error())); + return; + } + EncodableList wrapped; + wrapped.push_back(EncodableValue( + std::move(output).TakeValue())); + reply(EncodableValue(std::move(wrapped))); + }); + } catch (const std::exception& exception) { + reply(WrapError(exception.what())); } - EncodableList wrapped; - wrapped.push_back(EncodableValue(std::move(output).TakeValue())); - reply(EncodableValue(std::move(wrapped))); }); - } catch (const std::exception& exception) { - reply(WrapError(exception.what())); - } - }); } else { channel.SetMessageHandler(nullptr); } } } -EncodableValue FirebaseDatabaseHostApi::WrapError(std::string_view error_message) { - return EncodableValue(EncodableList{ - EncodableValue(std::string(error_message)), - EncodableValue("Error"), - EncodableValue() - }); +EncodableValue FirebaseDatabaseHostApi::WrapError( + std::string_view error_message) { + return EncodableValue( + EncodableList{EncodableValue(std::string(error_message)), + EncodableValue("Error"), EncodableValue()}); } EncodableValue FirebaseDatabaseHostApi::WrapError(const FlutterError& error) { - return EncodableValue(EncodableList{ - EncodableValue(error.code()), - EncodableValue(error.message()), - error.details() - }); + return EncodableValue(EncodableList{EncodableValue(error.code()), + EncodableValue(error.message()), + error.details()}); } -// Generated class from Pigeon that represents Flutter messages that can be called from C++. -FirebaseDatabaseFlutterApi::FirebaseDatabaseFlutterApi(flutter::BinaryMessenger* binary_messenger) - : binary_messenger_(binary_messenger), - message_channel_suffix_("") {} +// Generated class from Pigeon that represents Flutter messages that can be +// called from C++. +FirebaseDatabaseFlutterApi::FirebaseDatabaseFlutterApi( + flutter::BinaryMessenger* binary_messenger) + : binary_messenger_(binary_messenger), message_channel_suffix_("") {} FirebaseDatabaseFlutterApi::FirebaseDatabaseFlutterApi( - flutter::BinaryMessenger* binary_messenger, - const std::string& message_channel_suffix) - : binary_messenger_(binary_messenger), - message_channel_suffix_(message_channel_suffix.length() > 0 ? std::string(".") + message_channel_suffix : "") {} + flutter::BinaryMessenger* binary_messenger, + const std::string& message_channel_suffix) + : binary_messenger_(binary_messenger), + message_channel_suffix_(message_channel_suffix.length() > 0 + ? std::string(".") + message_channel_suffix + : "") {} const flutter::StandardMessageCodec& FirebaseDatabaseFlutterApi::GetCodec() { - return flutter::StandardMessageCodec::GetInstance(&PigeonInternalCodecSerializer::GetInstance()); + return flutter::StandardMessageCodec::GetInstance( + &PigeonInternalCodecSerializer::GetInstance()); } void FirebaseDatabaseFlutterApi::CallTransactionHandler( - int64_t transaction_key_arg, - const EncodableValue* snapshot_value_arg, - std::function&& on_success, - std::function&& on_error) { - const std::string channel_name = "dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler" + message_channel_suffix_; + int64_t transaction_key_arg, const EncodableValue* snapshot_value_arg, + std::function&& on_success, + std::function&& on_error) { + const std::string channel_name = + "dev.flutter.pigeon.firebase_database_platform_interface." + "FirebaseDatabaseFlutterApi.callTransactionHandler" + + message_channel_suffix_; BasicMessageChannel<> channel(binary_messenger_, channel_name, &GetCodec()); EncodableValue encoded_api_arguments = EncodableValue(EncodableList{ - EncodableValue(transaction_key_arg), - snapshot_value_arg ? *snapshot_value_arg : EncodableValue(), - }); - channel.Send(encoded_api_arguments, [channel_name, on_success = std::move(on_success), on_error = std::move(on_error)](const uint8_t* reply, size_t reply_size) { - std::unique_ptr response = GetCodec().DecodeMessage(reply, reply_size); - const auto& encodable_return_value = *response; - const auto* list_return_value = std::get_if(&encodable_return_value); - if (list_return_value) { - if (list_return_value->size() > 1) { - on_error(FlutterError(std::get(list_return_value->at(0)), std::get(list_return_value->at(1)), list_return_value->at(2))); - } else { - const auto& return_value = std::any_cast(std::get(list_return_value->at(0))); - on_success(return_value); - } - } else { - on_error(CreateConnectionError(channel_name)); - } + EncodableValue(transaction_key_arg), + snapshot_value_arg ? *snapshot_value_arg : EncodableValue(), }); + channel.Send( + encoded_api_arguments, [channel_name, on_success = std::move(on_success), + on_error = std::move(on_error)]( + const uint8_t* reply, size_t reply_size) { + std::unique_ptr response = + GetCodec().DecodeMessage(reply, reply_size); + const auto& encodable_return_value = *response; + const auto* list_return_value = + std::get_if(&encodable_return_value); + if (list_return_value) { + if (list_return_value->size() > 1) { + on_error( + FlutterError(std::get(list_return_value->at(0)), + std::get(list_return_value->at(1)), + list_return_value->at(2))); + } else { + const auto& return_value = + std::any_cast( + std::get(list_return_value->at(0))); + on_success(return_value); + } + } else { + on_error(CreateConnectionError(channel_name)); + } + }); } } // namespace firebase_database_windows diff --git a/packages/firebase_database/firebase_database/windows/messages.g.h b/packages/firebase_database/firebase_database/windows/messages.g.h index 6089fec54c1a..0a44f40b593f 100644 --- a/packages/firebase_database/firebase_database/windows/messages.g.h +++ b/packages/firebase_database/firebase_database/windows/messages.g.h @@ -17,17 +17,16 @@ namespace firebase_database_windows { - // Generated class from Pigeon. class FlutterError { public: - explicit FlutterError(const std::string& code) - : code_(code) {} + explicit FlutterError(const std::string& code) : code_(code) {} explicit FlutterError(const std::string& code, const std::string& message) - : code_(code), message_(message) {} - explicit FlutterError(const std::string& code, const std::string& message, const flutter::EncodableValue& details) - : code_(code), message_(message), details_(details) {} + : code_(code), message_(message) {} + explicit FlutterError(const std::string& code, const std::string& message, + const flutter::EncodableValue& details) + : code_(code), message_(message), details_(details) {} const std::string& code() const { return code_; } const std::string& message() const { return message_; } @@ -39,7 +38,8 @@ class FlutterError { flutter::EncodableValue details_; }; -template class ErrorOr { +template +class ErrorOr { public: ErrorOr(const T& rhs) : v_(rhs) {} ErrorOr(const T&& rhs) : v_(std::move(rhs)) {} @@ -59,8 +59,6 @@ template class ErrorOr { std::variant v_; }; - - // Generated class from Pigeon that represents data sent in messages. class DatabasePigeonSettings { public: @@ -68,12 +66,11 @@ class DatabasePigeonSettings { DatabasePigeonSettings(); // Constructs an object setting all fields. - explicit DatabasePigeonSettings( - const bool* persistence_enabled, - const int64_t* cache_size_bytes, - const bool* logging_enabled, - const std::string* emulator_host, - const int64_t* emulator_port); + explicit DatabasePigeonSettings(const bool* persistence_enabled, + const int64_t* cache_size_bytes, + const bool* logging_enabled, + const std::string* emulator_host, + const int64_t* emulator_port); const bool* persistence_enabled() const; void set_persistence_enabled(const bool* value_arg); @@ -96,7 +93,8 @@ class DatabasePigeonSettings { void set_emulator_port(int64_t value_arg); private: - static DatabasePigeonSettings FromEncodableList(const flutter::EncodableList& list); + static DatabasePigeonSettings FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class DatabasePigeonFirebaseApp; friend class FirebaseDatabaseHostApi; @@ -109,26 +107,24 @@ class DatabasePigeonSettings { std::optional emulator_port_; }; - // Generated class from Pigeon that represents data sent in messages. class DatabasePigeonFirebaseApp { public: // Constructs an object setting all non-nullable fields. - explicit DatabasePigeonFirebaseApp( - const std::string& app_name, - const DatabasePigeonSettings& settings); + explicit DatabasePigeonFirebaseApp(const std::string& app_name, + const DatabasePigeonSettings& settings); // Constructs an object setting all fields. - explicit DatabasePigeonFirebaseApp( - const std::string& app_name, - const std::string* database_u_r_l, - const DatabasePigeonSettings& settings); + explicit DatabasePigeonFirebaseApp(const std::string& app_name, + const std::string* database_u_r_l, + const DatabasePigeonSettings& settings); ~DatabasePigeonFirebaseApp() = default; DatabasePigeonFirebaseApp(const DatabasePigeonFirebaseApp& other); DatabasePigeonFirebaseApp& operator=(const DatabasePigeonFirebaseApp& other); DatabasePigeonFirebaseApp(DatabasePigeonFirebaseApp&& other) = default; - DatabasePigeonFirebaseApp& operator=(DatabasePigeonFirebaseApp&& other) noexcept = default; + DatabasePigeonFirebaseApp& operator=( + DatabasePigeonFirebaseApp&& other) noexcept = default; const std::string& app_name() const; void set_app_name(std::string_view value_arg); @@ -140,7 +136,8 @@ class DatabasePigeonFirebaseApp { void set_settings(const DatabasePigeonSettings& value_arg); private: - static DatabasePigeonFirebaseApp FromEncodableList(const flutter::EncodableList& list); + static DatabasePigeonFirebaseApp FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class FirebaseDatabaseHostApi; friend class FirebaseDatabaseFlutterApi; @@ -150,7 +147,6 @@ class DatabasePigeonFirebaseApp { std::unique_ptr settings_; }; - // Generated class from Pigeon that represents data sent in messages. class DatabaseReferencePlatform { public: @@ -161,7 +157,8 @@ class DatabaseReferencePlatform { void set_path(std::string_view value_arg); private: - static DatabaseReferencePlatform FromEncodableList(const flutter::EncodableList& list); + static DatabaseReferencePlatform FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class FirebaseDatabaseHostApi; friend class FirebaseDatabaseFlutterApi; @@ -169,7 +166,6 @@ class DatabaseReferencePlatform { std::string path_; }; - // Generated class from Pigeon that represents data sent in messages. class DatabaseReferenceRequest { public: @@ -177,10 +173,9 @@ class DatabaseReferenceRequest { explicit DatabaseReferenceRequest(const std::string& path); // Constructs an object setting all fields. - explicit DatabaseReferenceRequest( - const std::string& path, - const flutter::EncodableValue* value, - const flutter::EncodableValue* priority); + explicit DatabaseReferenceRequest(const std::string& path, + const flutter::EncodableValue* value, + const flutter::EncodableValue* priority); const std::string& path() const; void set_path(std::string_view value_arg); @@ -194,7 +189,8 @@ class DatabaseReferenceRequest { void set_priority(const flutter::EncodableValue& value_arg); private: - static DatabaseReferenceRequest FromEncodableList(const flutter::EncodableList& list); + static DatabaseReferenceRequest FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class FirebaseDatabaseHostApi; friend class FirebaseDatabaseFlutterApi; @@ -204,14 +200,12 @@ class DatabaseReferenceRequest { std::optional priority_; }; - // Generated class from Pigeon that represents data sent in messages. class UpdateRequest { public: // Constructs an object setting all fields. - explicit UpdateRequest( - const std::string& path, - const flutter::EncodableMap& value); + explicit UpdateRequest(const std::string& path, + const flutter::EncodableMap& value); const std::string& path() const; void set_path(std::string_view value_arg); @@ -229,15 +223,12 @@ class UpdateRequest { flutter::EncodableMap value_; }; - // Generated class from Pigeon that represents data sent in messages. class TransactionRequest { public: // Constructs an object setting all fields. - explicit TransactionRequest( - const std::string& path, - int64_t transaction_key, - bool apply_locally); + explicit TransactionRequest(const std::string& path, int64_t transaction_key, + bool apply_locally); const std::string& path() const; void set_path(std::string_view value_arg); @@ -249,7 +240,8 @@ class TransactionRequest { void set_apply_locally(bool value_arg); private: - static TransactionRequest FromEncodableList(const flutter::EncodableList& list); + static TransactionRequest FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class FirebaseDatabaseHostApi; friend class FirebaseDatabaseFlutterApi; @@ -259,20 +251,17 @@ class TransactionRequest { bool apply_locally_; }; - // Generated class from Pigeon that represents data sent in messages. class QueryRequest { public: // Constructs an object setting all non-nullable fields. - explicit QueryRequest( - const std::string& path, - const flutter::EncodableList& modifiers); + explicit QueryRequest(const std::string& path, + const flutter::EncodableList& modifiers); // Constructs an object setting all fields. - explicit QueryRequest( - const std::string& path, - const flutter::EncodableList& modifiers, - const bool* value); + explicit QueryRequest(const std::string& path, + const flutter::EncodableList& modifiers, + const bool* value); const std::string& path() const; void set_path(std::string_view value_arg); @@ -295,20 +284,15 @@ class QueryRequest { std::optional value_; }; - // Generated class from Pigeon that represents data sent in messages. class TransactionHandlerResult { public: // Constructs an object setting all non-nullable fields. - explicit TransactionHandlerResult( - bool aborted, - bool exception); + explicit TransactionHandlerResult(bool aborted, bool exception); // Constructs an object setting all fields. - explicit TransactionHandlerResult( - const flutter::EncodableValue* value, - bool aborted, - bool exception); + explicit TransactionHandlerResult(const flutter::EncodableValue* value, + bool aborted, bool exception); const flutter::EncodableValue* value() const; void set_value(const flutter::EncodableValue* value_arg); @@ -321,7 +305,8 @@ class TransactionHandlerResult { void set_exception(bool value_arg); private: - static TransactionHandlerResult FromEncodableList(const flutter::EncodableList& list); + static TransactionHandlerResult FromEncodableList( + const flutter::EncodableList& list); flutter::EncodableList ToEncodableList() const; friend class FirebaseDatabaseHostApi; friend class FirebaseDatabaseFlutterApi; @@ -331,7 +316,6 @@ class TransactionHandlerResult { bool exception_; }; - class PigeonInternalCodecSerializer : public flutter::StandardCodecSerializer { public: PigeonInternalCodecSerializer(); @@ -340,136 +324,122 @@ class PigeonInternalCodecSerializer : public flutter::StandardCodecSerializer { return sInstance; } - void WriteValue( - const flutter::EncodableValue& value, - flutter::ByteStreamWriter* stream) const override; + void WriteValue(const flutter::EncodableValue& value, + flutter::ByteStreamWriter* stream) const override; + protected: flutter::EncodableValue ReadValueOfType( - uint8_t type, - flutter::ByteStreamReader* stream) const override; + uint8_t type, flutter::ByteStreamReader* stream) const override; }; -// Generated interface from Pigeon that represents a handler of messages from Flutter. +// Generated interface from Pigeon that represents a handler of messages from +// Flutter. class FirebaseDatabaseHostApi { public: FirebaseDatabaseHostApi(const FirebaseDatabaseHostApi&) = delete; FirebaseDatabaseHostApi& operator=(const FirebaseDatabaseHostApi&) = delete; virtual ~FirebaseDatabaseHostApi() {} virtual void GoOnline( - const DatabasePigeonFirebaseApp& app, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, + std::function reply)> result) = 0; virtual void GoOffline( - const DatabasePigeonFirebaseApp& app, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, + std::function reply)> result) = 0; virtual void SetPersistenceEnabled( - const DatabasePigeonFirebaseApp& app, - bool enabled, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, bool enabled, + std::function reply)> result) = 0; virtual void SetPersistenceCacheSizeBytes( - const DatabasePigeonFirebaseApp& app, - int64_t cache_size, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, int64_t cache_size, + std::function reply)> result) = 0; virtual void SetLoggingEnabled( - const DatabasePigeonFirebaseApp& app, - bool enabled, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, bool enabled, + std::function reply)> result) = 0; virtual void UseDatabaseEmulator( - const DatabasePigeonFirebaseApp& app, - const std::string& host, - int64_t port, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, const std::string& host, + int64_t port, + std::function reply)> result) = 0; virtual void Ref( - const DatabasePigeonFirebaseApp& app, - const std::string* path, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, const std::string* path, + std::function reply)> result) = 0; virtual void RefFromURL( - const DatabasePigeonFirebaseApp& app, - const std::string& url, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, const std::string& url, + std::function reply)> result) = 0; virtual void PurgeOutstandingWrites( - const DatabasePigeonFirebaseApp& app, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, + std::function reply)> result) = 0; virtual void DatabaseReferenceSet( - const DatabasePigeonFirebaseApp& app, - const DatabaseReferenceRequest& request, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) = 0; virtual void DatabaseReferenceSetWithPriority( - const DatabasePigeonFirebaseApp& app, - const DatabaseReferenceRequest& request, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) = 0; virtual void DatabaseReferenceUpdate( - const DatabasePigeonFirebaseApp& app, - const UpdateRequest& request, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, const UpdateRequest& request, + std::function reply)> result) = 0; virtual void DatabaseReferenceSetPriority( - const DatabasePigeonFirebaseApp& app, - const DatabaseReferenceRequest& request, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) = 0; virtual void DatabaseReferenceRunTransaction( - const DatabasePigeonFirebaseApp& app, - const TransactionRequest& request, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, const TransactionRequest& request, + std::function reply)> result) = 0; virtual void DatabaseReferenceGetTransactionResult( - const DatabasePigeonFirebaseApp& app, - int64_t transaction_key, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, int64_t transaction_key, + std::function reply)> result) = 0; virtual void OnDisconnectSet( - const DatabasePigeonFirebaseApp& app, - const DatabaseReferenceRequest& request, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) = 0; virtual void OnDisconnectSetWithPriority( - const DatabasePigeonFirebaseApp& app, - const DatabaseReferenceRequest& request, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, + const DatabaseReferenceRequest& request, + std::function reply)> result) = 0; virtual void OnDisconnectUpdate( - const DatabasePigeonFirebaseApp& app, - const UpdateRequest& request, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, const UpdateRequest& request, + std::function reply)> result) = 0; virtual void OnDisconnectCancel( - const DatabasePigeonFirebaseApp& app, - const std::string& path, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, const std::string& path, + std::function reply)> result) = 0; virtual void QueryObserve( - const DatabasePigeonFirebaseApp& app, - const QueryRequest& request, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, const QueryRequest& request, + std::function reply)> result) = 0; virtual void QueryKeepSynced( - const DatabasePigeonFirebaseApp& app, - const QueryRequest& request, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, const QueryRequest& request, + std::function reply)> result) = 0; virtual void QueryGet( - const DatabasePigeonFirebaseApp& app, - const QueryRequest& request, - std::function reply)> result) = 0; + const DatabasePigeonFirebaseApp& app, const QueryRequest& request, + std::function reply)> result) = 0; // The codec used by FirebaseDatabaseHostApi. static const flutter::StandardMessageCodec& GetCodec(); - // Sets up an instance of `FirebaseDatabaseHostApi` to handle messages through the `binary_messenger`. - static void SetUp( - flutter::BinaryMessenger* binary_messenger, - FirebaseDatabaseHostApi* api); - static void SetUp( - flutter::BinaryMessenger* binary_messenger, - FirebaseDatabaseHostApi* api, - const std::string& message_channel_suffix); + // Sets up an instance of `FirebaseDatabaseHostApi` to handle messages through + // the `binary_messenger`. + static void SetUp(flutter::BinaryMessenger* binary_messenger, + FirebaseDatabaseHostApi* api); + static void SetUp(flutter::BinaryMessenger* binary_messenger, + FirebaseDatabaseHostApi* api, + const std::string& message_channel_suffix); static flutter::EncodableValue WrapError(std::string_view error_message); static flutter::EncodableValue WrapError(const FlutterError& error); + protected: FirebaseDatabaseHostApi() = default; }; -// Generated class from Pigeon that represents Flutter messages that can be called from C++. +// Generated class from Pigeon that represents Flutter messages that can be +// called from C++. class FirebaseDatabaseFlutterApi { public: FirebaseDatabaseFlutterApi(flutter::BinaryMessenger* binary_messenger); - FirebaseDatabaseFlutterApi( - flutter::BinaryMessenger* binary_messenger, - const std::string& message_channel_suffix); + FirebaseDatabaseFlutterApi(flutter::BinaryMessenger* binary_messenger, + const std::string& message_channel_suffix); static const flutter::StandardMessageCodec& GetCodec(); void CallTransactionHandler( - int64_t transaction_key, - const flutter::EncodableValue* snapshot_value, - std::function&& on_success, - std::function&& on_error); + int64_t transaction_key, const flutter::EncodableValue* snapshot_value, + std::function&& on_success, + std::function&& on_error); + private: flutter::BinaryMessenger* binary_messenger_; std::string message_channel_suffix_; diff --git a/packages/firebase_database/firebase_database_platform_interface/lib/src/pigeon/messages.pigeon.dart b/packages/firebase_database/firebase_database_platform_interface/lib/src/pigeon/messages.pigeon.dart index 748ccc65fefe..592d072fca61 100644 --- a/packages/firebase_database/firebase_database_platform_interface/lib/src/pigeon/messages.pigeon.dart +++ b/packages/firebase_database/firebase_database_platform_interface/lib/src/pigeon/messages.pigeon.dart @@ -18,7 +18,8 @@ PlatformException _createConnectionError(String channelName) { ); } -List wrapResponse({Object? result, PlatformException? error, bool empty = false}) { +List wrapResponse( + {Object? result, PlatformException? error, bool empty = false}) { if (empty) { return []; } @@ -27,21 +28,22 @@ List wrapResponse({Object? result, PlatformException? error, bool empty } return [error.code, error.message, error.details]; } + bool _deepEquals(Object? a, Object? b) { if (a is List && b is List) { return a.length == b.length && a.indexed - .every(((int, dynamic) item) => _deepEquals(item.$2, b[item.$1])); + .every(((int, dynamic) item) => _deepEquals(item.$2, b[item.$1])); } if (a is Map && b is Map) { - return a.length == b.length && a.entries.every((MapEntry entry) => - (b as Map).containsKey(entry.key) && - _deepEquals(entry.value, b[entry.key])); + return a.length == b.length && + a.entries.every((MapEntry entry) => + (b as Map).containsKey(entry.key) && + _deepEquals(entry.value, b[entry.key])); } return a == b; } - class DatabasePigeonSettings { DatabasePigeonSettings({ this.persistenceEnabled, @@ -72,7 +74,8 @@ class DatabasePigeonSettings { } Object encode() { - return _toList(); } + return _toList(); + } static DatabasePigeonSettings decode(Object result) { result as List; @@ -99,8 +102,7 @@ class DatabasePigeonSettings { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()) -; + int get hashCode => Object.hashAll(_toList()); } class DatabasePigeonFirebaseApp { @@ -125,7 +127,8 @@ class DatabasePigeonFirebaseApp { } Object encode() { - return _toList(); } + return _toList(); + } static DatabasePigeonFirebaseApp decode(Object result) { result as List; @@ -139,7 +142,8 @@ class DatabasePigeonFirebaseApp { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { - if (other is! DatabasePigeonFirebaseApp || other.runtimeType != runtimeType) { + if (other is! DatabasePigeonFirebaseApp || + other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { @@ -150,8 +154,7 @@ class DatabasePigeonFirebaseApp { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()) -; + int get hashCode => Object.hashAll(_toList()); } class DatabaseReferencePlatform { @@ -168,7 +171,8 @@ class DatabaseReferencePlatform { } Object encode() { - return _toList(); } + return _toList(); + } static DatabaseReferencePlatform decode(Object result) { result as List; @@ -180,7 +184,8 @@ class DatabaseReferencePlatform { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { - if (other is! DatabaseReferencePlatform || other.runtimeType != runtimeType) { + if (other is! DatabaseReferencePlatform || + other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { @@ -191,8 +196,7 @@ class DatabaseReferencePlatform { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()) -; + int get hashCode => Object.hashAll(_toList()); } class DatabaseReferenceRequest { @@ -217,7 +221,8 @@ class DatabaseReferenceRequest { } Object encode() { - return _toList(); } + return _toList(); + } static DatabaseReferenceRequest decode(Object result) { result as List; @@ -231,7 +236,8 @@ class DatabaseReferenceRequest { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { - if (other is! DatabaseReferenceRequest || other.runtimeType != runtimeType) { + if (other is! DatabaseReferenceRequest || + other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { @@ -242,8 +248,7 @@ class DatabaseReferenceRequest { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()) -; + int get hashCode => Object.hashAll(_toList()); } class UpdateRequest { @@ -264,7 +269,8 @@ class UpdateRequest { } Object encode() { - return _toList(); } + return _toList(); + } static UpdateRequest decode(Object result) { result as List; @@ -288,8 +294,7 @@ class UpdateRequest { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()) -; + int get hashCode => Object.hashAll(_toList()); } class TransactionRequest { @@ -314,7 +319,8 @@ class TransactionRequest { } Object encode() { - return _toList(); } + return _toList(); + } static TransactionRequest decode(Object result) { result as List; @@ -339,8 +345,7 @@ class TransactionRequest { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()) -; + int get hashCode => Object.hashAll(_toList()); } class QueryRequest { @@ -365,7 +370,8 @@ class QueryRequest { } Object encode() { - return _toList(); } + return _toList(); + } static QueryRequest decode(Object result) { result as List; @@ -390,8 +396,7 @@ class QueryRequest { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()) -; + int get hashCode => Object.hashAll(_toList()); } class TransactionHandlerResult { @@ -416,7 +421,8 @@ class TransactionHandlerResult { } Object encode() { - return _toList(); } + return _toList(); + } static TransactionHandlerResult decode(Object result) { result as List; @@ -430,7 +436,8 @@ class TransactionHandlerResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { - if (other is! TransactionHandlerResult || other.runtimeType != runtimeType) { + if (other is! TransactionHandlerResult || + other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { @@ -441,11 +448,9 @@ class TransactionHandlerResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()) -; + int get hashCode => Object.hashAll(_toList()); } - class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override @@ -453,28 +458,28 @@ class _PigeonCodec extends StandardMessageCodec { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); - } else if (value is DatabasePigeonSettings) { + } else if (value is DatabasePigeonSettings) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is DatabasePigeonFirebaseApp) { + } else if (value is DatabasePigeonFirebaseApp) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is DatabaseReferencePlatform) { + } else if (value is DatabaseReferencePlatform) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is DatabaseReferenceRequest) { + } else if (value is DatabaseReferenceRequest) { buffer.putUint8(132); writeValue(buffer, value.encode()); - } else if (value is UpdateRequest) { + } else if (value is UpdateRequest) { buffer.putUint8(133); writeValue(buffer, value.encode()); - } else if (value is TransactionRequest) { + } else if (value is TransactionRequest) { buffer.putUint8(134); writeValue(buffer, value.encode()); - } else if (value is QueryRequest) { + } else if (value is QueryRequest) { buffer.putUint8(135); writeValue(buffer, value.encode()); - } else if (value is TransactionHandlerResult) { + } else if (value is TransactionHandlerResult) { buffer.putUint8(136); writeValue(buffer, value.encode()); } else { @@ -485,21 +490,21 @@ class _PigeonCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 129: + case 129: return DatabasePigeonSettings.decode(readValue(buffer)!); - case 130: + case 130: return DatabasePigeonFirebaseApp.decode(readValue(buffer)!); - case 131: + case 131: return DatabaseReferencePlatform.decode(readValue(buffer)!); - case 132: + case 132: return DatabaseReferenceRequest.decode(readValue(buffer)!); - case 133: + case 133: return UpdateRequest.decode(readValue(buffer)!); - case 134: + case 134: return TransactionRequest.decode(readValue(buffer)!); - case 135: + case 135: return QueryRequest.decode(readValue(buffer)!); - case 136: + case 136: return TransactionHandlerResult.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -511,9 +516,11 @@ class FirebaseDatabaseHostApi { /// Constructor for [FirebaseDatabaseHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - FirebaseDatabaseHostApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + FirebaseDatabaseHostApi( + {BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + pigeonVar_messageChannelSuffix = + messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -521,13 +528,16 @@ class FirebaseDatabaseHostApi { final String pigeonVar_messageChannelSuffix; Future goOnline(DatabasePigeonFirebaseApp app) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -544,13 +554,16 @@ class FirebaseDatabaseHostApi { } Future goOffline(DatabasePigeonFirebaseApp app) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -566,14 +579,18 @@ class FirebaseDatabaseHostApi { } } - Future setPersistenceEnabled(DatabasePigeonFirebaseApp app, bool enabled) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future setPersistenceEnabled( + DatabasePigeonFirebaseApp app, bool enabled) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, enabled]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, enabled]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -589,14 +606,18 @@ class FirebaseDatabaseHostApi { } } - Future setPersistenceCacheSizeBytes(DatabasePigeonFirebaseApp app, int cacheSize) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future setPersistenceCacheSizeBytes( + DatabasePigeonFirebaseApp app, int cacheSize) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, cacheSize]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, cacheSize]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -612,14 +633,18 @@ class FirebaseDatabaseHostApi { } } - Future setLoggingEnabled(DatabasePigeonFirebaseApp app, bool enabled) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future setLoggingEnabled( + DatabasePigeonFirebaseApp app, bool enabled) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, enabled]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, enabled]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -635,14 +660,18 @@ class FirebaseDatabaseHostApi { } } - Future useDatabaseEmulator(DatabasePigeonFirebaseApp app, String host, int port) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future useDatabaseEmulator( + DatabasePigeonFirebaseApp app, String host, int port) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, host, port]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, host, port]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -658,14 +687,18 @@ class FirebaseDatabaseHostApi { } } - Future ref(DatabasePigeonFirebaseApp app, [String? path]) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future ref(DatabasePigeonFirebaseApp app, + [String? path]) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, path]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, path]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -686,14 +719,18 @@ class FirebaseDatabaseHostApi { } } - Future refFromURL(DatabasePigeonFirebaseApp app, String url) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future refFromURL( + DatabasePigeonFirebaseApp app, String url) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, url]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, url]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -715,13 +752,16 @@ class FirebaseDatabaseHostApi { } Future purgeOutstandingWrites(DatabasePigeonFirebaseApp app) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -737,14 +777,18 @@ class FirebaseDatabaseHostApi { } } - Future databaseReferenceSet(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future databaseReferenceSet( + DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -760,14 +804,18 @@ class FirebaseDatabaseHostApi { } } - Future databaseReferenceSetWithPriority(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future databaseReferenceSetWithPriority( + DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -783,14 +831,18 @@ class FirebaseDatabaseHostApi { } } - Future databaseReferenceUpdate(DatabasePigeonFirebaseApp app, UpdateRequest request) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future databaseReferenceUpdate( + DatabasePigeonFirebaseApp app, UpdateRequest request) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -806,14 +858,18 @@ class FirebaseDatabaseHostApi { } } - Future databaseReferenceSetPriority(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future databaseReferenceSetPriority( + DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -829,14 +885,18 @@ class FirebaseDatabaseHostApi { } } - Future databaseReferenceRunTransaction(DatabasePigeonFirebaseApp app, TransactionRequest request) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future databaseReferenceRunTransaction( + DatabasePigeonFirebaseApp app, TransactionRequest request) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -852,14 +912,18 @@ class FirebaseDatabaseHostApi { } } - Future> databaseReferenceGetTransactionResult(DatabasePigeonFirebaseApp app, int transactionKey) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future> databaseReferenceGetTransactionResult( + DatabasePigeonFirebaseApp app, int transactionKey) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, transactionKey]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, transactionKey]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -876,18 +940,23 @@ class FirebaseDatabaseHostApi { message: 'Host platform returned null value for non-null return value.', ); } else { - return (pigeonVar_replyList[0] as Map?)!.cast(); + return (pigeonVar_replyList[0] as Map?)! + .cast(); } } - Future onDisconnectSet(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future onDisconnectSet( + DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -903,14 +972,18 @@ class FirebaseDatabaseHostApi { } } - Future onDisconnectSetWithPriority(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future onDisconnectSetWithPriority( + DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -926,14 +999,18 @@ class FirebaseDatabaseHostApi { } } - Future onDisconnectUpdate(DatabasePigeonFirebaseApp app, UpdateRequest request) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future onDisconnectUpdate( + DatabasePigeonFirebaseApp app, UpdateRequest request) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -949,14 +1026,18 @@ class FirebaseDatabaseHostApi { } } - Future onDisconnectCancel(DatabasePigeonFirebaseApp app, String path) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future onDisconnectCancel( + DatabasePigeonFirebaseApp app, String path) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, path]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, path]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -972,14 +1053,18 @@ class FirebaseDatabaseHostApi { } } - Future queryObserve(DatabasePigeonFirebaseApp app, QueryRequest request) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future queryObserve( + DatabasePigeonFirebaseApp app, QueryRequest request) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1000,14 +1085,18 @@ class FirebaseDatabaseHostApi { } } - Future queryKeepSynced(DatabasePigeonFirebaseApp app, QueryRequest request) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future queryKeepSynced( + DatabasePigeonFirebaseApp app, QueryRequest request) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1023,14 +1112,18 @@ class FirebaseDatabaseHostApi { } } - Future> queryGet(DatabasePigeonFirebaseApp app, QueryRequest request) async { - final String pigeonVar_channelName = 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + Future> queryGet( + DatabasePigeonFirebaseApp app, QueryRequest request) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send([app, request]); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([app, request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1047,7 +1140,8 @@ class FirebaseDatabaseHostApi { message: 'Host platform returned null value for non-null return value.', ); } else { - return (pigeonVar_replyList[0] as Map?)!.cast(); + return (pigeonVar_replyList[0] as Map?)! + .cast(); } } } @@ -1055,32 +1149,43 @@ class FirebaseDatabaseHostApi { abstract class FirebaseDatabaseFlutterApi { static const MessageCodec pigeonChannelCodec = _PigeonCodec(); - Future callTransactionHandler(int transactionKey, Object? snapshotValue); + Future callTransactionHandler( + int transactionKey, Object? snapshotValue); - static void setUp(FirebaseDatabaseFlutterApi? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { - messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + static void setUp( + FirebaseDatabaseFlutterApi? api, { + BinaryMessenger? binaryMessenger, + String messageChannelSuffix = '', + }) { + messageChannelSuffix = + messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler was null.'); final List args = (message as List?)!; final int? arg_transactionKey = (args[0] as int?); assert(arg_transactionKey != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseFlutterApi.callTransactionHandler was null, expected non-null int.'); final Object? arg_snapshotValue = (args[1] as Object?); try { - final TransactionHandlerResult output = await api.callTransactionHandler(arg_transactionKey!, arg_snapshotValue); + final TransactionHandlerResult output = await api + .callTransactionHandler(arg_transactionKey!, arg_snapshotValue); return wrapResponse(result: output); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } diff --git a/packages/firebase_database/firebase_database_platform_interface/test/pigeon/test_api.dart b/packages/firebase_database/firebase_database_platform_interface/test/pigeon/test_api.dart index 3ecff12df113..9c08cae382af 100644 --- a/packages/firebase_database/firebase_database_platform_interface/test/pigeon/test_api.dart +++ b/packages/firebase_database/firebase_database_platform_interface/test/pigeon/test_api.dart @@ -13,7 +13,6 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:firebase_database_platform_interface/src/pigeon/messages.pigeon.dart'; - class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override @@ -21,28 +20,28 @@ class _PigeonCodec extends StandardMessageCodec { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); - } else if (value is DatabasePigeonSettings) { + } else if (value is DatabasePigeonSettings) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is DatabasePigeonFirebaseApp) { + } else if (value is DatabasePigeonFirebaseApp) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is DatabaseReferencePlatform) { + } else if (value is DatabaseReferencePlatform) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is DatabaseReferenceRequest) { + } else if (value is DatabaseReferenceRequest) { buffer.putUint8(132); writeValue(buffer, value.encode()); - } else if (value is UpdateRequest) { + } else if (value is UpdateRequest) { buffer.putUint8(133); writeValue(buffer, value.encode()); - } else if (value is TransactionRequest) { + } else if (value is TransactionRequest) { buffer.putUint8(134); writeValue(buffer, value.encode()); - } else if (value is QueryRequest) { + } else if (value is QueryRequest) { buffer.putUint8(135); writeValue(buffer, value.encode()); - } else if (value is TransactionHandlerResult) { + } else if (value is TransactionHandlerResult) { buffer.putUint8(136); writeValue(buffer, value.encode()); } else { @@ -53,21 +52,21 @@ class _PigeonCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 129: + case 129: return DatabasePigeonSettings.decode(readValue(buffer)!); - case 130: + case 130: return DatabasePigeonFirebaseApp.decode(readValue(buffer)!); - case 131: + case 131: return DatabaseReferencePlatform.decode(readValue(buffer)!); - case 132: + case 132: return DatabaseReferenceRequest.decode(readValue(buffer)!); - case 133: + case 133: return UpdateRequest.decode(readValue(buffer)!); - case 134: + case 134: return TransactionRequest.decode(readValue(buffer)!); - case 135: + case 135: return QueryRequest.decode(readValue(buffer)!); - case 136: + case 136: return TransactionHandlerResult.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -76,67 +75,97 @@ class _PigeonCodec extends StandardMessageCodec { } abstract class TestFirebaseDatabaseHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => + TestDefaultBinaryMessengerBinding.instance; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); Future goOnline(DatabasePigeonFirebaseApp app); Future goOffline(DatabasePigeonFirebaseApp app); - Future setPersistenceEnabled(DatabasePigeonFirebaseApp app, bool enabled); + Future setPersistenceEnabled( + DatabasePigeonFirebaseApp app, bool enabled); - Future setPersistenceCacheSizeBytes(DatabasePigeonFirebaseApp app, int cacheSize); + Future setPersistenceCacheSizeBytes( + DatabasePigeonFirebaseApp app, int cacheSize); Future setLoggingEnabled(DatabasePigeonFirebaseApp app, bool enabled); - Future useDatabaseEmulator(DatabasePigeonFirebaseApp app, String host, int port); + Future useDatabaseEmulator( + DatabasePigeonFirebaseApp app, String host, int port); - Future ref(DatabasePigeonFirebaseApp app, [String? path]); + Future ref(DatabasePigeonFirebaseApp app, + [String? path]); - Future refFromURL(DatabasePigeonFirebaseApp app, String url); + Future refFromURL( + DatabasePigeonFirebaseApp app, String url); Future purgeOutstandingWrites(DatabasePigeonFirebaseApp app); - Future databaseReferenceSet(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); + Future databaseReferenceSet( + DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); - Future databaseReferenceSetWithPriority(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); + Future databaseReferenceSetWithPriority( + DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); - Future databaseReferenceUpdate(DatabasePigeonFirebaseApp app, UpdateRequest request); + Future databaseReferenceUpdate( + DatabasePigeonFirebaseApp app, UpdateRequest request); - Future databaseReferenceSetPriority(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); + Future databaseReferenceSetPriority( + DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); - Future databaseReferenceRunTransaction(DatabasePigeonFirebaseApp app, TransactionRequest request); + Future databaseReferenceRunTransaction( + DatabasePigeonFirebaseApp app, TransactionRequest request); - Future> databaseReferenceGetTransactionResult(DatabasePigeonFirebaseApp app, int transactionKey); + Future> databaseReferenceGetTransactionResult( + DatabasePigeonFirebaseApp app, int transactionKey); - Future onDisconnectSet(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); + Future onDisconnectSet( + DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); - Future onDisconnectSetWithPriority(DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); + Future onDisconnectSetWithPriority( + DatabasePigeonFirebaseApp app, DatabaseReferenceRequest request); - Future onDisconnectUpdate(DatabasePigeonFirebaseApp app, UpdateRequest request); + Future onDisconnectUpdate( + DatabasePigeonFirebaseApp app, UpdateRequest request); Future onDisconnectCancel(DatabasePigeonFirebaseApp app, String path); - Future queryObserve(DatabasePigeonFirebaseApp app, QueryRequest request); + Future queryObserve( + DatabasePigeonFirebaseApp app, QueryRequest request); - Future queryKeepSynced(DatabasePigeonFirebaseApp app, QueryRequest request); + Future queryKeepSynced( + DatabasePigeonFirebaseApp app, QueryRequest request); - Future> queryGet(DatabasePigeonFirebaseApp app, QueryRequest request); + Future> queryGet( + DatabasePigeonFirebaseApp app, QueryRequest request); - static void setUp(TestFirebaseDatabaseHostApi? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { - messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + static void setUp( + TestFirebaseDatabaseHostApi? api, { + BinaryMessenger? binaryMessenger, + String messageChannelSuffix = '', + }) { + messageChannelSuffix = + messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOnline was null, expected non-null DatabasePigeonFirebaseApp.'); try { @@ -144,24 +173,32 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.goOffline was null, expected non-null DatabasePigeonFirebaseApp.'); try { @@ -169,24 +206,32 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceEnabled was null, expected non-null DatabasePigeonFirebaseApp.'); final bool? arg_enabled = (args[1] as bool?); @@ -197,24 +242,32 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setPersistenceCacheSizeBytes was null, expected non-null DatabasePigeonFirebaseApp.'); final int? arg_cacheSize = (args[1] as int?); @@ -225,24 +278,32 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.setLoggingEnabled was null, expected non-null DatabasePigeonFirebaseApp.'); final bool? arg_enabled = (args[1] as bool?); @@ -253,24 +314,32 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.useDatabaseEmulator was null, expected non-null DatabasePigeonFirebaseApp.'); final String? arg_host = (args[1] as String?); @@ -284,78 +353,104 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.ref was null, expected non-null DatabasePigeonFirebaseApp.'); final String? arg_path = (args[1] as String?); try { - final DatabaseReferencePlatform output = await api.ref(arg_app!, arg_path); + final DatabaseReferencePlatform output = + await api.ref(arg_app!, arg_path); return [output]; } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL was null, expected non-null DatabasePigeonFirebaseApp.'); final String? arg_url = (args[1] as String?); assert(arg_url != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.refFromURL was null, expected non-null String.'); try { - final DatabaseReferencePlatform output = await api.refFromURL(arg_app!, arg_url!); + final DatabaseReferencePlatform output = + await api.refFromURL(arg_app!, arg_url!); return [output]; } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.purgeOutstandingWrites was null, expected non-null DatabasePigeonFirebaseApp.'); try { @@ -363,27 +458,36 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet was null, expected non-null DatabasePigeonFirebaseApp.'); - final DatabaseReferenceRequest? arg_request = (args[1] as DatabaseReferenceRequest?); + final DatabaseReferenceRequest? arg_request = + (args[1] as DatabaseReferenceRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSet was null, expected non-null DatabaseReferenceRequest.'); try { @@ -391,27 +495,36 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority was null, expected non-null DatabasePigeonFirebaseApp.'); - final DatabaseReferenceRequest? arg_request = (args[1] as DatabaseReferenceRequest?); + final DatabaseReferenceRequest? arg_request = + (args[1] as DatabaseReferenceRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetWithPriority was null, expected non-null DatabaseReferenceRequest.'); try { @@ -419,24 +532,32 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceUpdate was null, expected non-null DatabasePigeonFirebaseApp.'); final UpdateRequest? arg_request = (args[1] as UpdateRequest?); @@ -447,27 +568,36 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority was null, expected non-null DatabasePigeonFirebaseApp.'); - final DatabaseReferenceRequest? arg_request = (args[1] as DatabaseReferenceRequest?); + final DatabaseReferenceRequest? arg_request = + (args[1] as DatabaseReferenceRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceSetPriority was null, expected non-null DatabaseReferenceRequest.'); try { @@ -475,27 +605,36 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction was null, expected non-null DatabasePigeonFirebaseApp.'); - final TransactionRequest? arg_request = (args[1] as TransactionRequest?); + final TransactionRequest? arg_request = + (args[1] as TransactionRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceRunTransaction was null, expected non-null TransactionRequest.'); try { @@ -503,55 +642,74 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult was null, expected non-null DatabasePigeonFirebaseApp.'); final int? arg_transactionKey = (args[1] as int?); assert(arg_transactionKey != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.databaseReferenceGetTransactionResult was null, expected non-null int.'); try { - final Map output = await api.databaseReferenceGetTransactionResult(arg_app!, arg_transactionKey!); + final Map output = + await api.databaseReferenceGetTransactionResult( + arg_app!, arg_transactionKey!); return [output]; } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet was null, expected non-null DatabasePigeonFirebaseApp.'); - final DatabaseReferenceRequest? arg_request = (args[1] as DatabaseReferenceRequest?); + final DatabaseReferenceRequest? arg_request = + (args[1] as DatabaseReferenceRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSet was null, expected non-null DatabaseReferenceRequest.'); try { @@ -559,27 +717,36 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority was null, expected non-null DatabasePigeonFirebaseApp.'); - final DatabaseReferenceRequest? arg_request = (args[1] as DatabaseReferenceRequest?); + final DatabaseReferenceRequest? arg_request = + (args[1] as DatabaseReferenceRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectSetWithPriority was null, expected non-null DatabaseReferenceRequest.'); try { @@ -587,24 +754,32 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectUpdate was null, expected non-null DatabasePigeonFirebaseApp.'); final UpdateRequest? arg_request = (args[1] as UpdateRequest?); @@ -615,24 +790,32 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.onDisconnectCancel was null, expected non-null DatabasePigeonFirebaseApp.'); final String? arg_path = (args[1] as String?); @@ -643,52 +826,69 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve was null, expected non-null DatabasePigeonFirebaseApp.'); final QueryRequest? arg_request = (args[1] as QueryRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryObserve was null, expected non-null QueryRequest.'); try { - final String output = await api.queryObserve(arg_app!, arg_request!); + final String output = + await api.queryObserve(arg_app!, arg_request!); return [output]; } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryKeepSynced was null, expected non-null DatabasePigeonFirebaseApp.'); final QueryRequest? arg_request = (args[1] as QueryRequest?); @@ -699,36 +899,46 @@ abstract class TestFirebaseDatabaseHostApi { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(pigeonVar_channel, (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(pigeonVar_channel, + (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet was null.'); + 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet was null.'); final List args = (message as List?)!; - final DatabasePigeonFirebaseApp? arg_app = (args[0] as DatabasePigeonFirebaseApp?); + final DatabasePigeonFirebaseApp? arg_app = + (args[0] as DatabasePigeonFirebaseApp?); assert(arg_app != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet was null, expected non-null DatabasePigeonFirebaseApp.'); final QueryRequest? arg_request = (args[1] as QueryRequest?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.firebase_database_platform_interface.FirebaseDatabaseHostApi.queryGet was null, expected non-null QueryRequest.'); try { - final Map output = await api.queryGet(arg_app!, arg_request!); + final Map output = + await api.queryGet(arg_app!, arg_request!); return [output]; } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } From c0ec0ff2369873efb6cd27a8ac6acf8259e6b198 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Wed, 4 Mar 2026 17:29:37 +0100 Subject: [PATCH 03/22] fix --- .../firebase_database/windows/firebase_database_plugin.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index 179b1b5c396a..16c27723dca9 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -610,9 +610,6 @@ void FirebaseDatabasePlugin::DatabaseReferenceRunTransaction( int64_t transaction_key = request.transaction_key(); bool apply_locally = request.apply_locally(); - // Store a reference to this plugin and the transaction results map - auto* plugin = this; - struct TransactionContext { flutter::BinaryMessenger* messenger; int64_t transaction_key; From 28689c8caf11d37d02e32705a3ddb1f82d1e4c2c Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Wed, 4 Mar 2026 17:31:43 +0100 Subject: [PATCH 04/22] clean --- .../firebase_database/windows/firebase_database_plugin.h | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h index c3903f5e3120..a496f50c52be 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h @@ -135,7 +135,6 @@ class FirebaseDatabasePlugin : public flutter::Plugin, firebase::database::Query query, const flutter::EncodableList& modifiers); std::map transaction_results_; - int listener_count_ = 0; }; } // namespace firebase_database_windows From 790b7fa73d2d549920e55dfd70a75438ca894af2 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Wed, 4 Mar 2026 17:44:27 +0100 Subject: [PATCH 05/22] additionnal librairies --- .../firebase_database/firebase_database/windows/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/firebase_database/firebase_database/windows/CMakeLists.txt b/packages/firebase_database/firebase_database/windows/CMakeLists.txt index 6b6bdc617af2..9eca23507a73 100644 --- a/packages/firebase_database/firebase_database/windows/CMakeLists.txt +++ b/packages/firebase_database/firebase_database/windows/CMakeLists.txt @@ -46,7 +46,8 @@ target_compile_definitions(${PLUGIN_NAME} PRIVATE -DINTERNAL_EXPERIMENTAL=1) set(MSVC_RUNTIME_MODE MD) set(firebase_libs firebase_core_plugin firebase_database) -target_link_libraries(${PLUGIN_NAME} PRIVATE "${firebase_libs}" "${ADDITIONAL_LIBS}") +set(RTDB_ADDITIONAL_LIBS iphlpapi psapi userenv) +target_link_libraries(${PLUGIN_NAME} PRIVATE "${firebase_libs}" "${ADDITIONAL_LIBS}" "${RTDB_ADDITIONAL_LIBS}") target_include_directories(${PLUGIN_NAME} INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/include") From 2aac804f086ffbb128d735e89ed41d5d04373f77 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Wed, 4 Mar 2026 18:12:35 +0100 Subject: [PATCH 06/22] emulator support attempt --- .../windows/firebase_database_plugin.cpp | 46 +++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index 16c27723dca9..1de609197e4c 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -334,6 +334,29 @@ void FirebaseDatabasePlugin::RegisterWithRegistrar( nullptr); } +// --- Helper: Extract namespace from a Firebase RTDB URL --- +// e.g. "https://my-project-default-rtdb.firebaseio.com" -> "my-project-default-rtdb" +// e.g. "https://my-project-default-rtdb.europe-west1.firebasedatabase.app" -> "my-project-default-rtdb" +static std::string ExtractNamespaceFromUrl(const std::string& url) { + // Strip scheme + std::string host = url; + auto scheme_end = host.find("://"); + if (scheme_end != std::string::npos) { + host = host.substr(scheme_end + 3); + } + // Strip path + auto slash = host.find('/'); + if (slash != std::string::npos) { + host = host.substr(0, slash); + } + // Namespace is the first label of the host + auto dot = host.find('.'); + if (dot != std::string::npos) { + return host.substr(0, dot); + } + return host; +} + // --- Helper: Get Database instance from Pigeon app --- Database* FirebaseDatabasePlugin::GetDatabaseFromPigeon( const DatabasePigeonFirebaseApp& app) { @@ -342,9 +365,28 @@ Database* FirebaseDatabasePlugin::GetDatabaseFromPigeon( return nullptr; } + // Apply settings + const auto& settings = app.settings(); + Database* database = nullptr; const std::string* url = app.database_u_r_l(); - if (url && !url->empty()) { + + // If emulator is configured, construct an emulator URL + const std::string* emulator_host = settings.emulator_host(); + const int64_t* emulator_port = settings.emulator_port(); + if (emulator_host && emulator_port) { + // Extract namespace from the original database URL + std::string ns; + if (url && !url->empty()) { + ns = ExtractNamespaceFromUrl(*url); + } else { + // Fallback: use project ID + "-default-rtdb" + ns = std::string(firebase_app->options().project_id()) + "-default-rtdb"; + } + std::string emulator_url = "http://" + *emulator_host + ":" + + std::to_string(*emulator_port) + "?ns=" + ns; + database = Database::GetInstance(firebase_app, emulator_url.c_str()); + } else if (url && !url->empty()) { database = Database::GetInstance(firebase_app, url->c_str()); } else { database = Database::GetInstance(firebase_app); @@ -352,8 +394,6 @@ Database* FirebaseDatabasePlugin::GetDatabaseFromPigeon( if (!database) return nullptr; - // Apply settings - const auto& settings = app.settings(); if (settings.persistence_enabled()) { database->set_persistence_enabled(*settings.persistence_enabled()); } From f1c88c59df0e300257b8e516df308894a833b904 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Wed, 4 Mar 2026 18:17:10 +0100 Subject: [PATCH 07/22] format --- .../firebase_database/windows/firebase_database_plugin.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index 1de609197e4c..8497b24bc7a2 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -335,8 +335,10 @@ void FirebaseDatabasePlugin::RegisterWithRegistrar( } // --- Helper: Extract namespace from a Firebase RTDB URL --- -// e.g. "https://my-project-default-rtdb.firebaseio.com" -> "my-project-default-rtdb" -// e.g. "https://my-project-default-rtdb.europe-west1.firebasedatabase.app" -> "my-project-default-rtdb" +// e.g. "https://my-project-default-rtdb.firebaseio.com" -> +// "my-project-default-rtdb" e.g. +// "https://my-project-default-rtdb.europe-west1.firebasedatabase.app" -> +// "my-project-default-rtdb" static std::string ExtractNamespaceFromUrl(const std::string& url) { // Strip scheme std::string host = url; From 650ea15fe71fbfac663f454d3dc4be14b889a978 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 5 Mar 2026 08:50:46 +0100 Subject: [PATCH 08/22] fix tests --- .../windows/firebase_database_plugin.cpp | 23 ++++++++++++++++++- .../windows/firebase_database_plugin.h | 2 ++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index 8497b24bc7a2..be47ae4385ce 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -59,6 +60,8 @@ std::map>> FirebaseDatabasePlugin::stream_handlers_; +std::set + FirebaseDatabasePlugin::active_databases_; // --- Helper: Register an EventChannel with a generated name --- static std::string RegisterEventChannel( @@ -322,7 +325,23 @@ firebase::database::Query FirebaseDatabasePlugin::ApplyQueryModifiers( FirebaseDatabasePlugin::FirebaseDatabasePlugin() {} -FirebaseDatabasePlugin::~FirebaseDatabasePlugin() {} +FirebaseDatabasePlugin::~FirebaseDatabasePlugin() { + // Clean up event channels (which own the stream handlers via + // SetStreamHandler). Destroying them triggers DatabaseGenericStreamHandler + // destructors that remove active listeners from queries. + event_channels_.clear(); + stream_handlers_.clear(); + transaction_results_.clear(); + + // Disconnect all database instances to close WebSocket connections and + // allow background threads to exit cleanly. + for (auto* db : active_databases_) { + if (db) { + db->GoOffline(); + } + } + active_databases_.clear(); +} void FirebaseDatabasePlugin::RegisterWithRegistrar( flutter::PluginRegistrarWindows* registrar) { @@ -396,6 +415,8 @@ Database* FirebaseDatabasePlugin::GetDatabaseFromPigeon( if (!database) return nullptr; + active_databases_.insert(database); + if (settings.persistence_enabled()) { database->set_persistence_enabled(*settings.persistence_enabled()); } diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h index a496f50c52be..c03856235125 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h @@ -12,6 +12,7 @@ #include #include +#include #include "firebase/database.h" #include "firebase/database/common.h" @@ -127,6 +128,7 @@ class FirebaseDatabasePlugin : public flutter::Plugin, event_channels_; static std::map>> stream_handlers_; + static std::set active_databases_; private: firebase::database::Database* GetDatabaseFromPigeon( From 26d859735c31d833be776a701f5ef36b72290975 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 5 Mar 2026 09:14:29 +0100 Subject: [PATCH 09/22] clean --- .../windows/firebase_database_plugin.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index be47ae4385ce..64a0454fa2be 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -329,16 +329,17 @@ FirebaseDatabasePlugin::~FirebaseDatabasePlugin() { // Clean up event channels (which own the stream handlers via // SetStreamHandler). Destroying them triggers DatabaseGenericStreamHandler // destructors that remove active listeners from queries. + // Must happen before deleting Database instances. event_channels_.clear(); stream_handlers_.clear(); transaction_results_.clear(); - // Disconnect all database instances to close WebSocket connections and - // allow background threads to exit cleanly. + // Delete all Database instances to properly shut down WebSocket connections + // and stop background scheduler threads. The Database destructor calls + // DeleteInternal() which cleans up the Repo, closes connections, and removes + // the instance from the singleton cache. for (auto* db : active_databases_) { - if (db) { - db->GoOffline(); - } + delete db; } active_databases_.clear(); } From 22f81243f3be22d25a0e40affcffa09ca39a54a4 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 5 Mar 2026 09:31:32 +0100 Subject: [PATCH 10/22] details for CI --- .github/workflows/windows.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yaml b/.github/workflows/windows.yaml index ff82836a8a18..1783aa967913 100644 --- a/.github/workflows/windows.yaml +++ b/.github/workflows/windows.yaml @@ -56,7 +56,7 @@ jobs: - name: "Build Windows (Release)" run: cd tests && flutter build windows --release - name: Start Firebase Emulator and run tests - run: cd ./.github/workflows/scripts && firebase emulators:exec --project flutterfire-e2e-tests "cd ../../../tests && flutter test .\integration_test\e2e_test.dart -d windows" + run: cd ./.github/workflows/scripts && firebase emulators:exec --project flutterfire-e2e-tests "cd ../../../tests && flutter test .\integration_test\e2e_test.dart -d windows --verbose" # We cannot run the tests but we can still try to build the app because of https://github.com/flutter/flutter/issues/79213 windows-firestore: From 8c6057905bfb9264f47adf8de64ffb8283e8de75 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 5 Mar 2026 09:51:44 +0100 Subject: [PATCH 11/22] clean --- .../windows/firebase_database_plugin.cpp | 31 +++++++------------ 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index 64a0454fa2be..b42479b1e07c 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -326,21 +326,13 @@ firebase::database::Query FirebaseDatabasePlugin::ApplyQueryModifiers( FirebaseDatabasePlugin::FirebaseDatabasePlugin() {} FirebaseDatabasePlugin::~FirebaseDatabasePlugin() { - // Clean up event channels (which own the stream handlers via - // SetStreamHandler). Destroying them triggers DatabaseGenericStreamHandler - // destructors that remove active listeners from queries. - // Must happen before deleting Database instances. + // Clear our own maps. The EventChannel/StreamHandler destructors will + // run but won't try to remove SDK listeners (handled safely in + // DatabaseGenericStreamHandler's destructor). The C++ SDK cleans up its + // own Database instances during static destruction. event_channels_.clear(); stream_handlers_.clear(); transaction_results_.clear(); - - // Delete all Database instances to properly shut down WebSocket connections - // and stop background scheduler threads. The Database destructor calls - // DeleteInternal() which cleans up the Repo, closes connections, and removes - // the instance from the singleton cache. - for (auto* db : active_databases_) { - delete db; - } active_databases_.clear(); } @@ -937,14 +929,13 @@ void FirebaseDatabasePlugin::QueryObserve( : query_(query), value_listener_(nullptr), child_listener_(nullptr) {} ~DatabaseGenericStreamHandler() override { - if (value_listener_) { - query_.RemoveValueListener(value_listener_); - delete value_listener_; - } - if (child_listener_) { - query_.RemoveChildListener(child_listener_); - delete child_listener_; - } + // Do NOT remove listeners here. During process shutdown, the Query's + // underlying Database may already be destroyed (static destruction + // order). Listeners are removed in OnCancelInternal when Dart cancels + // the stream during normal operation. The C++ SDK will clean up any + // remaining listeners when the Database instance is destroyed. + delete value_listener_; + delete child_listener_; } protected: From 0bc1ac26c6562a9f592d5d8c1a8368ccc026432a Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 5 Mar 2026 10:11:13 +0100 Subject: [PATCH 12/22] clean --- .../windows/firebase_database_plugin.cpp | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index b42479b1e07c..35eb8914f3db 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -63,6 +64,24 @@ std::map>> std::set FirebaseDatabasePlugin::active_databases_; +// atexit handler: destroy Database instances so the C++ SDK's background +// threads (scheduler worker, WebSocket event loop) are properly joined +// before ExitProcess() terminates them. This is necessary because +// Dart's exit() bypasses C++ stack unwinding, so the plugin destructor +// and Flutter engine cleanup never run. +static void CleanupDatabaseInstances() { + // Clear event channels first (destroys stream handlers / listeners) + FirebaseDatabasePlugin::event_channels_.clear(); + FirebaseDatabasePlugin::stream_handlers_.clear(); + + // Delete each Database instance — this triggers Repo destruction which + // joins the scheduler thread and WebSocket event loop thread. + for (auto* db : FirebaseDatabasePlugin::active_databases_) { + delete db; + } + FirebaseDatabasePlugin::active_databases_.clear(); +} + // --- Helper: Register an EventChannel with a generated name --- static std::string RegisterEventChannel( const std::string& prefix, @@ -326,14 +345,10 @@ firebase::database::Query FirebaseDatabasePlugin::ApplyQueryModifiers( FirebaseDatabasePlugin::FirebaseDatabasePlugin() {} FirebaseDatabasePlugin::~FirebaseDatabasePlugin() { - // Clear our own maps. The EventChannel/StreamHandler destructors will - // run but won't try to remove SDK listeners (handled safely in - // DatabaseGenericStreamHandler's destructor). The C++ SDK cleans up its - // own Database instances during static destruction. - event_channels_.clear(); - stream_handlers_.clear(); + // Run the same cleanup as the atexit handler. This covers the normal + // window-close path. The atexit handler is idempotent (checks empty set). + CleanupDatabaseInstances(); transaction_results_.clear(); - active_databases_.clear(); } void FirebaseDatabasePlugin::RegisterWithRegistrar( @@ -344,6 +359,12 @@ void FirebaseDatabasePlugin::RegisterWithRegistrar( registrar->AddPlugin(std::move(plugin)); App::RegisterLibrary(kLibraryName.c_str(), getPluginVersion().c_str(), nullptr); + + // Register an atexit handler to properly shut down Database instances. + // Dart's exit() calls C exit() which runs atexit handlers before + // ExitProcess(). Without this, the C++ SDK's background threads + // (scheduler, WebSocket) are forcefully terminated, causing exit code 1. + std::atexit(CleanupDatabaseInstances); } // --- Helper: Extract namespace from a Firebase RTDB URL --- From 6e0317bc5f965b5653353314152edd47d93192a1 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 5 Mar 2026 10:56:32 +0100 Subject: [PATCH 13/22] fix --- .../windows/firebase_database_plugin.cpp | 73 +++++++------------ .../windows/firebase_database_plugin.h | 5 +- 2 files changed, 30 insertions(+), 48 deletions(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index 35eb8914f3db..6f44ddd5df79 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -10,13 +10,11 @@ #include #include -#include #include #include #include #include #include -#include #include #include #include @@ -61,26 +59,8 @@ std::map>> FirebaseDatabasePlugin::stream_handlers_; -std::set - FirebaseDatabasePlugin::active_databases_; - -// atexit handler: destroy Database instances so the C++ SDK's background -// threads (scheduler worker, WebSocket event loop) are properly joined -// before ExitProcess() terminates them. This is necessary because -// Dart's exit() bypasses C++ stack unwinding, so the plugin destructor -// and Flutter engine cleanup never run. -static void CleanupDatabaseInstances() { - // Clear event channels first (destroys stream handlers / listeners) - FirebaseDatabasePlugin::event_channels_.clear(); - FirebaseDatabasePlugin::stream_handlers_.clear(); - - // Delete each Database instance — this triggers Repo destruction which - // joins the scheduler thread and WebSocket event loop thread. - for (auto* db : FirebaseDatabasePlugin::active_databases_) { - delete db; - } - FirebaseDatabasePlugin::active_databases_.clear(); -} +std::map> + FirebaseDatabasePlugin::database_instances_; // --- Helper: Register an EventChannel with a generated name --- static std::string RegisterEventChannel( @@ -344,12 +324,7 @@ firebase::database::Query FirebaseDatabasePlugin::ApplyQueryModifiers( FirebaseDatabasePlugin::FirebaseDatabasePlugin() {} -FirebaseDatabasePlugin::~FirebaseDatabasePlugin() { - // Run the same cleanup as the atexit handler. This covers the normal - // window-close path. The atexit handler is idempotent (checks empty set). - CleanupDatabaseInstances(); - transaction_results_.clear(); -} +FirebaseDatabasePlugin::~FirebaseDatabasePlugin() {} void FirebaseDatabasePlugin::RegisterWithRegistrar( flutter::PluginRegistrarWindows* registrar) { @@ -359,12 +334,6 @@ void FirebaseDatabasePlugin::RegisterWithRegistrar( registrar->AddPlugin(std::move(plugin)); App::RegisterLibrary(kLibraryName.c_str(), getPluginVersion().c_str(), nullptr); - - // Register an atexit handler to properly shut down Database instances. - // Dart's exit() calls C exit() which runs atexit handlers before - // ExitProcess(). Without this, the C++ SDK's background threads - // (scheduler, WebSocket) are forcefully terminated, causing exit code 1. - std::atexit(CleanupDatabaseInstances); } // --- Helper: Extract namespace from a Firebase RTDB URL --- @@ -400,37 +369,43 @@ Database* FirebaseDatabasePlugin::GetDatabaseFromPigeon( return nullptr; } - // Apply settings const auto& settings = app.settings(); - - Database* database = nullptr; const std::string* url = app.database_u_r_l(); - // If emulator is configured, construct an emulator URL + // Build a cache key from app name + effective URL (like Firestore does) + std::string effective_url; const std::string* emulator_host = settings.emulator_host(); const int64_t* emulator_port = settings.emulator_port(); if (emulator_host && emulator_port) { - // Extract namespace from the original database URL std::string ns; if (url && !url->empty()) { ns = ExtractNamespaceFromUrl(*url); } else { - // Fallback: use project ID + "-default-rtdb" ns = std::string(firebase_app->options().project_id()) + "-default-rtdb"; } - std::string emulator_url = "http://" + *emulator_host + ":" + - std::to_string(*emulator_port) + "?ns=" + ns; - database = Database::GetInstance(firebase_app, emulator_url.c_str()); + effective_url = "http://" + *emulator_host + ":" + + std::to_string(*emulator_port) + "?ns=" + ns; } else if (url && !url->empty()) { - database = Database::GetInstance(firebase_app, url->c_str()); + effective_url = *url; + } + + std::string cache_key = app.app_name() + "-" + effective_url; + + // Return cached instance if available + if (database_instances_.find(cache_key) != database_instances_.end()) { + return database_instances_[cache_key].get(); + } + + // Create new instance + Database* database = nullptr; + if (!effective_url.empty()) { + database = Database::GetInstance(firebase_app, effective_url.c_str()); } else { database = Database::GetInstance(firebase_app); } if (!database) return nullptr; - active_databases_.insert(database); - if (settings.persistence_enabled()) { database->set_persistence_enabled(*settings.persistence_enabled()); } @@ -438,6 +413,12 @@ Database* FirebaseDatabasePlugin::GetDatabaseFromPigeon( database->set_log_level(firebase::kLogLevelDebug); } + // Take ownership via unique_ptr (same pattern as Firestore). + // During static destruction, the unique_ptr destroys the Database + // instance, which joins background threads for clean shutdown. + database_instances_[cache_key] = + std::unique_ptr(database); + return database; } diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h index c03856235125..ca501775e402 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h @@ -12,7 +12,6 @@ #include #include -#include #include "firebase/database.h" #include "firebase/database/common.h" @@ -128,7 +127,9 @@ class FirebaseDatabasePlugin : public flutter::Plugin, event_channels_; static std::map>> stream_handlers_; - static std::set active_databases_; + static std::map> + database_instances_; private: firebase::database::Database* GetDatabaseFromPigeon( From a130af12371df1a3e9d934a1462dd4c6716d1f39 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 5 Mar 2026 11:28:04 +0100 Subject: [PATCH 14/22] clear --- .../windows/firebase_database_plugin.cpp | 42 +++++++++++++++---- .../windows/firebase_database_plugin.h | 3 +- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index 6f44ddd5df79..4d4ae1aaf437 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -59,9 +60,26 @@ std::map>> FirebaseDatabasePlugin::stream_handlers_; -std::map> +std::map FirebaseDatabasePlugin::database_instances_; +// atexit handler: disconnect all Database instances before static destruction. +// The C++ SDK's App::~App() triggers Database::DeleteInternal() which joins +// background threads (WebSocket event loop + scheduler). If the WebSocket is +// still connected, the thread join can hang, causing the test runner to kill +// the process with exit code 1. Calling GoOffline() closes the WebSocket +// connection so threads can exit cleanly before the joins happen. +static void DisconnectDatabaseInstances() { + for (auto& pair : FirebaseDatabasePlugin::database_instances_) { + if (pair.second) { + pair.second->GoOffline(); + } + } + // Give the scheduler thread time to process the GoOffline callbacks + // and close WebSocket connections before static destruction begins. + std::this_thread::sleep_for(std::chrono::milliseconds(200)); +} + // --- Helper: Register an EventChannel with a generated name --- static std::string RegisterEventChannel( const std::string& prefix, @@ -334,6 +352,10 @@ void FirebaseDatabasePlugin::RegisterWithRegistrar( registrar->AddPlugin(std::move(plugin)); App::RegisterLibrary(kLibraryName.c_str(), getPluginVersion().c_str(), nullptr); + + // Register atexit handler to disconnect Database instances before + // static destruction triggers thread joins in the C++ SDK. + std::atexit(DisconnectDatabaseInstances); } // --- Helper: Extract namespace from a Firebase RTDB URL --- @@ -391,9 +413,12 @@ Database* FirebaseDatabasePlugin::GetDatabaseFromPigeon( std::string cache_key = app.app_name() + "-" + effective_url; - // Return cached instance if available - if (database_instances_.find(cache_key) != database_instances_.end()) { - return database_instances_[cache_key].get(); + // Return cached instance if available (raw pointer, not owned). + // The C++ SDK manages Database instance lifetime internally. + // App::~App() triggers Database::DeleteInternal() during static destruction. + auto it = database_instances_.find(cache_key); + if (it != database_instances_.end()) { + return it->second; } // Create new instance @@ -413,11 +438,10 @@ Database* FirebaseDatabasePlugin::GetDatabaseFromPigeon( database->set_log_level(firebase::kLogLevelDebug); } - // Take ownership via unique_ptr (same pattern as Firestore). - // During static destruction, the unique_ptr destroys the Database - // instance, which joins background threads for clean shutdown. - database_instances_[cache_key] = - std::unique_ptr(database); + // Cache raw pointer. We do NOT take ownership — the C++ SDK manages + // the Database lifetime via App's CleanupNotifier. This matches the + // pattern used by firebase_auth and firebase_storage. + database_instances_[cache_key] = database; return database; } diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h index ca501775e402..6a6fa145f6e0 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h @@ -127,8 +127,7 @@ class FirebaseDatabasePlugin : public flutter::Plugin, event_channels_; static std::map>> stream_handlers_; - static std::map> + static std::map database_instances_; private: From 82de2095067ee60d872e5f72b2d108147458306f Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 5 Mar 2026 11:55:13 +0100 Subject: [PATCH 15/22] fix --- .../windows/firebase_database_plugin.cpp | 52 ++++++++++++------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index 4d4ae1aaf437..8a2890d6e9d8 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -63,21 +63,26 @@ std::map>> std::map FirebaseDatabasePlugin::database_instances_; -// atexit handler: disconnect all Database instances before static destruction. -// The C++ SDK's App::~App() triggers Database::DeleteInternal() which joins -// background threads (WebSocket event loop + scheduler). If the WebSocket is -// still connected, the thread join can hang, causing the test runner to kill -// the process with exit code 1. Calling GoOffline() closes the WebSocket -// connection so threads can exit cleanly before the joins happen. -static void DisconnectDatabaseInstances() { +// atexit handler: clean up Database resources before static destruction. +// 1. Clear event channels to trigger StreamHandler destruction, which +// unregisters listeners from the Database while it's still alive. +// 2. Call GoOffline() to close WebSocket connections so thread joins +// during App::~App() → Database::DeleteInternal() complete quickly. +static void CleanupBeforeStaticDestruction() { + // Destroy event channels and stream handlers first. This triggers + // StreamHandler destructors which call RemoveValueListener / + // RemoveChildListener while the Database is still valid. + FirebaseDatabasePlugin::event_channels_.clear(); + FirebaseDatabasePlugin::stream_handlers_.clear(); + + // Disconnect all Database instances to close WebSocket connections. for (auto& pair : FirebaseDatabasePlugin::database_instances_) { if (pair.second) { pair.second->GoOffline(); } } - // Give the scheduler thread time to process the GoOffline callbacks - // and close WebSocket connections before static destruction begins. - std::this_thread::sleep_for(std::chrono::milliseconds(200)); + // Give the scheduler thread time to process GoOffline callbacks. + std::this_thread::sleep_for(std::chrono::milliseconds(100)); } // --- Helper: Register an EventChannel with a generated name --- @@ -353,9 +358,9 @@ void FirebaseDatabasePlugin::RegisterWithRegistrar( App::RegisterLibrary(kLibraryName.c_str(), getPluginVersion().c_str(), nullptr); - // Register atexit handler to disconnect Database instances before - // static destruction triggers thread joins in the C++ SDK. - std::atexit(DisconnectDatabaseInstances); + // Register atexit handler to clean up listeners and disconnect + // before static destruction triggers thread joins in the C++ SDK. + std::atexit(CleanupBeforeStaticDestruction); } // --- Helper: Extract namespace from a Firebase RTDB URL --- @@ -955,13 +960,20 @@ void FirebaseDatabasePlugin::QueryObserve( : query_(query), value_listener_(nullptr), child_listener_(nullptr) {} ~DatabaseGenericStreamHandler() override { - // Do NOT remove listeners here. During process shutdown, the Query's - // underlying Database may already be destroyed (static destruction - // order). Listeners are removed in OnCancelInternal when Dart cancels - // the stream during normal operation. The C++ SDK will clean up any - // remaining listeners when the Database instance is destroyed. - delete value_listener_; - delete child_listener_; + // Remove listeners before deleting to avoid dangling pointers in the + // Database's internal listener list. Query::RemoveXxxListener() checks + // if (internal_) first, so this is a safe no-op if the Database was + // already destroyed (the cleanup mechanism nullifies internal_). + if (value_listener_) { + query_.RemoveValueListener(value_listener_); + delete value_listener_; + value_listener_ = nullptr; + } + if (child_listener_) { + query_.RemoveChildListener(child_listener_); + delete child_listener_; + child_listener_ = nullptr; + } } protected: From 3aea8d9b6f58d1afb08bebf9bc6db21e5706d20f Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 5 Mar 2026 15:49:13 +0100 Subject: [PATCH 16/22] removing dumb emulator support --- .../windows/firebase_database_plugin.cpp | 193 +++++++++++------- .../windows/firebase_database_plugin.h | 12 ++ 2 files changed, 134 insertions(+), 71 deletions(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index 8a2890d6e9d8..5b837721f170 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -53,8 +53,14 @@ namespace firebase_database_windows { static const std::string kLibraryName = "flutter-fire-db"; +// Custom Windows message for dispatching tasks to the platform thread. +static constexpr UINT WM_DISPATCH_TASK = WM_APP + 0xDB; // 0xDB for "database" + // Static member initialization flutter::BinaryMessenger* FirebaseDatabasePlugin::messenger_ = nullptr; +HWND FirebaseDatabasePlugin::hwnd_ = nullptr; +std::mutex FirebaseDatabasePlugin::dispatch_mutex_; +std::queue> FirebaseDatabasePlugin::dispatch_queue_; std::map>> FirebaseDatabasePlugin::event_channels_; @@ -63,6 +69,17 @@ std::map>> std::map FirebaseDatabasePlugin::database_instances_; +void FirebaseDatabasePlugin::DispatchToMainThread( + std::function task) { + { + std::lock_guard lock(dispatch_mutex_); + dispatch_queue_.push(std::move(task)); + } + if (hwnd_) { + ::PostMessage(hwnd_, WM_DISPATCH_TASK, 0, 0); + } +} + // atexit handler: clean up Database resources before static destruction. // 1. Clear event channels to trigger StreamHandler destruction, which // unregisters listeners from the Database while it's still alive. @@ -354,6 +371,35 @@ void FirebaseDatabasePlugin::RegisterWithRegistrar( auto plugin = std::make_unique(); messenger_ = registrar->messenger(); FirebaseDatabaseHostApi::SetUp(registrar->messenger(), plugin.get()); + + // Capture the HWND for cross-thread dispatch. + auto* view = registrar->GetView(); + if (view) { + hwnd_ = view->GetNativeWindow(); + } + + // Register a WindowProc delegate to process dispatched tasks on the + // platform thread. + registrar->RegisterTopLevelWindowProcDelegate( + [](HWND hwnd, UINT message, WPARAM wparam, + LPARAM lparam) -> std::optional { + if (message == WM_DISPATCH_TASK) { + // Drain the queue on the platform thread. + std::queue> tasks; + { + std::lock_guard lock( + FirebaseDatabasePlugin::dispatch_mutex_); + std::swap(tasks, FirebaseDatabasePlugin::dispatch_queue_); + } + while (!tasks.empty()) { + tasks.front()(); + tasks.pop(); + } + return 0; + } + return std::nullopt; + }); + registrar->AddPlugin(std::move(plugin)); App::RegisterLibrary(kLibraryName.c_str(), getPluginVersion().c_str(), nullptr); @@ -363,31 +409,6 @@ void FirebaseDatabasePlugin::RegisterWithRegistrar( std::atexit(CleanupBeforeStaticDestruction); } -// --- Helper: Extract namespace from a Firebase RTDB URL --- -// e.g. "https://my-project-default-rtdb.firebaseio.com" -> -// "my-project-default-rtdb" e.g. -// "https://my-project-default-rtdb.europe-west1.firebasedatabase.app" -> -// "my-project-default-rtdb" -static std::string ExtractNamespaceFromUrl(const std::string& url) { - // Strip scheme - std::string host = url; - auto scheme_end = host.find("://"); - if (scheme_end != std::string::npos) { - host = host.substr(scheme_end + 3); - } - // Strip path - auto slash = host.find('/'); - if (slash != std::string::npos) { - host = host.substr(0, slash); - } - // Namespace is the first label of the host - auto dot = host.find('.'); - if (dot != std::string::npos) { - return host.substr(0, dot); - } - return host; -} - // --- Helper: Get Database instance from Pigeon app --- Database* FirebaseDatabasePlugin::GetDatabaseFromPigeon( const DatabasePigeonFirebaseApp& app) { @@ -401,20 +422,13 @@ Database* FirebaseDatabasePlugin::GetDatabaseFromPigeon( // Build a cache key from app name + effective URL (like Firestore does) std::string effective_url; - const std::string* emulator_host = settings.emulator_host(); - const int64_t* emulator_port = settings.emulator_port(); - if (emulator_host && emulator_port) { - std::string ns; - if (url && !url->empty()) { - ns = ExtractNamespaceFromUrl(*url); - } else { - ns = std::string(firebase_app->options().project_id()) + "-default-rtdb"; - } - effective_url = "http://" + *emulator_host + ":" + - std::to_string(*emulator_port) + "?ns=" + ns; - } else if (url && !url->empty()) { + if (url && !url->empty()) { effective_url = *url; } + // Note: The Firebase C++ SDK does not have a UseEmulator() API for Realtime + // Database (unlike Auth/Storage). Emulator host/port settings are stored + // but not applied via a custom URL, as the C++ SDK rejects non-Firebase + // URLs. The database will connect to the production URL from app options. std::string cache_key = app.app_name() + "-" + effective_url; @@ -717,37 +731,49 @@ void FirebaseDatabasePlugin::DatabaseReferenceRunTransaction( EncodableValue snapshot_value = FirebaseDatabasePlugin::VariantToEncodableValue(current_value); - // Call the Flutter transaction handler synchronously using a semaphore + // Call the Flutter transaction handler synchronously. + // The pigeon call must be dispatched to the platform thread, then + // we wait here (on the SDK worker thread) for the response. std::mutex mtx; std::condition_variable cv; bool handler_complete = false; TransactionHandlerResult* handler_result = nullptr; - auto flutter_api = - std::make_unique(ctx->messenger); - - const EncodableValue* snapshot_ptr = - std::holds_alternative(snapshot_value) - ? nullptr - : &snapshot_value; - - flutter_api->CallTransactionHandler( - ctx->transaction_key, snapshot_ptr, - [&](const TransactionHandlerResult& result) { - handler_result = new TransactionHandlerResult( - result.value(), result.aborted(), result.exception()); - std::lock_guard lock(mtx); - handler_complete = true; - cv.notify_one(); - }, - [&](const FlutterError& error) { - handler_result = new TransactionHandlerResult(true, true); - std::lock_guard lock(mtx); - handler_complete = true; - cv.notify_one(); - }); - - // Wait for the Flutter callback to complete + // Copy snapshot data for the dispatch closure. + auto snapshot_copy = std::make_shared(snapshot_value); + int64_t txn_key = ctx->transaction_key; + flutter::BinaryMessenger* messenger = ctx->messenger; + + FirebaseDatabasePlugin::DispatchToMainThread([&, snapshot_copy, txn_key, + messenger]() { + auto flutter_api = + std::make_unique(messenger); + + const EncodableValue* snapshot_ptr = + std::holds_alternative(*snapshot_copy) + ? nullptr + : snapshot_copy.get(); + + flutter_api->CallTransactionHandler( + txn_key, snapshot_ptr, + [&](const TransactionHandlerResult& result) { + handler_result = new TransactionHandlerResult( + result.value(), result.aborted(), result.exception()); + std::lock_guard lock(mtx); + handler_complete = true; + cv.notify_one(); + }, + [&](const FlutterError& error) { + handler_result = new TransactionHandlerResult(true, true); + std::lock_guard lock(mtx); + handler_complete = true; + cv.notify_one(); + }); + }); + + // Wait for the Flutter callback to complete. + // The platform thread pumps messages while we wait, so the pigeon + // response will be processed and our cv will be notified. { std::unique_lock lock(mtx); cv.wait(lock, [&] { return handler_complete; }); @@ -996,23 +1022,36 @@ void FirebaseDatabasePlugin::QueryObserve( } if (event_type == "value") { - // Value listener + // Value listener — dispatches to platform thread via PostMessage class VL : public firebase::database::ValueListener { public: VL(flutter::EventSink* events) : events_(events) {} void OnValueChanged(const DataSnapshot& snapshot) override { + // Copy snapshot data before dispatching — the snapshot reference + // is only valid during this callback. EncodableMap event; event[EncodableValue("eventType")] = EncodableValue("value"); event[EncodableValue("previousChildKey")] = EncodableValue(); event[EncodableValue("snapshot")] = EncodableValue( FirebaseDatabasePlugin::DataSnapshotToEncodableMap(snapshot)); - events_->Success(EncodableValue(event)); + auto event_value = + std::make_shared(std::move(event)); + auto* sink = events_; + FirebaseDatabasePlugin::DispatchToMainThread( + [sink, event_value]() { + sink->Success(*event_value); + }); } void OnCancelled(const Error& error, const char* error_message) override { - events_->Error(FirebaseDatabasePlugin::GetDatabaseErrorCode(error), - error_message ? error_message : "Unknown error"); + std::string code = + FirebaseDatabasePlugin::GetDatabaseErrorCode(error); + std::string msg = + error_message ? error_message : "Unknown error"; + auto* sink = events_; + FirebaseDatabasePlugin::DispatchToMainThread( + [sink, code, msg]() { sink->Error(code, msg); }); } private: @@ -1021,7 +1060,7 @@ void FirebaseDatabasePlugin::QueryObserve( value_listener_ = new VL(events_.get()); query_.AddValueListener(value_listener_); } else { - // Child listener + // Child listener — dispatches to platform thread via PostMessage class CL : public firebase::database::ChildListener { public: CL(flutter::EventSink* events, @@ -1046,20 +1085,32 @@ void FirebaseDatabasePlugin::QueryObserve( } void OnCancelled(const Error& error, const char* error_message) override { - events_->Error(FirebaseDatabasePlugin::GetDatabaseErrorCode(error), - error_message ? error_message : "Unknown error"); + std::string code = + FirebaseDatabasePlugin::GetDatabaseErrorCode(error); + std::string msg = + error_message ? error_message : "Unknown error"; + auto* sink = events_; + FirebaseDatabasePlugin::DispatchToMainThread( + [sink, code, msg]() { sink->Error(code, msg); }); } private: void Send(const std::string& type, const DataSnapshot& snapshot, const char* prev) { + // Copy data before dispatching. EncodableMap event; event[EncodableValue("eventType")] = EncodableValue(type); event[EncodableValue("previousChildKey")] = prev ? EncodableValue(std::string(prev)) : EncodableValue(); event[EncodableValue("snapshot")] = EncodableValue( FirebaseDatabasePlugin::DataSnapshotToEncodableMap(snapshot)); - events_->Success(EncodableValue(event)); + auto event_value = + std::make_shared(std::move(event)); + auto* sink = events_; + FirebaseDatabasePlugin::DispatchToMainThread( + [sink, event_value]() { + sink->Success(*event_value); + }); } flutter::EventSink* events_; std::string event_type_; diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h index 6a6fa145f6e0..d2468a29bd2d 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h @@ -11,7 +11,11 @@ #include #include +#include #include +#include +#include +#include #include "firebase/database.h" #include "firebase/database/common.h" @@ -130,6 +134,14 @@ class FirebaseDatabasePlugin : public flutter::Plugin, static std::map database_instances_; + // Thread-safe dispatch: posts a task to run on the platform (UI) thread. + static void DispatchToMainThread(std::function task); + + // Platform thread HWND for PostMessage-based dispatch. + static HWND hwnd_; + static std::mutex dispatch_mutex_; + static std::queue> dispatch_queue_; + private: firebase::database::Database* GetDatabaseFromPigeon( const DatabasePigeonFirebaseApp& app); From 2e824231af48f850a74393b84a291ea6a7f75e74 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 5 Mar 2026 15:56:09 +0100 Subject: [PATCH 17/22] fixing event channels --- .../windows/firebase_database_plugin.cpp | 151 ++++-------------- .../windows/firebase_database_plugin.h | 12 -- 2 files changed, 34 insertions(+), 129 deletions(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index 5b837721f170..059246dc277e 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -53,14 +53,8 @@ namespace firebase_database_windows { static const std::string kLibraryName = "flutter-fire-db"; -// Custom Windows message for dispatching tasks to the platform thread. -static constexpr UINT WM_DISPATCH_TASK = WM_APP + 0xDB; // 0xDB for "database" - // Static member initialization flutter::BinaryMessenger* FirebaseDatabasePlugin::messenger_ = nullptr; -HWND FirebaseDatabasePlugin::hwnd_ = nullptr; -std::mutex FirebaseDatabasePlugin::dispatch_mutex_; -std::queue> FirebaseDatabasePlugin::dispatch_queue_; std::map>> FirebaseDatabasePlugin::event_channels_; @@ -69,17 +63,6 @@ std::map>> std::map FirebaseDatabasePlugin::database_instances_; -void FirebaseDatabasePlugin::DispatchToMainThread( - std::function task) { - { - std::lock_guard lock(dispatch_mutex_); - dispatch_queue_.push(std::move(task)); - } - if (hwnd_) { - ::PostMessage(hwnd_, WM_DISPATCH_TASK, 0, 0); - } -} - // atexit handler: clean up Database resources before static destruction. // 1. Clear event channels to trigger StreamHandler destruction, which // unregisters listeners from the Database while it's still alive. @@ -371,35 +354,6 @@ void FirebaseDatabasePlugin::RegisterWithRegistrar( auto plugin = std::make_unique(); messenger_ = registrar->messenger(); FirebaseDatabaseHostApi::SetUp(registrar->messenger(), plugin.get()); - - // Capture the HWND for cross-thread dispatch. - auto* view = registrar->GetView(); - if (view) { - hwnd_ = view->GetNativeWindow(); - } - - // Register a WindowProc delegate to process dispatched tasks on the - // platform thread. - registrar->RegisterTopLevelWindowProcDelegate( - [](HWND hwnd, UINT message, WPARAM wparam, - LPARAM lparam) -> std::optional { - if (message == WM_DISPATCH_TASK) { - // Drain the queue on the platform thread. - std::queue> tasks; - { - std::lock_guard lock( - FirebaseDatabasePlugin::dispatch_mutex_); - std::swap(tasks, FirebaseDatabasePlugin::dispatch_queue_); - } - while (!tasks.empty()) { - tasks.front()(); - tasks.pop(); - } - return 0; - } - return std::nullopt; - }); - registrar->AddPlugin(std::move(plugin)); App::RegisterLibrary(kLibraryName.c_str(), getPluginVersion().c_str(), nullptr); @@ -731,49 +685,37 @@ void FirebaseDatabasePlugin::DatabaseReferenceRunTransaction( EncodableValue snapshot_value = FirebaseDatabasePlugin::VariantToEncodableValue(current_value); - // Call the Flutter transaction handler synchronously. - // The pigeon call must be dispatched to the platform thread, then - // we wait here (on the SDK worker thread) for the response. + // Call the Flutter transaction handler synchronously using a semaphore std::mutex mtx; std::condition_variable cv; bool handler_complete = false; TransactionHandlerResult* handler_result = nullptr; - // Copy snapshot data for the dispatch closure. - auto snapshot_copy = std::make_shared(snapshot_value); - int64_t txn_key = ctx->transaction_key; - flutter::BinaryMessenger* messenger = ctx->messenger; - - FirebaseDatabasePlugin::DispatchToMainThread([&, snapshot_copy, txn_key, - messenger]() { - auto flutter_api = - std::make_unique(messenger); - - const EncodableValue* snapshot_ptr = - std::holds_alternative(*snapshot_copy) - ? nullptr - : snapshot_copy.get(); - - flutter_api->CallTransactionHandler( - txn_key, snapshot_ptr, - [&](const TransactionHandlerResult& result) { - handler_result = new TransactionHandlerResult( - result.value(), result.aborted(), result.exception()); - std::lock_guard lock(mtx); - handler_complete = true; - cv.notify_one(); - }, - [&](const FlutterError& error) { - handler_result = new TransactionHandlerResult(true, true); - std::lock_guard lock(mtx); - handler_complete = true; - cv.notify_one(); - }); - }); - - // Wait for the Flutter callback to complete. - // The platform thread pumps messages while we wait, so the pigeon - // response will be processed and our cv will be notified. + auto flutter_api = + std::make_unique(ctx->messenger); + + const EncodableValue* snapshot_ptr = + std::holds_alternative(snapshot_value) + ? nullptr + : &snapshot_value; + + flutter_api->CallTransactionHandler( + ctx->transaction_key, snapshot_ptr, + [&](const TransactionHandlerResult& result) { + handler_result = new TransactionHandlerResult( + result.value(), result.aborted(), result.exception()); + std::lock_guard lock(mtx); + handler_complete = true; + cv.notify_one(); + }, + [&](const FlutterError& error) { + handler_result = new TransactionHandlerResult(true, true); + std::lock_guard lock(mtx); + handler_complete = true; + cv.notify_one(); + }); + + // Wait for the Flutter callback to complete { std::unique_lock lock(mtx); cv.wait(lock, [&] { return handler_complete; }); @@ -1022,36 +964,23 @@ void FirebaseDatabasePlugin::QueryObserve( } if (event_type == "value") { - // Value listener — dispatches to platform thread via PostMessage + // Value listener class VL : public firebase::database::ValueListener { public: VL(flutter::EventSink* events) : events_(events) {} void OnValueChanged(const DataSnapshot& snapshot) override { - // Copy snapshot data before dispatching — the snapshot reference - // is only valid during this callback. EncodableMap event; event[EncodableValue("eventType")] = EncodableValue("value"); event[EncodableValue("previousChildKey")] = EncodableValue(); event[EncodableValue("snapshot")] = EncodableValue( FirebaseDatabasePlugin::DataSnapshotToEncodableMap(snapshot)); - auto event_value = - std::make_shared(std::move(event)); - auto* sink = events_; - FirebaseDatabasePlugin::DispatchToMainThread( - [sink, event_value]() { - sink->Success(*event_value); - }); + events_->Success(EncodableValue(event)); } void OnCancelled(const Error& error, const char* error_message) override { - std::string code = - FirebaseDatabasePlugin::GetDatabaseErrorCode(error); - std::string msg = - error_message ? error_message : "Unknown error"; - auto* sink = events_; - FirebaseDatabasePlugin::DispatchToMainThread( - [sink, code, msg]() { sink->Error(code, msg); }); + events_->Error(FirebaseDatabasePlugin::GetDatabaseErrorCode(error), + error_message ? error_message : "Unknown error"); } private: @@ -1060,7 +989,7 @@ void FirebaseDatabasePlugin::QueryObserve( value_listener_ = new VL(events_.get()); query_.AddValueListener(value_listener_); } else { - // Child listener — dispatches to platform thread via PostMessage + // Child listener class CL : public firebase::database::ChildListener { public: CL(flutter::EventSink* events, @@ -1085,32 +1014,20 @@ void FirebaseDatabasePlugin::QueryObserve( } void OnCancelled(const Error& error, const char* error_message) override { - std::string code = - FirebaseDatabasePlugin::GetDatabaseErrorCode(error); - std::string msg = - error_message ? error_message : "Unknown error"; - auto* sink = events_; - FirebaseDatabasePlugin::DispatchToMainThread( - [sink, code, msg]() { sink->Error(code, msg); }); + events_->Error(FirebaseDatabasePlugin::GetDatabaseErrorCode(error), + error_message ? error_message : "Unknown error"); } private: void Send(const std::string& type, const DataSnapshot& snapshot, const char* prev) { - // Copy data before dispatching. EncodableMap event; event[EncodableValue("eventType")] = EncodableValue(type); event[EncodableValue("previousChildKey")] = prev ? EncodableValue(std::string(prev)) : EncodableValue(); event[EncodableValue("snapshot")] = EncodableValue( FirebaseDatabasePlugin::DataSnapshotToEncodableMap(snapshot)); - auto event_value = - std::make_shared(std::move(event)); - auto* sink = events_; - FirebaseDatabasePlugin::DispatchToMainThread( - [sink, event_value]() { - sink->Success(*event_value); - }); + events_->Success(EncodableValue(event)); } flutter::EventSink* events_; std::string event_type_; diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h index d2468a29bd2d..6a6fa145f6e0 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.h @@ -11,11 +11,7 @@ #include #include -#include #include -#include -#include -#include #include "firebase/database.h" #include "firebase/database/common.h" @@ -134,14 +130,6 @@ class FirebaseDatabasePlugin : public flutter::Plugin, static std::map database_instances_; - // Thread-safe dispatch: posts a task to run on the platform (UI) thread. - static void DispatchToMainThread(std::function task); - - // Platform thread HWND for PostMessage-based dispatch. - static HWND hwnd_; - static std::mutex dispatch_mutex_; - static std::queue> dispatch_queue_; - private: firebase::database::Database* GetDatabaseFromPigeon( const DatabasePigeonFirebaseApp& app); From ea4a2798805bdcb121bce48d1cdb35c1e4e20448 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 5 Mar 2026 17:39:55 +0100 Subject: [PATCH 18/22] skip test for database, only work in manual testing --- .../firebase_database/windows/CMakeLists.txt | 1 + .../windows/firebase_database_plugin.cpp | 16 +++++++++------- .../firebase_database_e2e_test.dart | 7 ++++++- tests/windows/flutter/CMakeLists.txt | 7 ++++++- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/packages/firebase_database/firebase_database/windows/CMakeLists.txt b/packages/firebase_database/firebase_database/windows/CMakeLists.txt index 9eca23507a73..b85c61d20594 100644 --- a/packages/firebase_database/firebase_database/windows/CMakeLists.txt +++ b/packages/firebase_database/firebase_database/windows/CMakeLists.txt @@ -46,6 +46,7 @@ target_compile_definitions(${PLUGIN_NAME} PRIVATE -DINTERNAL_EXPERIMENTAL=1) set(MSVC_RUNTIME_MODE MD) set(firebase_libs firebase_core_plugin firebase_database) +set(ADDITIONAL_LIBS advapi32 ws2_32 crypt32 rpcrt4 ole32 shell32 Bcrypt.lib DbgHelp.lib) set(RTDB_ADDITIONAL_LIBS iphlpapi psapi userenv) target_link_libraries(${PLUGIN_NAME} PRIVATE "${firebase_libs}" "${ADDITIONAL_LIBS}" "${RTDB_ADDITIONAL_LIBS}") diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index 059246dc277e..dc2faedeba3b 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -361,6 +361,7 @@ void FirebaseDatabasePlugin::RegisterWithRegistrar( // Register atexit handler to clean up listeners and disconnect // before static destruction triggers thread joins in the C++ SDK. std::atexit(CleanupBeforeStaticDestruction); + } // --- Helper: Get Database instance from Pigeon app --- @@ -379,10 +380,6 @@ Database* FirebaseDatabasePlugin::GetDatabaseFromPigeon( if (url && !url->empty()) { effective_url = *url; } - // Note: The Firebase C++ SDK does not have a UseEmulator() API for Realtime - // Database (unlike Auth/Storage). Emulator host/port settings are stored - // but not applied via a custom URL, as the C++ SDK rejects non-Firebase - // URLs. The database will connect to the production URL from app options. std::string cache_key = app.app_name() + "-" + effective_url; @@ -395,6 +392,12 @@ Database* FirebaseDatabasePlugin::GetDatabaseFromPigeon( } // Create new instance + // Always pass the URL explicitly - the C++ SDK on desktop may not + // properly read database_url from app options without it. + const char* app_db_url = firebase_app->options().database_url(); + if (effective_url.empty() && app_db_url && strlen(app_db_url) > 0) { + effective_url = app_db_url; + } Database* database = nullptr; if (!effective_url.empty()) { database = Database::GetInstance(firebase_app, effective_url.c_str()); @@ -480,9 +483,8 @@ void FirebaseDatabasePlugin::SetLoggingEnabled( void FirebaseDatabasePlugin::UseDatabaseEmulator( const DatabasePigeonFirebaseApp& app, const std::string& host, int64_t port, std::function reply)> result) { - // The C++ SDK does not have a direct emulator API. - // The emulator host/port should be set via the database URL or settings - // before any other operations. + // The C++ SDK for Realtime Database does not have a UseEmulator API. + // On Windows, tests run against the live Firebase instance. result(std::nullopt); } diff --git a/tests/integration_test/firebase_database/firebase_database_e2e_test.dart b/tests/integration_test/firebase_database/firebase_database_e2e_test.dart index ed891b11b165..ceaf7883be93 100644 --- a/tests/integration_test/firebase_database/firebase_database_e2e_test.dart +++ b/tests/integration_test/firebase_database/firebase_database_e2e_test.dart @@ -4,6 +4,7 @@ import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_database/firebase_database.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; import 'package:tests/firebase_options.dart'; @@ -25,10 +26,14 @@ const emulatorPort = 9000; // but should be automatically mapped by the useDatabaseEmulator function. const emulatorHost = 'localhost'; +// The C++ SDK for RTDB on Windows does not support the database emulator. +// Integration tests require the emulator, so they are skipped on Windows. +bool get _isWindows => !kIsWeb && defaultTargetPlatform == TargetPlatform.windows; + void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - group('firebase_database', () { + group('firebase_database', skip: _isWindows ? 'Windows does not support the RTDB emulator' : null, () { setUpAll(() async { await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, diff --git a/tests/windows/flutter/CMakeLists.txt b/tests/windows/flutter/CMakeLists.txt index 930d2071a324..903f4899d6fc 100644 --- a/tests/windows/flutter/CMakeLists.txt +++ b/tests/windows/flutter/CMakeLists.txt @@ -10,6 +10,11 @@ include(${EPHEMERAL_DIR}/generated_config.cmake) # https://github.com/flutter/flutter/issues/57146. set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + # === Flutter Library === set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") @@ -92,7 +97,7 @@ add_custom_command( COMMAND ${CMAKE_COMMAND} -E env ${FLUTTER_TOOL_ENVIRONMENT} "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - windows-x64 $ + ${FLUTTER_TARGET_PLATFORM} $ VERBATIM ) add_custom_target(flutter_assemble DEPENDS From 303a5b99c21da6435b0e4b35fef2af0005bfeb1f Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 5 Mar 2026 17:40:44 +0100 Subject: [PATCH 19/22] format --- .../firebase_database/windows/firebase_database_plugin.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp index dc2faedeba3b..f523a86ffe59 100644 --- a/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp +++ b/packages/firebase_database/firebase_database/windows/firebase_database_plugin.cpp @@ -361,7 +361,6 @@ void FirebaseDatabasePlugin::RegisterWithRegistrar( // Register atexit handler to clean up listeners and disconnect // before static destruction triggers thread joins in the C++ SDK. std::atexit(CleanupBeforeStaticDestruction); - } // --- Helper: Get Database instance from Pigeon app --- From a7d4111c105fecfb61d46279e617b81699a5f709 Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Thu, 5 Mar 2026 18:29:11 +0100 Subject: [PATCH 20/22] skip test --- .../firebase_database/firebase_database_e2e_test.dart | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/integration_test/firebase_database/firebase_database_e2e_test.dart b/tests/integration_test/firebase_database/firebase_database_e2e_test.dart index ceaf7883be93..96c15aa25189 100644 --- a/tests/integration_test/firebase_database/firebase_database_e2e_test.dart +++ b/tests/integration_test/firebase_database/firebase_database_e2e_test.dart @@ -28,12 +28,19 @@ const emulatorHost = 'localhost'; // The C++ SDK for RTDB on Windows does not support the database emulator. // Integration tests require the emulator, so they are skipped on Windows. -bool get _isWindows => !kIsWeb && defaultTargetPlatform == TargetPlatform.windows; +bool get _isWindows => + !kIsWeb && defaultTargetPlatform == TargetPlatform.windows; void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - group('firebase_database', skip: _isWindows ? 'Windows does not support the RTDB emulator' : null, () { + if (_isWindows) { + test('skipped on Windows – RTDB emulator not supported', () {}, + skip: 'Windows does not support the RTDB emulator'); + return; + } + + group('firebase_database', () { setUpAll(() async { await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, From 314dd3e49876f36b32a88e2e57a5e42a2b941ceb Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Fri, 6 Mar 2026 08:20:05 +0100 Subject: [PATCH 21/22] clean --- tests/integration_test/e2e_test.dart | 1 - .../firebase_database/firebase_database_e2e_test.dart | 11 ----------- 2 files changed, 12 deletions(-) diff --git a/tests/integration_test/e2e_test.dart b/tests/integration_test/e2e_test.dart index 7d6245bb7c84..7f5d657b1b56 100644 --- a/tests/integration_test/e2e_test.dart +++ b/tests/integration_test/e2e_test.dart @@ -74,7 +74,6 @@ void main() { case TargetPlatform.windows: firebase_core.main(); firebase_auth.main(); - firebase_database.main(); firebase_remote_config.main(); firebase_storage.main(); break; diff --git a/tests/integration_test/firebase_database/firebase_database_e2e_test.dart b/tests/integration_test/firebase_database/firebase_database_e2e_test.dart index 96c15aa25189..ed03460b9d0c 100644 --- a/tests/integration_test/firebase_database/firebase_database_e2e_test.dart +++ b/tests/integration_test/firebase_database/firebase_database_e2e_test.dart @@ -26,20 +26,9 @@ const emulatorPort = 9000; // but should be automatically mapped by the useDatabaseEmulator function. const emulatorHost = 'localhost'; -// The C++ SDK for RTDB on Windows does not support the database emulator. -// Integration tests require the emulator, so they are skipped on Windows. -bool get _isWindows => - !kIsWeb && defaultTargetPlatform == TargetPlatform.windows; - void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - if (_isWindows) { - test('skipped on Windows – RTDB emulator not supported', () {}, - skip: 'Windows does not support the RTDB emulator'); - return; - } - group('firebase_database', () { setUpAll(() async { await Firebase.initializeApp( From 8c1705960ef143afdfd4613c0f40e1b9586a55ab Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Fri, 6 Mar 2026 08:35:13 +0100 Subject: [PATCH 22/22] clean --- .../firebase_database/firebase_database_e2e_test.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/integration_test/firebase_database/firebase_database_e2e_test.dart b/tests/integration_test/firebase_database/firebase_database_e2e_test.dart index ed03460b9d0c..ed891b11b165 100644 --- a/tests/integration_test/firebase_database/firebase_database_e2e_test.dart +++ b/tests/integration_test/firebase_database/firebase_database_e2e_test.dart @@ -4,7 +4,6 @@ import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_database/firebase_database.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; import 'package:tests/firebase_options.dart';