// -*- c-basic-offset: 4 -*-
#ifndef CLICK_BWRATEDSPLITTER_HH
#define CLICK_BWRATEDSPLITTER_HH
#include "elements/standard/ratedsplitter.hh"
CLICK_DECLS

/*
 * =c
 * BandwidthRatedSplitter(RATE)
 * =s shaping
 * splits flow of packets at specified bandwidth rate
 * =processing
 * Push
 * =d
 *
 * BandwidthRatedSplitter has two output ports.  All incoming packets up to a
 * maximum of RATE are emitted on output port 0.  Any remaining packets are
 * emitted on output port 1.  RATE is a bandwidth, such as "384 kbps".
 * Unlike BandwidthMeter, the base RATE is emitted on output port
 * 0 even when the input rate is greater than RATE.
 *
 * =h rate read/write
 * rate of splitting
 *
 * =a RatedSplitter, BandwidthMeter, BandwidthShaper, BandwidthRatedUnqueue */

class BandwidthRatedSplitter : public RatedSplitter { public:

    BandwidthRatedSplitter();
    ~BandwidthRatedSplitter();

    const char *class_name() const	{ return "BandwidthRatedSplitter"; }

    void push(int port, Packet *);

};

CLICK_ENDDECLS
#endif
