Documentation ¶
Index ¶
- type Option
- type PeerTaskQueue
- func (ptq *PeerTaskQueue) FullThaw()
- func (ptq *PeerTaskQueue) Options(options ...Option) Option
- func (ptq *PeerTaskQueue) PopTasks(targetMinWork int) (peer.ID, []*peertask.Task, int)
- func (ptq *PeerTaskQueue) PushTasks(to peer.ID, tasks ...peertask.Task)
- func (ptq *PeerTaskQueue) Remove(topic peertask.Topic, p peer.ID)
- func (ptq *PeerTaskQueue) TasksDone(to peer.ID, tasks ...*peertask.Task)
- func (ptq *PeerTaskQueue) ThawRound()
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Option ¶ added in v0.0.4
type Option func(*PeerTaskQueue) Option
Option is a function that configures the peer task queue
func IgnoreFreezing ¶ added in v0.0.4
IgnoreFreezing is an option that can make the task queue ignore freezing and unfreezing
func OnPeerAddedHook ¶ added in v0.0.4
OnPeerAddedHook adds a hook function that gets called whenever the ptq adds a new peer
func OnPeerRemovedHook ¶ added in v0.0.4
OnPeerRemovedHook adds a hook function that gets called whenever the ptq adds a new peer
func TaskMerger ¶ added in v0.2.0
func TaskMerger(tmfp peertracker.TaskMerger) Option
TaskMerger is an option that specifies merge behaviour when pushing a task with the same Topic as an existing Topic.
type PeerTaskQueue ¶
type PeerTaskQueue struct {
// contains filtered or unexported fields
}
PeerTaskQueue is a prioritized list of tasks to be executed on peers. Tasks are added to the queue, then popped off alternately between peers (roughly) to execute the block with the highest priority, or otherwise the one added first if priorities are equal.
func (*PeerTaskQueue) FullThaw ¶
func (ptq *PeerTaskQueue) FullThaw()
FullThaw completely thaws all peers in the queue so they can execute tasks.
func (*PeerTaskQueue) Options ¶ added in v0.0.4
func (ptq *PeerTaskQueue) Options(options ...Option) Option
Options uses configuration functions to configure the peer task queue. It returns an Option that can be called to reverse the changes.
func (*PeerTaskQueue) PopTasks ¶ added in v0.2.0
PopTasks finds the peer with the highest priority and pops as many tasks off the peer's queue as necessary to cover targetMinWork, in priority order. If there are not enough tasks to cover targetMinWork it just returns whatever is in the peer's queue.
- Peers with the most "active" work are deprioritized. This heuristic is for fairness, we try to keep all peers "busy".
- Peers with the most "pending" work are prioritized. This heuristic is so that peers with a lot to do get asked for work first.
The third response argument is pending work: the amount of work in the queue for this peer.
func (*PeerTaskQueue) PushTasks ¶ added in v0.2.0
func (ptq *PeerTaskQueue) PushTasks(to peer.ID, tasks ...peertask.Task)
PushTasks adds a new group of tasks for the given peer to the queue
func (*PeerTaskQueue) Remove ¶
func (ptq *PeerTaskQueue) Remove(topic peertask.Topic, p peer.ID)
Remove removes a task from the queue.
func (*PeerTaskQueue) TasksDone ¶ added in v0.2.0
func (ptq *PeerTaskQueue) TasksDone(to peer.ID, tasks ...*peertask.Task)
TasksDone is called to indicate that the given tasks have completed for the given peer
func (*PeerTaskQueue) ThawRound ¶
func (ptq *PeerTaskQueue) ThawRound()
ThawRound unthaws peers incrementally, so that those have been frozen the least become unfrozen and able to execute tasks first.