generated from snivilised/astrolib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
concurrent-defs.go
57 lines (45 loc) · 2.03 KB
/
concurrent-defs.go
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package tv
import (
"github.com/snivilised/pants"
"github.com/snivilised/traverse/core"
)
type (
// TraverseInput represents the type of inputs accepted by the worker pool
TraverseInput struct {
// Node represents the file system entity (file or folder) for which
// a job will execute.
Node *core.Node
// Handler is the client defined callback function that should be
// invoked for all eligible Nodes.
Handler core.Client
}
// TraverseJobStream represents the core channel type of the worker pool's
// input stream. The client owns this channel and is responsible for
// closing it when done or invoking Conclude directly on the pool (See
// boost for more details).
TraverseJobStream = pants.JobStream[TraverseInput]
// TraverseJobStreamR worker pool's read stream, pool reads from this channel.
TraverseJobStreamR = pants.JobStreamR[TraverseInput]
// TraverseJobStreamW worker pool's write stream, client writes to this channel.
TraverseJobStreamW = pants.JobStreamW[TraverseInput]
// TraverseOutput represents the output of a single job executed by the pool.
TraverseOutput struct {
// Node represents the file system entity (file or folder) from
// which this output was generated via the client defined handler.
Node *core.Node
// Error error result of client's handler.
Error error
// Data is a custom field reserved for the client
Data any
}
// TraverseOutputStream represents the core channel type of the worker pool's
// output stream. The pool owns this stream and will be closed only when
// safe to do so, which will be anytime after navigation is complete.
// The channel is only closed when there are no remaining outstanding jobs
// and all workers are idle.
TraverseOutputStream = pants.JobOutputStream[TraverseOutput]
// TraverseOutputStreamR worker pool's output stream read by the client.
TraverseOutputStreamR = pants.JobOutputStreamR[TraverseOutput]
// TraverseOutputStreamW worker pool's output stream written to by the pool.
TraverseOutputStreamW = pants.JobOutputStreamW[TraverseOutput]
)