11/*
22 This source file is part of the Swift.org open source project
33
4- Copyright (c) 2021 Apple Inc. and the Swift project authors
4+ Copyright (c) 2021-2025 Apple Inc. and the Swift project authors
55 Licensed under Apache License v2.0 with Runtime Library Exception
66
77 See https://swift.org/LICENSE.txt for license information
1111import Foundation
1212import SymbolKit
1313
14+ #if canImport(os)
15+ import os
16+ private let logger = Logger ( subsystem: " org.swift.docc " , category: " ExternalReferenceResolverServiceClient " )
17+ #else
18+ private let logger = NoOpLoggerShim ( )
19+ #endif
20+
1421/// A client for performing link resolution requests to a documentation server.
1522class ExternalReferenceResolverServiceClient {
1623 /// The maximum amount of time, in seconds, to await a response from the external reference resolver.
@@ -73,21 +80,36 @@ class ExternalReferenceResolverServiceClient {
7380 }
7481
7582 guard resultGroup. wait ( timeout: . now( ) + . seconds( Self . responseTimeout) ) == . success else {
76- logError ( . timeout )
83+ logger . log ( " Timed out when resolving request. " )
7784 throw Error . timeout
7885 }
7986
8087 switch result {
8188 case . success( let data? ) ? :
8289 return data
8390 case . success? :
84- logError ( . missingPayload )
91+ logger . log ( " Received nil payload when resolving request. " )
8592 throw Error . missingPayload
8693 case . failure( let error) :
87- logError ( error)
94+ switch error {
95+ case . failedToEncodeRequest( let underlyingError) :
96+ logger. log ( " Unable to encode request for request: \( underlyingError. localizedDescription) " )
97+ case . invalidResponse( let underlyingError) :
98+ logger. log ( " Received invalid response when resolving request: \( underlyingError. localizedDescription) " )
99+ case . invalidResponseType( let receivedType) :
100+ logger. log ( " Received unknown response type when resolving request: ' \( receivedType) ' " )
101+ case . missingPayload:
102+ logger. log ( " Received nil payload when resolving request. " )
103+ case . timeout:
104+ logger. log ( " Timed out when resolving request. " )
105+ case . receivedErrorFromServer( let message) :
106+ logger. log ( " Received error from server when resolving request: \( message) " )
107+ case . unknownError:
108+ logger. log ( " Unknown error when resolving request. " )
109+ }
88110 throw error
89111 case nil :
90- logError ( . unknownError )
112+ logger . log ( " Unknown error when resolving request. " )
91113 throw Error . unknownError
92114 }
93115 }
@@ -103,25 +125,6 @@ class ExternalReferenceResolverServiceClient {
103125 . failure( . invalidResponseType( receivedType: message. type. rawValue) )
104126 }
105127 }
106-
107- private func logError( _ error: Error ) {
108- switch error {
109- case . failedToEncodeRequest( let underlyingError) :
110- xlog ( " Unable to encode request for request: \( underlyingError. localizedDescription) " )
111- case . invalidResponse( let underlyingError) :
112- xlog ( " Received invalid response when resolving request: \( underlyingError. localizedDescription) " )
113- case . invalidResponseType( let receivedType) :
114- xlog ( " Received unknown response type when resolving request: ' \( receivedType) ' " )
115- case . missingPayload:
116- xlog ( " Received nil payload when resolving request. " )
117- case . timeout:
118- xlog ( " Timed out when resolving request. " )
119- case . receivedErrorFromServer( let message) :
120- xlog ( " Received error from server when resolving request: \( message) " )
121- case . unknownError:
122- xlog ( " Unknown error when resolving request. " )
123- }
124- }
125128
126129 enum Error : Swift . Error {
127130 case failedToEncodeRequest( underlyingError: Swift . Error )
0 commit comments