aboutsummaryrefslogtreecommitdiffstats
path: root/shaper.h
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 19:30:32 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 19:30:32 -0800
commit8b23a6c7e1aee255004dd19098d4c2462b61b849 (patch)
tree7a4d682ba51f0ff0364c5ca2509f515bdaf96de9 /shaper.h
parentf721e3ac031f892af46f255a47d7f54a91317b30 (diff)
downloadexternal_qemu-8b23a6c7e1aee255004dd19098d4c2462b61b849.zip
external_qemu-8b23a6c7e1aee255004dd19098d4c2462b61b849.tar.gz
external_qemu-8b23a6c7e1aee255004dd19098d4c2462b61b849.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'shaper.h')
-rw-r--r--shaper.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/shaper.h b/shaper.h
new file mode 100644
index 0000000..45dbd5b
--- /dev/null
+++ b/shaper.h
@@ -0,0 +1,51 @@
+/* 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_ */