Commit eb231e64 authored by Olivier Crête's avatar Olivier Crête

pseudotcp: Add methods to query the state of the send and recv buffers

parent fe5dc58b
......@@ -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);
}
......@@ -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 */
......
......@@ -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>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment