Channel
public final class Channel<Type>
A channel is a synchronization primitive.
Example:
let channel = Channel<Int>()
let coroutine = try Coroutine {
try channel.send(42, deadline: 1.second.fromNow())
}
let theAnswer = try channel.receive(deadline: 1.second.fromNow())
-
Creates a channel
Warning
A channel is a synchronization primitive, not a container. It doesn’t store any items.
Throws
The following errors might be thrown:
VeniceError.canceledCoroutine
Thrown when the operation is performed within a canceled coroutine.
VeniceError.outOfMemory
Thrown when the system doesn’t have enough memory to create a new channel.
Declaration
Swift
public init() throws -
Sends a value to the channel.
Declaration
Swift
public func send(_ value: Type, deadline: Deadline) throws -
Sends an error to the channel.
Declaration
Swift
public func send(_ error: Error, deadline: Deadline) throws -
Receives a value from channel.
Declaration
Swift
@discardableResult public func receive(deadline: Deadline) throws -> Type -
This function is used to inform the channel that no more
sendorreceiveshould be performed on the channel.Warning
Afterdoneis called on a channel, any attempts tosendorreceivewill result in aVeniceError.doneChannelerror.Declaration
Swift
public func done() -
Send-only reference to an existing channel.
Example:
let channel = Channel<Int>() func send(to channel: Channel<Int>.Sending) throws { try channel.send(42, deadline: 1.second.fromNow()) } try send(to: channel.sending)Declaration
Swift
public final class Sending -
Receive-only reference to an existing channel.
Example:
let channel = Channel<Int>() func receive(from channel: Channel<Int>.Receiving) throws { let value = try channel.receive(deadline: 1.second.fromNow()) } try receive(from: channel.receiving)Declaration
Swift
public final class Receiving
View on GitHub
Channel Class Reference