⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 randomsample.hh

📁 COPE the first practical network coding scheme which is developped on click
💻 HH
字号:
// -*- mode: c++; c-basic-offset: 4 -*-#ifndef CLICK_RANDOMSAMPLE_HH#define CLICK_RANDOMSAMPLE_HH#include <click/element.hh>#include <click/atomic.hh>CLICK_DECLS/* * =c * * RandomSample([P, I<KEYWORDS>]) * * =s dropping * * samples packets with some probability * * =d * * Samples packets with probability P. One out of 1/P packets are sent to the * first output. The remaining packets are dropped, unless the element has two * outputs, in which case they are emitted on output 1. * * If you don't specify P, you must supply one of the SAMPLE and DROP keyword * arguments. * * Keyword arguments are: * * =over 8 * * =item SAMPLE I<P> * * Sets the sampling probability to I<P>. * * =item DROP I<Q> * * The element will drop packets with probability I<Q>. Same as suppling (1 - * I<Q>) as the sampling probability. * * =item ACTIVE * * Boolean. RandomSample is active or inactive; when inactive, it sends all * packets to output 0. Default is true (active). * * =back * * =h sampling_prob read/write * * Returns or sets the sampling probability. * * =h drop_prob read/write * * Returns or sets the drop probability, which is 1 minus the sampling * probability. * * =h active read/write * * Makes the element active or inactive. * * =h drops read-only * * Returns the number of packets dropped. * * =a RandomBitErrors */class RandomSample : public Element { public:      RandomSample();    ~RandomSample();    const char *class_name() const		{ return "RandomSample"; }    const char *processing() const		{ return "a/ah"; }    void notify_noutputs(int);    int configure(Vector<String> &, ErrorHandler *);    int initialize(ErrorHandler *);    bool can_live_reconfigure() const		{ return true; }    void add_handlers();    void configuration(Vector<String> &) const;        void push(int port, Packet *);    Packet *pull(int port);  private:    enum { SAMPLING_SHIFT = 28 };    enum { SAMPLING_MASK = (1 << SAMPLING_SHIFT) - 1 };        uint32_t _sampling_prob;		// out of (1<<SAMPLING_SHIFT)    bool _active;    atomic_uint32_t _drops;    static String read_handler(Element *, void *);    };CLICK_ENDDECLS#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -