Namespaces | |
namespace | log |
Classes | |
class | address |
Address base class. More... | |
class | hostaddress |
IP Host Address. More... | |
class | appladdress |
class | netaddress |
Network Prefix (or net address). More... | |
class | udsaddress |
Unix Domain Socket Address. More... | |
class | RadixTrie |
class | AddressList |
struct | AssocData |
SCTP lib interface. More... | |
struct | AssocDataUDS |
SCTP lib interface. More... | |
class | ConnectionMap |
class | ConnectionMapUDS |
class | FastQueue |
class | IE |
class | IEError |
class | PDUSyntaxError |
class | IEMsgTooShort |
class | IEWrongVersion |
class | IEWrongType |
class | IEWrongSubtype |
class | IEWrongLength |
class | IETooBigForImpl |
class | IEProtocolSpecific |
class | IEErrorList |
IE error list. More... | |
class | IE_Key |
struct | hash_IE_Key |
class | IEManager |
class | message |
internal messages More... | |
class | NetMsgError |
class | NetMsg |
network message More... | |
class | ProtLibException |
class | uint128 |
class | QueueManagerError |
QueueManager errors. More... | |
class | QueueManager |
class | setuid |
Thread-safe setuid. More... | |
class | ThreadParam |
class | ThreadError |
class | Thread |
class | ThreadStarter |
class | tsdb |
Thread-safe DB. More... | |
class | TimerCallback |
Timer Callback. More... | |
class | TimerManager |
Timer Manager. More... | |
class | TimerMsg |
timer message More... | |
struct | TimerModuleParam |
timer module parameters More... | |
class | TimerModule |
timer module class More... | |
class | TP |
transport protocol base class More... | |
class | TPMsg |
transport protcol message More... | |
struct | TPoverTCPParam |
class | TPoverTCP |
TP over TCP. More... | |
class | TPoverTCPMsg |
struct | TPoverUDPParam |
class | TPoverUDP |
TP over UDP. More... | |
class | TPoverUDPMsg |
class | TPError |
Transport Protocol Error. More... | |
class | TPErrorBadDestAddress |
class | TPErrorArgsNotInit |
class | TPErrorUnreachable |
class | TPErrorInternal |
class | TPErrorPayload |
class | TPErrorInitFailed |
class | TPErrorSendFailed |
class | TPErrorConnectSetupFail |
class | TPErrorCloseInd |
class | TPErrorAbortInd |
Typedefs | |
typedef unsigned char | uchar |
typedef char | int8 |
typedef unsigned char | uint8 |
typedef short int | int16 |
typedef unsigned short int | uint16 |
typedef int32_t | int32 |
typedef u_int32_t | uint32 |
typedef int64_t | int64 |
typedef u_int64_t | uint64 |
typedef uint8 | prefix_length_t |
Network prefix length. | |
typedef uint8 | protocol_t |
Protocol number, as it is given in an IP header. | |
typedef uint16 | port_t |
Port number, as given in TCP or UDP headers. | |
typedef uint64 | gp_id_t |
A general purpose ID type. | |
typedef uint64 | timer_id_t |
timer ID | |
typedef void * | timer_callback_param_t |
timer callback parameter | |
typedef int | socketfd_t |
socket type interface | |
typedef unsigned int | associd_t |
Functions | |
ostream & | operator<< (ostream &out, const hostaddress &addr) |
ostream & | operator<< (ostream &out, const netaddress &addr) |
ostream & | operator<< (ostream &out, const AddressList::AddrProperty &prop) |
ostream & | operator<< (ostream &out, const appladdress &addr) |
ostream & | operator<< (ostream &out, const udsaddress &addr) |
template<class T > | |
void | call_unlock (void *pobj) |
unlock template | |
void | call_void_fun (void(*f)()) |
call void function | |
ostream & | operator<< (ostream &os, const IE &ie) |
print an IE to an ostream | |
istream & | operator>> (istream &is, IE &ie) |
input operator | |
uint32 | round_up4 (uint32 i) |
round uint32 up | |
ostream & | operator<< (ostream &os, NetMsg &msg) |
std::ostream & | operator<< (std::ostream &out, const NetMsg &msg) |
ostream & | operator<< (ostream &os, const ProtLibException &err) |
template<class T > | |
void * | thread_starter (void *thread_object) |
static void | normalize_timespec (struct timespec &ts) |
static void | fill_timespec (struct timespec &ts, int32 sec, int32 msec) |
static void | add_timespecs (struct timespec &ts1, struct timespec &ts2, struct timespec &res) |
static void | gettimeofday_timespec (struct timespec &ts) |
void | v6_to_v4 (struct sockaddr_in *sin, struct sockaddr_in6 *sin6) |
void | v4_to_v6 (struct sockaddr_in *sin, struct sockaddr_in6 *sin6) |
Variables | |
const protocol_t | prot_tls_tcp = 254 |
const protocol_t | prot_query_encap = 255 |
const protocol_t | prot_tcp = IPPROTO_TCP |
const protocol_t | prot_udp = IPPROTO_UDP |
const protocol_t | prot_sctp = IPPROTO_SCTP |
static const char *const | action_t_str [] |
char | in6_addrstr [INET6_ADDRSTRLEN+1] |
char | in6_addrstr_loc [INET6_ADDRSTRLEN+1] |
GIST address objects
----------------------------------------------------------
This header file defines a preprocessor macro to install cleanup handlers.
This cannot be done without macros because the pthread library also uses macros for cleanup. References to a common base class of all lockable classes also are not useful because they are casted to void* and cannot be casted back correctly after that in all cases, especially when pointers are changed while casting. This happens when casting around in a type hierarchy.
This file defines the base class of all information elements, the information elements for the GIST protocol and an IE manager singleton object. Although the IEs are closely related to the structure of GIST messages, they may be used in other contexts as well because of the coding shemes.
These messages are sent internally between threads (modules).
This is a generic class for network messages, represented as a byte stream (buffer containing bytes).
This is a generic class for network messages. A network message consists of a number of bytes. There are no access member functions. So the user has full control over the buffer.
This is the queuemanager which records queues and message source IDs.
Thread-safe setuid support for linux. Change effective user ID in a thread-safe way.
tsdb::init() must be called before calling setuid::init().
Classes to support multi-threaded programming.
A Thread module class must inherit from Thread. Several instances may run simultaneously but they share exactly one module object. So you must take care of this fact when writing the module code and use locks accordingly.
Use lock(), unlock(), wait_cond() and signal_cond() the way you would use the corresponding POSIX thread functions.
Use the ThreadStarter template class to create threads.
As the reentrant functions for netdb access seem not portable, I decided to write some wrappers for those functions I need. This is not object-oriented because the NetDB would be another singleton object and I only want some wrapper functions.
Thread-safe netdb access for linux.
As the reentrant functions for netdb access seem not portable, I decided to write some wrappers for those functions I need. This is not object-oriented because the NetDB would be another singleton object and I only want some wrapper functions.
You can create a software timer and attach a callback object to it. Timers are only accessed through their TimerManager and timer ID. timer managers are thread-safe.
Timers are stored in an ordered list to ease checking for elapsed timers. Additionally, their IDs are kept in a hash_map, so a pointer to a timer object can be obtained very fast.
The timer module provides a way for other modules to set timers via a message and receive a message back on their queue when the timer goes off.
This is the interface for sending network messages over a transport protocol. You can receive messages through queues.
@ file TP over TCP
@ file TP over UDP
ostream& protlib::operator<< | ( | ostream & | out, | |
const udsaddress & | addr | |||
) | [inline] |
Definition at line 1383 of file address.h.
References protlib::udsaddress::get_socknum(), and protlib::udsaddress::get_udssocket().
ostream& protlib::operator<< | ( | ostream & | out, | |
const appladdress & | addr | |||
) | [inline] |
Definition at line 1377 of file address.h.
References protlib::hostaddress::get_ip_str(), protlib::appladdress::get_port(), protlib::appladdress::get_protocol_name(), and protlib::hostaddress::is_mapped_ip().
ostream& protlib::operator<< | ( | ostream & | out, | |
const AddressList::AddrProperty & | prop | |||
) | [inline] |
Definition at line 1233 of file address.h.
References protlib::AddressList::AddrProperty::pname.
ostream& protlib::operator<< | ( | ostream & | out, | |
const netaddress & | addr | |||
) | [inline] |
Definition at line 680 of file address.h.
References protlib::hostaddress::get_ip_str(), and protlib::netaddress::get_pref_len().
ostream& protlib::operator<< | ( | ostream & | out, | |
const hostaddress & | addr | |||
) | [inline] |
Definition at line 201 of file address.h.
References protlib::hostaddress::get_ip_str().
void protlib::v4_to_v6 | ( | struct sockaddr_in * | sin, | |
struct sockaddr_in6 * | sin6 | |||
) |
Definition at line 75 of file tp_over_tcp.cpp.
References IPV6_ADDR_INT32_SMP.
Referenced by protlib::TPoverTCP::get_connection_to(), and protlib::TPoverTCP::master_listener_thread().
void protlib::v6_to_v4 | ( | struct sockaddr_in * | sin, | |
struct sockaddr_in6 * | sin6 | |||
) |
Definition at line 67 of file tp_over_tcp.cpp.
Referenced by protlib::TPoverTCP::get_connection_to().