]> sjero.net Git - iperf/blob - include/Extractor.h
Original 2.0.2 iperf sources
[iperf] / include / Extractor.h
1 /*--------------------------------------------------------------- 
2  * Copyright (c) 1999,2000,2001,2002,2003                              
3  * The Board of Trustees of the University of Illinois            
4  * All Rights Reserved.                                           
5  *--------------------------------------------------------------- 
6  * Permission is hereby granted, free of charge, to any person    
7  * obtaining a copy of this software (Iperf) and associated       
8  * documentation files (the "Software"), to deal in the Software  
9  * without restriction, including without limitation the          
10  * rights to use, copy, modify, merge, publish, distribute,        
11  * sublicense, and/or sell copies of the Software, and to permit     
12  * persons to whom the Software is furnished to do
13  * so, subject to the following conditions: 
14  *
15  *     
16  * Redistributions of source code must retain the above 
17  * copyright notice, this list of conditions and 
18  * the following disclaimers. 
19  *
20  *     
21  * Redistributions in binary form must reproduce the above 
22  * copyright notice, this list of conditions and the following 
23  * disclaimers in the documentation and/or other materials 
24  * provided with the distribution. 
25  * 
26  *     
27  * Neither the names of the University of Illinois, NCSA, 
28  * nor the names of its contributors may be used to endorse 
29  * or promote products derived from this Software without
30  * specific prior written permission. 
31  * 
32  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
33  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
34  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
35  * NONINFRINGEMENT. IN NO EVENT SHALL THE CONTIBUTORS OR COPYRIGHT 
36  * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
37  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 
38  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE
39  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
40  * ________________________________________________________________
41  * National Laboratory for Applied Network Research 
42  * National Center for Supercomputing Applications 
43  * University of Illinois at Urbana-Champaign 
44  * http://www.ncsa.uiuc.edu
45  * ________________________________________________________________ 
46  *
47  * Extractor.h
48  * by Ajay Tirumala (tirumala@ncsa.uiuc.edu)
49  * -------------------------------------------------------------------
50  * Extract data from a file, used to measure the transfer rates
51  * for various stream formats. 
52  *
53  * E.g. Use a gzipped file to measure the transfer rates for 
54  * compressed data
55  * Use an MPEG file to measure the transfer rates of 
56  * Multimedia data formats
57  * Use a plain BMP file to measure the transfer rates of 
58  * Uncompressed data
59  *
60  * This is beneficial especially in measuring bandwidth across WAN
61  * links where data compression takes place before data transmission 
62  * ------------------------------------------------------------------- */
63
64 #ifndef _EXTRACTOR_H
65 #define _EXTRACTOR_H
66
67 #include <stdlib.h>
68 #include <stdio.h>
69 #include "Settings.hpp"
70
71 #ifdef __cplusplus
72 extern "C" {
73 #endif
74
75     /**
76      * Constructor
77      * @arg fileName   Name of the file 
78      * @arg size       Block size for reading
79      */
80     void Extractor_Initialize( char *fileName, int size, thread_Settings *mSettings );
81
82     /**
83      * Constructor
84      * @arg fp         File Pointer 
85      * @arg size       Block size for reading
86      */
87     void Extractor_InitializeFile( FILE *fp, int size, thread_Settings *mSettings );
88
89
90     /*
91      * Fetches the next data block from 
92      * the file
93      * @arg block     Pointer to the data read
94      * @return        Number of bytes read
95      */
96     int Extractor_getNextDataBlock( char *block, thread_Settings *mSettings );
97
98
99     /**
100      * Function which determines whether
101      * the file stream is still readable
102      * @return true, if readable; false, if not
103      */
104     int Extractor_canRead( thread_Settings *mSettings );
105
106     /**
107      * This is used to reduce the read size
108      * Used in UDP transfer to accomodate the
109      * the header (timestamp)
110      * @arg delta         Size to reduce
111      */
112     void Extractor_reduceReadSize( int delta, thread_Settings *mSettings );
113
114     /**
115      * Destructor
116      */
117     void Extractor_Destroy( thread_Settings *mSettings ); 
118 #ifdef __cplusplus
119 } /* end extern "C" */
120 #endif
121
122 #endif
123