亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? element.hh

?? Click is a modular router toolkit. To use it you ll need to know how to compile and install the sof
?? HH
?? 第 1 頁 / 共 2 頁
字號:
 * configuration parsing functions, should place that code inside a * static_cleanup() static member function.  Click's build machinery will find * that function and cause it to be called when the element code is unloaded. * * static_cleanup functions are called in an arbitrary and unpredictable order * (not, for example, the configure_phase() order, and not the reverse of the * static_initialize order).  Element authors are responsible for handling * static cleanup dependencies. * * For Click to find a static_cleanup declaration, it must appear inside the * element class's class declaration on its own line and have the following * prototype: * * @code * static void static_cleanup(); * @endcode * * It must also have public accessibility. * * @sa Element::static_initialize */inline voidElement::static_cleanup(){}/** @brief Return the element's router. */inline Router*Element::router() const{    return _router;}/** @brief Return the element's index within its router. * @invariant this == router()->element(eindex()) */inline intElement::eindex() const{    return _eindex;}/** @brief Return the element's index within router @a r. * * Returns -1 if @a r != router(). */inline intElement::eindex(Router* r) const{    return (router() == r ? _eindex : -1);}/** @brief Return the number of input or output ports. * @param isoutput false for input ports, true for output ports */inline intElement::nports(bool isoutput) const{    return _nports[isoutput];}/** @brief Return the number of input ports. */inline intElement::ninputs() const{    return _nports[0];}/** @brief Return the number of output ports. */inline intElement::noutputs() const{    return _nports[1];}/** @brief Return one of the element's ports. * @param isoutput false for input ports, true for output ports * @param port port number * * An assertion fails if @a p is out of range. */inline const Element::Port&Element::port(bool isoutput, int port) const{    assert((unsigned) port < (unsigned) _nports[isoutput]);    return _ports[isoutput][port];}/** @brief Return one of the element's input ports. * @param port port number * * An assertion fails if @a port is out of range. * * @sa Port, port */inline const Element::Port&Element::input(int port) const{    return Element::port(false, port);}/** @brief Return one of the element's output ports. * @param port port number * * An assertion fails if @a port is out of range. * * @sa Port, port */inline const Element::Port&Element::output(int port) const{    return Element::port(true, port);}/** @brief Check whether a port is active. * @param isoutput false for input ports, true for output ports * @param port port number * * Returns true iff @a port is in range and @a port is active.  Push outputs * and pull inputs are active; pull outputs and push inputs are not. * * @sa Element::Port::active */inline boolElement::port_active(bool isoutput, int port) const{    return (unsigned) port < (unsigned) nports(isoutput)	&& _ports[isoutput][port].active();}/** @brief Check whether output @a port is push. * * Returns true iff output @a port exists and is push.  @sa port_active */inline boolElement::output_is_push(int port) const{    return port_active(true, port);}/** @brief Check whether output @a port is pull. * * Returns true iff output @a port exists and is pull. */inline boolElement::output_is_pull(int port) const{    return (unsigned) port < (unsigned) nports(true)	&& !_ports[1][port].active();}/** @brief Check whether input @a port is pull. * * Returns true iff input @a port exists and is pull.  @sa port_active */inline boolElement::input_is_pull(int port) const{    return port_active(false, port);}/** @brief Check whether input @a port is push. * * Returns true iff input @a port exists and is push. */inline boolElement::input_is_push(int port) const{    return (unsigned) port < (unsigned) nports(false)	&& !_ports[0][port].active();}#if CLICK_STATS >= 2# define PORT_ASSIGN(o) _packets = 0; _owner = (o)#elif CLICK_STATS >= 1# define PORT_ASSIGN(o) _packets = 0; (void) (o)#else# define PORT_ASSIGN(o) (void) (o)#endifinlineElement::Port::Port()    : _e(0), _port(-2){    PORT_ASSIGN(0);}inline voidElement::Port::assign(Element *owner, Element *e, int port, bool isoutput){    PORT_ASSIGN(owner);    _e = e;    _port = port;    (void) isoutput;}/** @brief Returns whether this port is active (a push output or a pull input). * * @sa Element::port_active */inline boolElement::Port::active() const{    return _port >= 0;}/** @brief Returns the element connected to this active port. * * Returns 0 if this port is not active(). */inline Element*Element::Port::element() const{    return _e;}/** @brief Returns the port number of the port connected to this active port. * * Returns < 0 if this port is not active(). */inline intElement::Port::port() const{    return _port;}/** @brief Push packet @a p over this port. * * Pushes packet @a p downstream through the router configuration by passing * it to the next element's @link Element::push() push() @endlink function. * Returns when the rest of the router finishes processing @a p. * * This port must be an active() push output port.  Usually called from * element code like @link Element::output output(i) @endlink .push(p). * * When element code calls Element::Port::push(@a p), it relinquishes control * of packet @a p.  When push() returns, @a p may have been altered or even * freed by downstream elements.  Thus, you must not use @a p after pushing it * downstream.  To push a copy and keep a copy, see Packet::clone(). * * output(i).push(p) basically behaves like the following code, although it * maintains additional statistics depending on how CLICK_STATS is defined: * * @code * output(i).element()->push(output(i).port(), p); * @endcode */inline voidElement::Port::push(Packet* p) const{    assert(_e && p);#if CLICK_STATS >= 1    ++_packets;#endif#if CLICK_STATS >= 2    ++_e->input(_port)._packets;    click_cycles_t c0 = click_get_cycles();    _e->push(_port, p);    click_cycles_t x = click_get_cycles() - c0;    ++_e->_calls;    _e->_self_cycles += x;    _owner->_child_cycles += x;#else    _e->push(_port, p);#endif}/** @brief Pull a packet over this port and return it. * * Pulls a packet from upstream in the router configuration by calling the * previous element's @link Element::pull() pull() @endlink function.  When * the router finishes processing, returns the result. * * This port must be an active() pull input port.  Usually called from element * code like @link Element::input input(i) @endlink .pull(). * * input(i).pull() basically behaves like the following code, although it * maintains additional statistics depending on how CLICK_STATS is defined: * * @code * input(i).element()->pull(input(i).port()) * @endcode */inline Packet*Element::Port::pull() const{    assert(_e);#if CLICK_STATS >= 2    click_cycles_t c0 = click_get_cycles();    Packet *p = _e->pull(_port);    click_cycles_t x = click_get_cycles() - c0;    ++_e->_calls;    _e->_self_cycles += x;    _owner->_child_cycles += x;    if (p)	++_e->output(_port)._packets;#else    Packet *p = _e->pull(_port);#endif#if CLICK_STATS >= 1    if (p)	++_packets;#endif    return p;}/** @brief Push packet @a p to output @a port, or kill it if @a port is out of * range. * * @param port output port number * @param p packet to push * * If @a port is in range (>= 0 and < noutputs()), then push packet @a p * forward using output(@a port).push(@a p).  Otherwise, kill @a p with @a p * ->kill(). * * @note It is invalid to call checked_output_push() on a pull output @a port. */inline voidElement::checked_output_push(int port, Packet* p) const{    if ((unsigned) port < (unsigned) noutputs())	_ports[1][port].push(p);    else	p->kill();}#undef PORT_ASSIGNCLICK_ENDDECLS#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区高清| 欧美一级欧美三级在线观看| 日韩一区二区在线免费观看| 国产精品久久久久久亚洲毛片 | 日韩三级.com| 亚洲视频一二三| 国产成人精品免费在线| 欧美一二三四区在线| 综合欧美亚洲日本| 国产高清在线观看免费不卡| 日韩亚洲欧美在线| 亚洲成人激情自拍| 91啪亚洲精品| 国产精品久久久久影院老司| 综合电影一区二区三区| 亚洲精品在线免费观看视频| 亚洲成人资源网| 色综合网站在线| 国产农村妇女毛片精品久久麻豆| 免费成人在线影院| 欧美高清hd18日本| 亚洲电影欧美电影有声小说| 91传媒视频在线播放| 中文字幕佐山爱一区二区免费| 国产精品18久久久久久久久久久久| 日韩一区二区精品葵司在线| 五月天激情小说综合| 欧美视频一区在线| 亚洲影院理伦片| 91国产福利在线| 综合久久国产九一剧情麻豆| 丁香网亚洲国际| 亚洲国产精品黑人久久久| 国产剧情在线观看一区二区| 欧美精品一区二区三区高清aⅴ | 亚洲精品第一国产综合野| 成人一区二区在线观看| 欧美国产国产综合| 丁香婷婷深情五月亚洲| 国产精品美女久久久久aⅴ国产馆| 国产99久久久国产精品免费看| 国产三级三级三级精品8ⅰ区| 国产精品91xxx| 国产日韩欧美高清| 成人在线综合网| 国产精品视频免费看| av福利精品导航| 亚洲欧美另类在线| 在线视频中文字幕一区二区| 亚洲综合激情另类小说区| 欧美视频你懂的| 人人狠狠综合久久亚洲| 精品国产a毛片| 国产成人午夜片在线观看高清观看| 久久新电视剧免费观看| 成人小视频免费观看| 亚洲天堂福利av| 欧美色区777第一页| 欧美aaaaaa午夜精品| 国产亚洲一本大道中文在线| 成人激情综合网站| 亚洲精品中文在线影院| 欧美伦理影视网| 国产尤物一区二区在线| 国产精品三级电影| 在线免费不卡电影| 久久精品久久综合| 中文字幕av一区 二区| 日本韩国欧美在线| 视频在线在亚洲| 亚洲精品一区二区三区影院 | 日本在线不卡一区| 国产无一区二区| 色中色一区二区| 免费成人在线影院| 亚洲欧洲一区二区三区| 欧美浪妇xxxx高跟鞋交| 国产一区二区在线观看视频| 亚洲欧洲精品一区二区三区| 欧美老人xxxx18| 粉嫩13p一区二区三区| 亚洲午夜在线观看视频在线| 精品国产精品一区二区夜夜嗨| www.在线成人| 日韩电影免费在线| 欧美国产综合色视频| 精品视频一区二区三区免费| 国产乱人伦偷精品视频不卡 | 国产丝袜欧美中文另类| 91黄色免费版| 国内欧美视频一区二区| 一区二区三区四区不卡视频| 欧美一区二区视频在线观看2020 | 色88888久久久久久影院按摩 | 亚洲欧洲制服丝袜| 日韩欧美色综合| 在线免费观看一区| 国产精品18久久久久久久久久久久 | 99久久久久久| 另类人妖一区二区av| 亚洲男人的天堂在线观看| 欧美va亚洲va国产综合| 91福利视频在线| 国产精品一区二区免费不卡| 亚洲五码中文字幕| 久久九九全国免费| 在线电影院国产精品| 99久久国产综合色|国产精品| 六月丁香婷婷久久| 一区二区视频免费在线观看| 亚洲成av人影院| 日本一区二区在线不卡| 91麻豆精品91久久久久久清纯| www.66久久| 国产真实乱子伦精品视频| 亚洲一二三区不卡| 国产精品国产自产拍高清av| 精品国产乱码久久久久久浪潮| 欧美日韩免费高清一区色橹橹 | 日韩精品免费专区| 亚洲视频香蕉人妖| 久久久美女毛片| 欧美肥妇free| 欧美三级电影在线观看| 91网站黄www| 国产福利精品导航| 欧美aaaaa成人免费观看视频| 亚洲一区av在线| 亚洲男人天堂一区| 中文字幕成人av| 久久午夜色播影院免费高清| 日韩欧美成人激情| 欧美一级生活片| 欧美日韩精品久久久| 色94色欧美sute亚洲线路一久| 波多野结衣的一区二区三区| 国产精品一区二区不卡| 久久99精品视频| 青娱乐精品视频在线| 日韩国产精品91| 亚洲精品免费播放| 亚洲欧美日韩在线不卡| √…a在线天堂一区| 亚洲欧洲成人精品av97| 国产午夜精品一区二区三区嫩草 | 91.com视频| 欧美年轻男男videosbes| 欧美三级日韩在线| 欧美日韩一区在线| 欧美专区在线观看一区| 欧美在线免费视屏| 欧美日韩欧美一区二区| 欧美精品日日鲁夜夜添| 欧美一区二区免费观在线| 欧美日韩精品久久久| 制服丝袜av成人在线看| 91精品国产综合久久久久久久 | 91免费观看国产| 色综合天天性综合| 日本久久一区二区| 欧美视频一二三区| 亚洲色欲色欲www在线观看| 中文字幕一区二区三区色视频| 亚洲欧洲99久久| 亚洲精品成人天堂一二三| 亚洲图片欧美综合| 日韩一区精品字幕| 男男视频亚洲欧美| 韩国v欧美v日本v亚洲v| 丁香五精品蜜臀久久久久99网站| 不卡一区二区三区四区| 色偷偷成人一区二区三区91| 欧美中文字幕一区二区三区亚洲| 欧美日韩激情一区| 日韩欧美亚洲一区二区| 久久久久久久久久久久电影| 国产精品污污网站在线观看| 亚洲私人黄色宅男| 亚洲v日本v欧美v久久精品| 日韩av午夜在线观看| 国内成人自拍视频| 成人国产精品免费观看视频| 日本韩国欧美在线| 欧美一级艳片视频免费观看| 久久久久国产精品厨房| 综合av第一页| 日韩精品久久久久久| 久久精品99久久久| 成人免费毛片aaaaa**| 91黄色在线观看| 欧美一二三在线| 国产精品电影一区二区三区| 亚洲成a人片综合在线| 韩国女主播一区| 色网综合在线观看| 日韩一本二本av| 国产欧美日韩在线看| 一区二区三区日韩精品视频| 免费观看日韩电影| 99国产一区二区三精品乱码|