| /* Copyright (C) 2007-2008 The Android Open Source Project | 
 | ** | 
 | ** This software is licensed under the terms of the GNU General Public | 
 | ** License version 2, as published by the Free Software Foundation, and | 
 | ** may be copied, distributed, and modified under those terms. | 
 | ** | 
 | ** This program 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 General Public License for more details. | 
 | */ | 
 | #ifndef _SLIRP_SHAPER_H_ | 
 | #define _SLIRP_SHAPER_H_ | 
 |  | 
 | #include <stddef.h> | 
 |  | 
 | /* a NetShaper object is used to limit the throughput of data packets | 
 |  * at a fixed rate expressed in bits/seconds | 
 |  */ | 
 | typedef struct NetShaperRec_*  NetShaper; | 
 | typedef void (*NetShaperSendFunc)( void*  data, size_t  size, void*  opaque); | 
 |  | 
 | NetShaper   netshaper_create  ( int                do_copy, | 
 |                                 NetShaperSendFunc  send_func ); | 
 |  | 
 | void        netshaper_set_rate(NetShaper  shaper, double  rate ); | 
 |  | 
 | void        netshaper_send( NetShaper  shaper, void* data, size_t  size ); | 
 |  | 
 | void        netshaper_send_aux( NetShaper  shaper, void* data, size_t  size, void*  opaque ); | 
 |  | 
 | int         netshaper_can_send( NetShaper  shaper ); | 
 |  | 
 | void        netshaper_destroy (NetShaper   shaper); | 
 |  | 
 | /* a NetDelay object is used to simulate network connection latencies */ | 
 | typedef struct NetDelayRec_*  NetDelay; | 
 |  | 
 | NetDelay   netdelay_create( NetShaperSendFunc  send_func ); | 
 | void       netdelay_set_latency( NetDelay  delay, int  min_ms, int  max_ms ); | 
 | void       netdelay_send( NetDelay  delay, const void*  data, size_t  size ); | 
 | void       netdelay_send_aux( NetDelay  delay, const void*  data, size_t  size, void*  opaque ); | 
 | void       netdelay_destroy( NetDelay  delay ); | 
 |  | 
 | /** in vl.c */ | 
 | /* network traffic shaper and delayer */ | 
 | extern NetShaper   slirp_shaper_in; | 
 | extern NetShaper   slirp_shaper_out; | 
 | extern NetDelay    slirp_delay_in; | 
 |  | 
 | #endif /* _SLIRP_SHAPER_H_ */ |