func handleDataEvent()

in AppSyncRealTimeClient/Connection/AppSyncConnection/AppSyncSubscriptionConnection+DataHandler.swift [12:44]


    func handleDataEvent(response: AppSyncResponse) {
        guard let subscriptionItem = subscriptionItem else {
            AppSyncLogger.warn("[AppSyncSubscriptionConnection] \(#function): missing subscription item")
            return
        }

        guard response.id == subscriptionItem.identifier else {
            AppSyncLogger.verbose("""
                [AppSyncSubscriptionConnection] \(#function): \(subscriptionItem.identifier). Ignoring data event for \(response.id ?? "(null)")
                """)
            return
        }

        switch response.responseType {
        case .data:
            let jsonEncode = JSONEncoder()
            do {
                let resultData = response.payload
                let jsonData = try jsonEncode.encode(resultData)
                subscriptionItem.subscriptionEventHandler(.data(jsonData), subscriptionItem)
            } catch {
                AppSyncLogger.error(error)
                let jsonParserError = ConnectionProviderError.jsonParse(response.id, error)
                subscriptionItem.subscriptionEventHandler(.failed(jsonParserError), subscriptionItem)
            }
        case .subscriptionAck:
            subscriptionState = .subscribed
            subscriptionItem.subscriptionEventHandler(.connection(.connected), subscriptionItem)
        case .unsubscriptionAck:
            subscriptionState = .notSubscribed
            subscriptionItem.subscriptionEventHandler(.connection(.disconnected), subscriptionItem)
        }
    }