diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2014-01-07 20:28:50 -0500 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2014-01-31 01:48:57 -0500 |
commit | eb231e64cc3e72d47ff5d0b5761389725778fab3 (patch) | |
tree | fa12dcd43cdbda81ed30e83326453b686ccfdc4a | |
parent | fe5dc58b239ac5ab252cd95b9a0650a208e5df9c (diff) | |
download | libnice-eb231e64cc3e72d47ff5d0b5761389725778fab3.tar.gz |
pseudotcp: Add methods to query the state of the send and recv buffers
-rw-r--r-- | agent/pseudotcp.c | 23 | ||||
-rw-r--r-- | agent/pseudotcp.h | 28 | ||||
-rw-r--r-- | docs/reference/libnice/libnice-sections.txt | 2 |
3 files changed, 53 insertions, 0 deletions
diff --git a/agent/pseudotcp.c b/agent/pseudotcp.c index 2e8ecc4..39e45ac 100644 --- a/agent/pseudotcp.c +++ b/agent/pseudotcp.c @@ -1796,3 +1796,26 @@ resize_receive_buffer (PseudoTcpSocket *self, guint32 new_size) priv->rcv_wnd = available_space; } +gint +pseudo_tcp_socket_get_available_bytes (PseudoTcpSocket *self) +{ + PseudoTcpSocketPrivate *priv = self->priv; + + if (priv->state != TCP_ESTABLISHED) { + return -1; + } + + return pseudo_tcp_fifo_get_buffered (&priv->rbuf); +} + +gboolean +pseudo_tcp_socket_can_send (PseudoTcpSocket *self) +{ + PseudoTcpSocketPrivate *priv = self->priv; + + if (priv->state != TCP_ESTABLISHED) { + return FALSE; + } + + return (pseudo_tcp_fifo_get_write_remaining (&priv->sbuf) != 0); +} diff --git a/agent/pseudotcp.h b/agent/pseudotcp.h index f8fa198..f5cd1a9 100644 --- a/agent/pseudotcp.h +++ b/agent/pseudotcp.h @@ -412,6 +412,34 @@ gboolean pseudo_tcp_socket_notify_packet(PseudoTcpSocket *self, */ void pseudo_tcp_set_debug_level (PseudoTcpDebugLevel level); + +/** + * pseudo_tcp_socket_get_available_bytes: + * @self: The #PseudoTcpSocket object. + * + * Gets the number of bytes of data in the buffer that can be read without + * receiving more packets from the network. + * + * Returns: The number of bytes or -1 if the connection is not established + * + * Since: 0.1.5 + */ + +gint pseudo_tcp_socket_get_available_bytes (PseudoTcpSocket *self); + +/** + * pseudo_tcp_socket_can_send: + * @self: The #PseudoTcpSocket object. + * + * Returns if there is space in the send buffer to send any data. + * + * Returns: %TRUE if data can be sent, %FALSE otherwise + * + * Since: 0.1.5 + */ + +gboolean pseudo_tcp_socket_can_send (PseudoTcpSocket *self); + G_END_DECLS #endif /* _PSEUDOTCP_H */ diff --git a/docs/reference/libnice/libnice-sections.txt b/docs/reference/libnice/libnice-sections.txt index b13a5ca..bc276ab 100644 --- a/docs/reference/libnice/libnice-sections.txt +++ b/docs/reference/libnice/libnice-sections.txt @@ -255,4 +255,6 @@ pseudo_tcp_socket_notify_clock pseudo_tcp_socket_notify_mtu pseudo_tcp_socket_notify_packet pseudo_tcp_set_debug_level +pseudo_tcp_socket_get_available_bytes +pseudo_tcp_socket_can_send </SECTION> |