Skip to content

Commit 44b82c7

Browse files
authored
fix: close http client on deinit of service client (#283)
1 parent 551bd22 commit 44b82c7

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/HttpProtocolClientGenerator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@ open class HttpProtocolClientGenerator(
4242
private val model: Model = ctx.model
4343
private val symbolProvider = ctx.symbolProvider
4444
private val serviceShape = ctx.service
45-
private val clientGeneratorInitialization = HttpProtocolClientInitialization(ctx, writer, properties, serviceConfig)
45+
private val httpProtocolServiceClient = HttpProtocolServiceClient(ctx, writer, properties, serviceConfig)
4646
fun render() {
4747
val serviceSymbol = symbolProvider.toSymbol(serviceShape)
4848
writer.addImport(SwiftDependency.CLIENT_RUNTIME.target)
4949
writer.addFoundationImport()
5050
httpProtocolCustomizable.renderInternals(ctx)
51-
clientGeneratorInitialization.renderClientInitialization(serviceSymbol)
51+
httpProtocolServiceClient.render(serviceSymbol)
5252
writer.write("")
5353
renderOperationsInExtension(serviceSymbol)
5454
}
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ package software.amazon.smithy.swift.codegen.integration
33
import software.amazon.smithy.codegen.core.Symbol
44
import software.amazon.smithy.swift.codegen.SwiftWriter
55

6-
open class HttpProtocolClientInitialization(
6+
open class HttpProtocolServiceClient(
77
ctx: ProtocolGenerator.GenerationContext,
88
private val writer: SwiftWriter,
99
private val properties: List<ClientProperty>,
1010
private val serviceConfig: ServiceConfig
1111
) {
1212
private val serviceName: String = ctx.settings.sdkId
1313

14-
fun renderClientInitialization(serviceSymbol: Symbol) {
14+
fun render(serviceSymbol: Symbol) {
1515
writer.openBlock("public class ${serviceSymbol.name} {", "}") {
1616
writer.write("let client: SdkHttpClient")
1717
writer.write("let config: ${serviceConfig.typeName}")
@@ -35,6 +35,10 @@ open class HttpProtocolClientInitialization(
3535
writer.write("self.config = config")
3636
}
3737
writer.write("")
38+
writer.openBlock("deinit {", "}") {
39+
writer.write("client.close()")
40+
}
41+
writer.write("")
3842
// FIXME: possible move generation of the config to a separate file or above the service client
3943
renderConfig(serviceSymbol)
4044
}

smithy-swift-codegen/src/test/kotlin/HttpProtocolClientGeneratorTests.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@ class HttpProtocolClientGeneratorTests {
5353
self.decoder = config.decoder
5454
self.config = config
5555
}
56-
56+
57+
deinit {
58+
client.close()
59+
}
60+
5761
public class ExampleClientConfiguration: ClientRuntime.Configuration {
5862
5963
public static func `default`() throws -> ExampleClientConfiguration {

0 commit comments

Comments
 (0)