| libnice Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | Object Hierarchy | Properties | ||||
#include <pseudotcp.h>
PseudoTcpSocket;
enum PseudoTcpState;
enum PseudoTcpWriteResult;
PseudoTcpCallbacks;
enum PseudoTcpDebugLevel;
PseudoTcpSocket * pseudo_tcp_socket_new (guint32 conversation,
PseudoTcpCallbacks *callbacks);
gboolean pseudo_tcp_socket_connect (PseudoTcpSocket *self);
gint pseudo_tcp_socket_recv (PseudoTcpSocket *self,
char *buffer,
size_t len);
gint pseudo_tcp_socket_send (PseudoTcpSocket *self,
const char *buffer,
guint32 len);
void pseudo_tcp_socket_close (PseudoTcpSocket *self,
gboolean force);
int pseudo_tcp_socket_get_error (PseudoTcpSocket *self);
gboolean pseudo_tcp_socket_get_next_clock (PseudoTcpSocket *self,
long *timeout);
void pseudo_tcp_socket_notify_clock (PseudoTcpSocket *self);
void pseudo_tcp_socket_notify_mtu (PseudoTcpSocket *self,
guint16 mtu);
gboolean pseudo_tcp_socket_notify_packet (PseudoTcpSocket *self,
const gchar *buffer,
guint32 len);
void pseudo_tcp_set_debug_level (PseudoTcpDebugLevel level);
"callbacks" gpointer : Read / Write "conversation" guint : Read / Write / Construct Only "state" guint : Read
The PseudoTcpSocket is an object implementing a Pseudo Tcp Socket for use over UDP. The socket will implement a subset of the TCP stack to allow for a reliable transport over non-reliable sockets (such as UDP).
See the file tests/test-pseudotcp.c in the source package for an example of how to use the object.
typedef struct _PseudoTcpSocket PseudoTcpSocket;
The PseudoTcpSocket is the GObject implementing the Pseudo TCP Socket
Since 0.0.11
typedef enum {
TCP_LISTEN,
TCP_SYN_SENT,
TCP_SYN_RECEIVED,
TCP_ESTABLISHED,
TCP_CLOSED
} PseudoTcpState;
An enum representing the state of the PseudoTcpSocket.
See also: "state"
| The socket's initial state. The socket isn't connected and is listening for an incoming connection | |
| The socket has sent a connection request (SYN) packet and is waiting for an answer | |
| The socket has received a connection request (SYN) packet. | |
| The socket is connected | |
| The socket has been closed |
Since 0.0.11
typedef enum {
WR_SUCCESS,
WR_TOO_LARGE,
WR_FAIL
} PseudoTcpWriteResult;
An enum representing the result value of the write operation requested by the PseudoTcpSocket.
See also: PseudoTcpCallbacks:WritePacket
| The write operation was successful | |
| The socket type requires that message be sent atomically and the size of the message to be sent made this impossible. | |
| There was an error sending the message |
Since 0.0.11
typedef struct {
gpointer user_data;
void (*PseudoTcpOpened) (PseudoTcpSocket *tcp, gpointer data);
void (*PseudoTcpReadable) (PseudoTcpSocket *tcp, gpointer data);
void (*PseudoTcpWritable) (PseudoTcpSocket *tcp, gpointer data);
void (*PseudoTcpClosed) (PseudoTcpSocket *tcp, guint32 error, gpointer data);
PseudoTcpWriteResult (*WritePacket) (PseudoTcpSocket *tcp,
const gchar * buffer, guint32 len, gpointer data);
} PseudoTcpCallbacks;
A structure containing callbacks functions that will be called by the PseudoTcpSocket when some events happen.
See also: PseudoTcpWriteResult
gpointer |
A user defined pointer to be passed to the callbacks |
| The PseudoTcpSocket is now connected | |
| The socket is readable | |
| The socket is writable | |
| The socket was closed | |
| This callback is called when the socket needs to send data. |
Since 0.0.11
typedef enum {
PSEUDO_TCP_DEBUG_NONE = 0,
PSEUDO_TCP_DEBUG_NORMAL,
PSEUDO_TCP_DEBUG_VERBOSE,
} PseudoTcpDebugLevel;
Valid values of debug levels to be set.
| Disable debug messages | |
| Enable basic debug messages | |
| Enable verbose debug messages |
Since 0.0.11
PseudoTcpSocket * pseudo_tcp_socket_new (guint32 conversation,PseudoTcpCallbacks *callbacks);
Creates a new PseudoTcpSocket for the specified conversation
The callbacks must be non-NULL, in order to get notified of packets the
socket needs to send.
If the callbacks structure was dynamicly allocated, it can be freed
after the call pseudo_tcp_socket_new
|
The conversation id for the socket. |
|
A pointer to the PseudoTcpCallbacks structure for getting notified of the PseudoTcpSocket events. |
Returns : |
The new PseudoTcpSocket object, NULL on error |
Since 0.0.11
gboolean pseudo_tcp_socket_connect (PseudoTcpSocket *self);
Connects the PseudoTcpSocket to the peer with the same conversation id.
The connection will only be successful after the
PseudoTcpCallbacks:PseudoTcpOpened callback is called
|
The PseudoTcpSocket object. |
Returns : |
TRUE on success, FALSE on failure (not in TCP_LISTEN state)
See also: |
Since 0.0.11
gint pseudo_tcp_socket_recv (PseudoTcpSocket *self,char *buffer,size_t len);
Receive data from the socket.
Only call this on the PseudoTcpCallbacks:PseudoTcpReadable callback.
This function should be called in a loop. If this function does not
return -1 with EWOULDBLOCK as the error, the
PseudoTcpCallbacks:PseudoTcpReadable callback will not be called again.
|
The PseudoTcpSocket object. |
|
The buffer to fill with received data |
|
The length of buffer
|
Returns : |
The number of bytes received or -1 in case of error
See also: |
Since 0.0.11
gint pseudo_tcp_socket_send (PseudoTcpSocket *self,const char *buffer,guint32 len);
Send data on the socket.
If this function return -1 with EWOULDBLOCK as the error, or if the return
value is lower than len, then the PseudoTcpCallbacks:PseudoTcpWritable
callback will be called when the socket will become writable.
|
The PseudoTcpSocket object. |
|
The buffer with data to send |
|
The length of buffer
|
Returns : |
The number of bytes sent or -1 in case of error
See also: |
Since 0.0.11
void pseudo_tcp_socket_close (PseudoTcpSocket *self,gboolean force);
Close the socket. IF force is set to FALSE, the socket will finish sending
pending data before closing.
The PseudoTcpCallbacks:PseudoTcpClosed callback will not be called once
the socket gets closed. It is only used for aborted connection.
Instead, the socket gets closed when the pseudo_tcp_socket_get_next_clock()
function returns FALSE.
See also: pseudo_tcp_socket_get_next_clock()
|
The PseudoTcpSocket object. |
|
TRUE to close the socket forcefully, FALSE to close it gracefully |
Since 0.0.11
int pseudo_tcp_socket_get_error (PseudoTcpSocket *self);
Return the last encountered error.
The return value can be :
EINVAL (for pseudo_tcp_socket_connect()).
EWOULDBLOCK or ENOTCONN (for pseudo_tcp_socket_recv() and
pseudo_tcp_socket_send()).
|
The PseudoTcpSocket object. |
Returns : |
The error code
See also: See also: See also: |
Since 0.0.11
gboolean pseudo_tcp_socket_get_next_clock (PseudoTcpSocket *self,long *timeout);
Call this to determine the timeout needed before the next time call
to pseudo_tcp_socket_notify_clock() should be made.
|
The PseudoTcpSocket object. |
|
A pointer to be filled with the new timeout. |
Returns : |
TRUE if timeout was filled, FALSE if the socket is closed and
ready to be destroyed.
See also: |
Since 0.0.11
void pseudo_tcp_socket_notify_clock (PseudoTcpSocket *self);
Start the processing of receiving data, pending data or syn/acks.
Call this based on timeout value returned by
pseudo_tcp_socket_get_next_clock().
It's ok to call this too frequently.
See also: pseudo_tcp_socket_get_next_clock()
|
The PseudoTcpSocket object. |
Since 0.0.11
void pseudo_tcp_socket_notify_mtu (PseudoTcpSocket *self,guint16 mtu);
Set the MTU of the socket
|
The PseudoTcpSocket object. |
|
The new MTU of the socket |
Since 0.0.11
gboolean pseudo_tcp_socket_notify_packet (PseudoTcpSocket *self,const gchar *buffer,guint32 len);
Notify the PseudoTcpSocket when a new packet arrives
|
The PseudoTcpSocket object. |
|
The buffer containing the received data |
|
The length of buffer
|
Returns : |
TRUE if the packet was processed successfully, FALSE otherwise |
Since 0.0.11
void pseudo_tcp_set_debug_level (PseudoTcpDebugLevel level);
Sets the debug level to enable/disable normal/verbose debug messages.
|
The level of debug to set |
Since 0.0.11
"callbacks" property"callbacks" gpointer : Read / Write
Structure with the callbacks to call when PseudoTcp events happen.
"conversation" property"conversation" guint : Read / Write / Construct Only
The TCP Conversation ID.
Default value: 0
"state" property"state" guint : Read
The current state (enum PseudoTcpState) of the PseudoTcp socket.
Allowed values: <= 4
Default value: 0