Low level scheduling functions for chunk and peer selection. More...
#include "scheduler_common.h"#include <stdlib.h>Go to the source code of this file.
Typedefs | |
| typedef int(* | filterFunction )(schedPeerID, schedChunkID) |
| Prototype for filter functions that select useful peer-chunk combinations. | |
| typedef double(* | peerEvaluateFunction )(schedPeerID *) |
| Prototype for function assigning a weigth to a peer. | |
| typedef double(* | chunkEvaluateFunction )(schedChunkID *) |
| Prototype for function assigning a weigth to a given chunk. | |
| typedef double(* | pairEvaluateFunction )(struct PeerChunk *) |
| Prototype for function assigning a weigth to a peer-chunk pair. | |
| typedef double(* | double2op )(double, double) |
| Prototype for a two operand double function used to combine weights. | |
Enumerations | |
| enum | SchedOrdering { SCHED_BEST, SCHED_WEIGHTED } |
Functions | |
| void | schedSelectPeers (SchedOrdering ordering, schedPeerID *peers, int peers_len, schedChunkID *chunks, int chunks_len, schedPeerID *selected, int *selected_len, filterFunction filter, peerEvaluateFunction peerevaluate) |
| Low level scheduler function for selecting peers. | |
| void | schedSelectChunks (SchedOrdering ordering, schedPeerID *peers, int peers_len, schedChunkID *chunks, int chunks_len, schedChunkID *selected, int *selected_len, filterFunction filter, chunkEvaluateFunction chunkevaluate) |
| Low level scheduler function for selecting chunks. | |
| void | schedSelectPeerFirst (SchedOrdering ordering, schedPeerID *peers, size_t peers_len, schedChunkID *chunks, size_t chunks_len, struct PeerChunk *selected, size_t *selected_len, filterFunction filter, peerEvaluateFunction peerevaluate, chunkEvaluateFunction chunkevaluate) |
| Low level scheduler function for selecting peer-chunk pairs in chunk first order. | |
| void | schedSelectChunkFirst (SchedOrdering ordering, schedPeerID *peers, size_t peers_len, schedChunkID *chunks, size_t chunks_len, struct PeerChunk *selected, size_t *selected_len, filterFunction filter, peerEvaluateFunction peerevaluate, chunkEvaluateFunction chunkevaluate) |
| Low level scheduler function for selecting peer-chunk pairs in peer first order. | |
| void | schedSelectComposed (SchedOrdering ordering, schedPeerID *peers, size_t peers_len, schedChunkID *chunks, size_t chunks_len, struct PeerChunk *selected, size_t *selected_len, filterFunction filter, peerEvaluateFunction peerevaluate, chunkEvaluateFunction chunkevaluate, double2op weightcombine) |
| Low level scheduler function for selecting peer-chunk pairs based on a composed evaluation function. | |
| void | schedSelectHybrid (SchedOrdering ordering, schedPeerID *peers, size_t peers_len, schedChunkID *chunks, size_t chunks_len, struct PeerChunk *selected, size_t *selected_len, filterFunction filter, pairEvaluateFunction pairevaluate) |
| Low level scheduler function for selecting peer-chunk pairs based on a hybrid evaluation function. | |
Low level scheduling functions for chunk and peer selection.
The interface contains highly customizable selector functions. Customization is supported along the following concepts:
| typedef double(* chunkEvaluateFunction)(schedChunkID *) |
Prototype for function assigning a weigth to a given chunk.
| typedef int(* filterFunction)(schedPeerID,schedChunkID) |
Prototype for filter functions that select useful peer-chunk combinations.
| typedef double(* pairEvaluateFunction)(struct PeerChunk *) |
Prototype for function assigning a weigth to a peer-chunk pair.
| typedef double(* peerEvaluateFunction)(schedPeerID *) |
Prototype for function assigning a weigth to a peer.
| enum SchedOrdering |
Scheduler ordering methods
| void schedSelectChunkFirst | ( | SchedOrdering | ordering, | |
| schedPeerID * | peers, | |||
| size_t | peers_len, | |||
| schedChunkID * | chunks, | |||
| size_t | chunks_len, | |||
| struct PeerChunk * | selected, | |||
| size_t * | selected_len, | |||
| filterFunction | filter, | |||
| peerEvaluateFunction | peerevaluate, | |||
| chunkEvaluateFunction | chunkevaluate | |||
| ) |
Low level scheduler function for selecting peer-chunk pairs in peer first order.
First a chunk is selected based on weights assigned by the chunkevaluate function. Then, maximum selected_len peers are selected for the given chunk based on weights assigned by the peerevaluate function.
| void schedSelectChunks | ( | SchedOrdering | ordering, | |
| schedPeerID * | peers, | |||
| int | peers_len, | |||
| schedChunkID * | chunks, | |||
| int | chunks_len, | |||
| schedChunkID * | selected, | |||
| int * | selected_len, | |||
| filterFunction | filter, | |||
| chunkEvaluateFunction | chunkevaluate | |||
| ) |
Low level scheduler function for selecting chunks.
If called with peers_len=0, it will not consider peers in the selection. Otherwise, if peers_len>0, only those chunks will be selected that could be interesting for at least one of the given peers.
| void schedSelectComposed | ( | SchedOrdering | ordering, | |
| schedPeerID * | peers, | |||
| size_t | peers_len, | |||
| schedChunkID * | chunks, | |||
| size_t | chunks_len, | |||
| struct PeerChunk * | selected, | |||
| size_t * | selected_len, | |||
| filterFunction | filter, | |||
| peerEvaluateFunction | peerevaluate, | |||
| chunkEvaluateFunction | chunkevaluate, | |||
| double2op | weightcombine | |||
| ) |
Low level scheduler function for selecting peer-chunk pairs based on a composed evaluation function.
A maximum of selected_len peer-chunk pairs are selected based on a composed weight function.
| [in] | chunkevaluate | function to assign a weight to each chunk |
| [in] | peerevaluate | function to assign a weight to each peer |
| [in] | weightcombine | operation to combine peer and chunk weight into one weight |
| void schedSelectHybrid | ( | SchedOrdering | ordering, | |
| schedPeerID * | peers, | |||
| size_t | peers_len, | |||
| schedChunkID * | chunks, | |||
| size_t | chunks_len, | |||
| struct PeerChunk * | selected, | |||
| size_t * | selected_len, | |||
| filterFunction | filter, | |||
| pairEvaluateFunction | pairevaluate | |||
| ) |
Low level scheduler function for selecting peer-chunk pairs based on a hybrid evaluation function.
A maximum of selected_len peer-chunk pairs are selected based on the given evaluation function.
| [in] | pairevaluate | function to assign a weight to each peer-chunk pair |
| void schedSelectPeerFirst | ( | SchedOrdering | ordering, | |
| schedPeerID * | peers, | |||
| size_t | peers_len, | |||
| schedChunkID * | chunks, | |||
| size_t | chunks_len, | |||
| struct PeerChunk * | selected, | |||
| size_t * | selected_len, | |||
| filterFunction | filter, | |||
| peerEvaluateFunction | peerevaluate, | |||
| chunkEvaluateFunction | chunkevaluate | |||
| ) |
Low level scheduler function for selecting peer-chunk pairs in chunk first order.
First a peer is selected based on weights assigned by the peerevaluate function. Then, maximum selected_len chunks are selected for the given peer based on weights assigned by the chunkevaluate function.
| void schedSelectPeers | ( | SchedOrdering | ordering, | |
| schedPeerID * | peers, | |||
| int | peers_len, | |||
| schedChunkID * | chunks, | |||
| int | chunks_len, | |||
| schedPeerID * | selected, | |||
| int * | selected_len, | |||
| filterFunction | filter, | |||
| peerEvaluateFunction | peerevaluate | |||
| ) |
Low level scheduler function for selecting peers.
If called with chunks_len=0, it will not consider chunks in the selection. Otherwise, if chunks_len>0, only those peers will be selected that could be interesting for at least one of the given chunks.
| [in] | ordering | the ordering method to be used |
| [in] | peers | list of peers to select from |
| [in] | peers_len | length of peers list |
| [in] | chunk | list of chunks to select from |
| [in] | chunks_len | length of chunks list |
| [out] | selected | list of peers selected by the function |
| [in,out] | selected_len | in: maximum number of peers to select; out: number of peers selected |
| [in] | filter | only peers that satisfy the filter condition can be selected |
| [in] | peerevaluate | peers are selected based on the weight assigned by this evaluator function |
1.6.3