aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/vlib/builtin/chan.v
blob: 1692d5f9aede837ccc9eccf29a4d6fd0143dc61a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
module builtin

// ChanState describes the result of an attempted channel transaction.
pub enum ChanState {
	success
	not_ready // push()/pop() would have to wait, but no_block was requested
	closed
}

/*
The following methods are only stubs.
The real implementation is in `vlib/sync/channels.v`
*/

// close closes the channel for further push transactions.
// closed channels cannot be pushed to, however they can be popped
// from as long as there is still objects available in the channel buffer.
pub fn (ch chan) close() {}

// try_pop returns `ChanState.success` if an object is popped from the channel.
// try_pop effectively pops from the channel without waiting for objects to become available.
// Both the test and pop transaction is done atomically.
pub fn (ch chan) try_pop(obj voidptr) ChanState {
	return .success
}

// try_push returns `ChanState.success` if the object is pushed to the channel.
// try_push effectively both push and test if the transaction `ch <- a` succeeded.
// Both the test and push transaction is done atomically.
pub fn (ch chan) try_push(obj voidptr) ChanState {
	return .success
}