-
Couldn't load subscription status.
- Fork 118
adoption of sendable #252
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
adoption of sendable #252
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| //===----------------------------------------------------------------------===// | ||
| // | ||
| // This source file is part of the SwiftAWSLambdaRuntime open source project | ||
| // | ||
| // Copyright (c) 2022 Apple Inc. and the SwiftAWSLambdaRuntime project authors | ||
| // Licensed under Apache License v2.0 | ||
| // | ||
| // See LICENSE.txt for license information | ||
| // See CONTRIBUTORS.txt for the list of SwiftAWSLambdaRuntime project authors | ||
| // | ||
| // SPDX-License-Identifier: Apache-2.0 | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| // Sendable bridging types | ||
|
|
||
| #if compiler(>=5.6) | ||
| public typealias _AWSLambdaSendable = Sendable | ||
| #else | ||
| public typealias _AWSLambdaSendable = Any | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -18,7 +18,7 @@ import NIOCore | |
| /// Lambda terminator. | ||
| /// Utility to manage the lambda shutdown sequence. | ||
| public final class LambdaTerminator { | ||
| private typealias Handler = (EventLoop) -> EventLoopFuture<Void> | ||
| fileprivate typealias Handler = (EventLoop) -> EventLoopFuture<Void> | ||
|
|
||
| private var storage: Storage | ||
|
|
||
|
|
@@ -99,7 +99,7 @@ extension LambdaTerminator { | |
| } | ||
|
|
||
| extension LambdaTerminator { | ||
| private final class Storage { | ||
| fileprivate final class Storage { | ||
| private let lock: Lock | ||
| private var index: [RegistrationKey] | ||
| private var map: [RegistrationKey: (name: String, handler: Handler)] | ||
|
|
@@ -137,3 +137,10 @@ extension LambdaTerminator { | |
| let underlying: [Error] | ||
| } | ||
| } | ||
|
|
||
| // Ideally this would not be @unchecked Sendable, but Sendable checks do not understand locks | ||
| // We can transition this to an actor once we drop support for older Swift versions | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We can transition this to an actor once we have custom executors :) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. that too |
||
| #if compiler(>=5.5) && canImport(_Concurrency) | ||
| extension LambdaTerminator: @unchecked Sendable {} | ||
| extension LambdaTerminator.Storage: @unchecked Sendable {} | ||
| #endif | ||
Uh oh!
There was an error while loading. Please reload this page.