|
RTRlib
|
The RTR transport sockets implement the communication channel (e.g., SSH, TCP, TCP-AO) between an RTR server and client. More...
Modules | |
| SSH transport socket | |
| An implementation of the SSH protocol for the RTR transport. | |
| TCP transport socket | |
| An implementation of the TCP protocol for the RTR transport. | |
Data Structures | |
| struct | tr_socket |
| A transport socket datastructure. More... | |
Macros | |
| #define | RTRLIB_TRANSPORT_CONNECT_TIMEOUT_DEFAULT 30 |
| Default connect timeout. | |
Typedefs | |
| typedef void(* | tr_close_fp) (void *socket) |
| A function pointer to a technology specific close function. | |
| typedef int(* | tr_open_fp) (void *socket) |
| A function pointer to a technology specific open function. | |
| typedef void(* | tr_free_fp) (struct tr_socket *tr_sock) |
| A function pointer to a technology specific free function. | |
| typedef int(* | tr_recv_fp) (const void *socket, void *pdu, const size_t len, const time_t timeout) |
| A function pointer to a technology specific recv function. | |
| typedef int(* | tr_send_fp) (const void *socket, const void *pdu, const size_t len, const time_t timeout) |
| A function pointer to a technology specific send function. | |
| typedef const char *(* | tr_ident_fp) (void *socket) |
| A function pointer to a technology specific info function. | |
Enumerations | |
| enum | tr_rtvals { TR_SUCCESS = 0 , TR_ERROR = -1 , TR_WOULDBLOCK = -2 , TR_INTR = -3 , TR_CLOSED = -4 } |
| The return values for tr_ functions. More... | |
Functions | |
| int | tr_open (struct tr_socket *socket) |
| Establish the connection. | |
| void | tr_close (struct tr_socket *socket) |
| Close the socket connection. | |
| void | tr_free (struct tr_socket *socket) |
| Deallocates all memory that the passed socket uses. | |
| int | tr_recv (const struct tr_socket *socket, void *buf, const size_t len, const time_t timeout) |
| Receives <= len Bytes data from the socket. | |
| int | tr_send (const struct tr_socket *socket, const void *pdu, const size_t len, const time_t timeout) |
| Send <= len Bytes data over the socket. | |
| int | tr_send_all (const struct tr_socket *socket, const void *pdu, const size_t len, const time_t timeout) |
| Repeatedly calls tr_send(..) till len Bytes were sent, the timeout expired or an error occurred. | |
| int | tr_recv_all (const struct tr_socket *socket, const void *buf, const size_t len, const time_t timeout) |
| Repeatedly calls tr_recv(..) till len Bytes were received, the timeout expired or an error occurred. | |
| const char * | tr_ident (struct tr_socket *socket) |
| Returns an identifier for the socket endpoint, eg host:port. | |
The RTR transport sockets implement the communication channel (e.g., SSH, TCP, TCP-AO) between an RTR server and client.
Before using the transport socket, a tr_socket must be initialized based on a protocol-dependent init function (e.g., tr_tcp_init()).
The tr_* functions call the corresponding function pointers, which are passed in the tr_socket struct, and forward the remaining arguments.
| #define RTRLIB_TRANSPORT_CONNECT_TIMEOUT_DEFAULT 30 |
#include <rtrlib/transport/transport.h>
Default connect timeout.
| typedef void(* tr_close_fp) (void *socket) |
#include <rtrlib/transport/transport.h>
A function pointer to a technology specific close function.
| typedef void(* tr_free_fp) (struct tr_socket *tr_sock) |
#include <rtrlib/transport/transport.h>
A function pointer to a technology specific free function.
All memory associated with the tr_socket will be freed.
| typedef const char *(* tr_ident_fp) (void *socket) |
#include <rtrlib/transport/transport.h>
A function pointer to a technology specific info function.
| typedef int(* tr_open_fp) (void *socket) |
#include <rtrlib/transport/transport.h>
A function pointer to a technology specific open function.
| typedef int(* tr_recv_fp) (const void *socket, void *pdu, const size_t len, const time_t timeout) |
#include <rtrlib/transport/transport.h>
A function pointer to a technology specific recv function.
| typedef int(* tr_send_fp) (const void *socket, const void *pdu, const size_t len, const time_t timeout) |
#include <rtrlib/transport/transport.h>
A function pointer to a technology specific send function.
| enum tr_rtvals |
#include <rtrlib/transport/transport.h>
The return values for tr_ functions.
| Enumerator | |
|---|---|
| TR_SUCCESS | Operation was successful. |
| TR_ERROR | Error occurred. |
| TR_WOULDBLOCK | No data is available on the socket. |
| TR_INTR | Call was interrupted from a signal. |
| TR_CLOSED | Connection closed. |
| void tr_close | ( | struct tr_socket * | socket | ) |
#include <rtrlib/transport/transport_private.h>
Close the socket connection.
| [in] | socket | Socket that will be closed. |
| void tr_free | ( | struct tr_socket * | socket | ) |
#include <rtrlib/transport/transport_private.h>
Deallocates all memory that the passed socket uses.
Socket have to be closed before.
| [in] | socket | which will be freed. |
| const char * tr_ident | ( | struct tr_socket * | socket | ) |
#include <rtrlib/transport/transport_private.h>
Returns an identifier for the socket endpoint, eg host:port.
| [in] | socket | return Pointer to a \0 terminated String return NULL on error |
| int tr_open | ( | struct tr_socket * | socket | ) |
#include <rtrlib/transport/transport_private.h>
Establish the connection.
| [in] | socket | Socket that will be used. |
| int tr_recv | ( | const struct tr_socket * | socket, |
| void * | buf, | ||
| const size_t | len, | ||
| const time_t | timeout | ||
| ) |
#include <rtrlib/transport/transport_private.h>
Receives <= len Bytes data from the socket.
| [in] | socket | Socket that will be used. |
| [out] | buf | Received data, must be an allocated memory area of >=pdu_len bytes. |
| [in] | len | Size of pdu in Bytes. |
| [in] | timeout | Max. seconds the function will block till len data was received. |
| int tr_recv_all | ( | const struct tr_socket * | socket, |
| const void * | buf, | ||
| const size_t | len, | ||
| const time_t | timeout | ||
| ) |
#include <rtrlib/transport/transport_private.h>
Repeatedly calls tr_recv(..) till len Bytes were received, the timeout expired or an error occurred.
| [in] | socket | Socket that will be used. |
| [out] | buf | Received data, must be an allocated memory area of >=len bytes. |
| [in] | len | Size of pdu in Bytes. |
| [in] | timeout | Max. seconds the functions should try to receive len data till it returns. |
| int tr_send | ( | const struct tr_socket * | socket, |
| const void * | pdu, | ||
| const size_t | len, | ||
| const time_t | timeout | ||
| ) |
#include <rtrlib/transport/transport_private.h>
Send <= len Bytes data over the socket.
| [in] | socket | Socket that will be used. |
| [out] | pdu | Data that will be be sent. |
| [in] | len | Size of pdu in Bytes. |
| [in] | timeout | Max. seconds the function should try to send the data till it returns. |
| int tr_send_all | ( | const struct tr_socket * | socket, |
| const void * | pdu, | ||
| const size_t | len, | ||
| const time_t | timeout | ||
| ) |
#include <rtrlib/transport/transport_private.h>
Repeatedly calls tr_send(..) till len Bytes were sent, the timeout expired or an error occurred.
| [in] | socket | Socket that will be used. |
| [out] | pdu | Data that will be be sent. |
| [in] | len | Size of pdu in Bytes. |
| [in] | timeout | Max. seconds the functions should try to send pdu till it returns. |