Skip to content

Commit 4fe37e7

Browse files
Rename JSTransferring to JSSending
1 parent 2a081de commit 4fe37e7

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

Diff for: Sources/JavaScriptEventLoop/JSObject+Transferring.swift

+7-7
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import _CJavaScriptKit
55
import Synchronization
66
#endif
77

8-
/// A temporary object intended to transfer an object from one thread to another.
8+
/// A temporary object intended to send an object from one thread to another.
99
///
10-
/// ``JSTransferring`` is `Sendable` and it's intended to be shared across threads.
10+
/// ``JSSending`` is `Sendable` and it's intended to be shared across threads.
1111
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
12-
public struct JSTransferring<T>: @unchecked Sendable {
12+
public struct JSSending<T>: @unchecked Sendable {
1313
fileprivate struct Storage {
1414
/// The original object that is transferred.
1515
///
@@ -101,9 +101,9 @@ fileprivate final class _JSTransferringContext: Sendable {
101101
}
102102

103103

104-
extension JSTransferring where T == JSObject {
104+
extension JSSending where T == JSObject {
105105

106-
/// Transfers the ownership of a `JSObject` to be sent to another thread.
106+
/// Sends a `JSObject` to another thread.
107107
///
108108
/// - Precondition: The thread calling this method should have the ownership of the `JSObject`.
109109
/// - Postcondition: The original `JSObject` is no longer owned by the thread, further access to it
@@ -112,8 +112,8 @@ extension JSTransferring where T == JSObject {
112112
/// - Parameter object: The ``JSObject`` to be transferred.
113113
/// - Returns: A ``Transferring`` instance that can be shared across threads.
114114
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
115-
public init(_ object: JSObject) {
116-
self.init(
115+
public static func transfer(_ object: JSObject) -> JSSending {
116+
JSSending(
117117
sourceObject: object,
118118
construct: { JSObject(id: $0) },
119119
deconstruct: { $0.id },

Diff for: Tests/JavaScriptEventLoopTests/WebWorkerTaskExecutorTests.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ final class WebWorkerTaskExecutorTests: XCTestCase {
267267
func testTransferMainToWorker() async throws {
268268
let Uint8Array = JSObject.global.Uint8Array.function!
269269
let buffer = Uint8Array.new(100).buffer.object!
270-
let transferring = JSTransferring(buffer)
270+
let transferring = JSSending.transfer(buffer)
271271
let executor = try await WebWorkerTaskExecutor(numberOfThreads: 1)
272272
let task = Task(executorPreference: executor) {
273273
let buffer = try await transferring.receive()
@@ -282,7 +282,7 @@ final class WebWorkerTaskExecutorTests: XCTestCase {
282282
let task = Task(executorPreference: executor) {
283283
let Uint8Array = JSObject.global.Uint8Array.function!
284284
let buffer = Uint8Array.new(100).buffer.object!
285-
let transferring = JSTransferring(buffer)
285+
let transferring = JSSending.transfer(buffer)
286286
return transferring
287287
}
288288
let transferring = await task.value
@@ -292,7 +292,7 @@ final class WebWorkerTaskExecutorTests: XCTestCase {
292292

293293
func testTransferNonTransferable() async throws {
294294
let object = JSObject.global.Object.function!.new()
295-
let transferring = JSTransferring(object)
295+
let transferring = JSSending.transfer(object)
296296
let executor = try await WebWorkerTaskExecutor(numberOfThreads: 1)
297297
let task = Task<String?, Error>(executorPreference: executor) {
298298
do {
@@ -315,7 +315,7 @@ final class WebWorkerTaskExecutorTests: XCTestCase {
315315
let task = Task(executorPreference: executor1) {
316316
let Uint8Array = JSObject.global.Uint8Array.function!
317317
let buffer = Uint8Array.new(100).buffer.object!
318-
let transferring = JSTransferring(buffer)
318+
let transferring = JSSending.transfer(buffer)
319319
return transferring
320320
}
321321
let transferring = await task.value

0 commit comments

Comments
 (0)