NAF Core Library
libnaf 0.6.0 API documentation

sort.h

Go to the documentation of this file.
00001 /*
00002  ** sort.h
00003  ** NAF flow sorting support
00004  **
00005  ** ------------------------------------------------------------------------
00006  ** Copyright (C) 2006-2007 Carnegie Mellon University. All Rights Reserved.
00007  ** ------------------------------------------------------------------------
00008  ** Authors: Brian Trammell <bht@cert.org>
00009  ** ------------------------------------------------------------------------
00010  ** GNU General Public License (GPL) Rights pursuant to Version 2, June 1991
00011  ** Government Purpose License Rights (GPLR) pursuant to DFARS 252.225-7013
00012  ** ------------------------------------------------------------------------
00013  */
00014 
00023 /* idem hack */
00024 #ifndef _NAF_SORT_H_
00025 #define _NAF_SORT_H_
00026 
00027 #include <naf/autoinc.h>
00028 #include <naf/nafcore.h>
00029 
00034 #define NAF_SORT_FIELDCOUNT 18
00035 
00041 typedef gboolean (*NAFSortFlushFn) (
00042     void            *ctx,
00043     NAFlow          *flow,
00044     GError          **err);
00045 
00047 typedef struct _NAFSorter {
00049     GMemChunk       *chunk;
00051     GPtrArray       *array;
00053     uint32_t        desc[NAF_SORT_FIELDCOUNT];
00055     uint32_t        limit;
00057     gboolean        defined;
00060     gboolean        active;
00061 } NAFSorter;
00062 
00071 void naf_sort_init(
00072     NAFSorter           *sorter);
00073 
00082 void naf_sort_reinit(
00083     NAFSorter           *sorter);
00084 
00091 void naf_sort_begin(
00092     NAFSorter           *sorter);
00093 
00103 void naf_sort_flow(
00104     NAFSorter           *sorter,
00105     NAFlow              *flow);
00106 
00117 void naf_sort_flow_kv(
00118     NAFSorter           *sorter,
00119     NAFlowKey           *key,
00120     NAFlowVal           *val);
00121 
00134 gboolean naf_sort_flush(
00135     NAFSorter           *sorter,
00136     NAFSortFlushFn      ffn,
00137     void                *fctx,
00138     GError              **err);
00139 
00147 void naf_sort_print(
00148     NAFSorter           *sorter,
00149     GString             *str);
00150 
00159 gboolean naf_sort_parse(
00160     GScanner            *scanner,
00161     NAFSorter           *sorter);
00162 
00163 /* end idem */
00164 #endif