![]() |
![]() |
![]() |
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