// -*- c-basic-offset: 4 -*-
#ifndef CLICK_PRIOSCHED_HH
#define CLICK_PRIOSCHED_HH
#include <click/element.hh>
#include <click/notifier.hh>
CLICK_DECLS
/*
* =c
* PrioSched
* =s scheduling
* pulls from priority-scheduled inputs
* =d
* Each time a pull comes in the output, PrioSched pulls from
* each of the inputs starting from input 0.
* The packet from the first successful pull is returned.
* This amounts to a strict priority scheduler.
*
* The inputs usually come from Queues or other pull schedulers.
* PrioSched uses notification to avoid pulling from empty inputs.
*
* =a Queue, RoundRobinSched, StrideSched, DRRSched, SimplePrioSched
*/
class PrioSched : public Element { public:
PrioSched();
~PrioSched();
const char *class_name() const { return "PrioSched"; }
const char *port_count() const { return "-/1"; }
const char *processing() const { return PULL; }
int initialize(ErrorHandler *);
void cleanup(CleanupStage);
Packet *pull(int port);
private:
NotifierSignal *_signals;
};
CLICK_ENDDECLS
#endif
syntax highlighted by Code2HTML, v. 0.9.1