/*
 * Copyright (C) 2005 Mike Wray <mike.wray@hp.com>.
 *
 * This library is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of the
 * License, or  (at your option) any later version. This library is 
 * distributed in the  hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this library; if not, write to the Free Software Foundation,
 * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 */

#ifndef _VNETD_SELECTOR_H_
#define _VNETD_SELECTOR_H_

#include "list.h"
#include "select.h"

struct Conn;

typedef struct Selector {

    /** List the selector is linked into (if any). */
    struct list_head list;

    /** Function called by Selector_select() to add a selector to a select set.
     * The selector is closed if this returns an error (non-zero).
     */
    int (*select)(struct Selector *sel, struct SelectSet *set);

    /** Function called by Selector_selected() to notify a selector of select set.
     * The selector is closed if this returns an error (non-zero).
     */
    int (*selected)(struct Selector *sel, struct SelectSet *set);

    /** Function called by Selector_close() to close a selector.
     */
    void (*close)(struct Selector *sel);

    /** User data. */
    void *data;

} Selector;

void Selector_init(struct Selector *sel);
void Selector_close(struct Selector *sel);
int Selector_select(struct Selector *sel, struct SelectSet *set);
int Selector_selected(struct Selector *sel, struct SelectSet *set);

int conn_select_fn(struct Selector *sel, struct SelectSet *set);
int conn_selected_fn(struct Selector *sel, struct SelectSet *set);
void conn_close_fn(struct Selector *sel);
void Selector_conn_init(struct Selector *sel, struct Conn *conn,
                        int mode, void *data,
                        int (*fn)(struct Conn *conn, int mode));

#endif /* _VNETD_SELECTOR_H_ */
ethod='get' action='/cgit/cloud-email/mitmproxy/log/web/src/js/components/ContentView/MetaViews.jsx'>
<input type='hidden' name='id' value='9a43ff5da107a862169d75fa49fb0d43b172cd3c'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/cgit/cloud-email/mitmproxy/tree/?id=9a43ff5da107a862169d75fa49fb0d43b172cd3c'>root</a>/<a href='/cgit/cloud-email/mitmproxy/tree/web?id=9a43ff5da107a862169d75fa49fb0d43b172cd3c'>web</a>/<a href='/cgit/cloud-email/mitmproxy/tree/web/src?id=9a43ff5da107a862169d75fa49fb0d43b172cd3c'>src</a>/<a href='/cgit/cloud-email/mitmproxy/tree/web/src/js?id=9a43ff5da107a862169d75fa49fb0d43b172cd3c'>js</a>/<a href='/cgit/cloud-email/mitmproxy/tree/web/src/js/components?id=9a43ff5da107a862169d75fa49fb0d43b172cd3c'>components</a>/<a href='/cgit/cloud-email/mitmproxy/tree/web/src/js/components/ContentView?id=9a43ff5da107a862169d75fa49fb0d43b172cd3c'>ContentView</a>/<a href='/cgit/cloud-email/mitmproxy/tree/web/src/js/components/ContentView/MetaViews.jsx?id=9a43ff5da107a862169d75fa49fb0d43b172cd3c'>MetaViews.jsx</a></div><div class='content'>blob: b926738e5817d63500920eed1dd50e86beee3d98 (<a href='/cgit/cloud-email/mitmproxy/plain/web/src/js/components/ContentView/MetaViews.jsx?id=9a43ff5da107a862169d75fa49fb0d43b172cd3c'>plain</a>)
<table summary='blob content' class='blob'>
<tr><td class='linenumbers'><pre><a id='n1' href='#n1'>1</a>
<a id='n2' href='#n2'>2</a>
<a id='n3' href='#n3'>3</a>
<a id='n4' href='#n4'>4</a>
<a id='n5' href='#n5'>5</a>
<a id='n6' href='#n6'>6</a>
<a id='n7' href='#n7'>7</a>
<a id='n8' href='#n8'>8</a>
<a id='n9' href='#n9'>9</a>
<a id='n10' href='#n10'>10</a>
<a id='n11' href='#n11'>11</a>
<a id='n12' href='#n12'>12</a>
<a id='n13' href='#n13'>13</a>
<a id='n14' href='#n14'>14</a>
<a id='n15' href='#n15'>15</a>
<a id='n16' href='#n16'>16</a>
<a id='n17' href='#n17'>17</a>
<a id='n18' href='#n18'>18</a>
<a id='n19' href='#n19'>19</a>
<a id='n20' href='#n20'>20</a>
<a id='n21' href='#n21'>21</a>
<a id='n22' href='#n22'>22</a>
<a id='n23' href='#n23'>23</a>
<a id='n24' href='#n24'>24</a>
<a id='n25' href='#n25'>25</a>
<a id='n26' href='#n26'>26</a>
<a id='n27' href='#n27'>27</a>
<a id='n28' href='#n28'>28</a>
<a id='n29' href='#n29'>29</a>
<a id='n30' href='#n30'>30</a>
<a id='n31' href='#n31'>31</a>
<a id='n32' href='#n32'>32</a>
<a id='n33' href='#n33'>33</a>
<a id='n34' href='#n34'>34</a>
<a id='n35' href='#n35'>35</a>
<a id='n36' href='#n36'>36</a>
<a id='n37' href='#n37'>37</a>
</pre></td>
<td class='lines'><pre><code></code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.25.1</a>) at 2026-02-05 14:17:09 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
