ucommon
|
Secure socket buffer. More...
#include <secure.h>
Public Member Functions | |
bool | _flush (void) |
Flush buffer to physical i/o. | |
bool | _pending (void) |
Check for pending tcp or ssl data. More... | |
size_t | _pull (char *address, size_t size) |
Method to pull buffer from physical i/o (read). More... | |
size_t | _push (const char *address, size_t size) |
Method to push buffer into physical i/o (write). More... | |
void | close (void) |
bool | is_secure (void) const |
void | open (const char *host, const char *service, size_t size=536) |
Connect a ssl client session to a specific host uri. More... | |
void | release (void) |
SSLBuffer (secure::client_t context) | |
SSLBuffer (const TCPServer *server, secure::server_t context, size_t size=536) | |
![]() | |
void | close (void) |
Close active connection. | |
void | open (const TCPServer *server, size_t size=536) |
Connect a tcp socket to a client from a listener. More... | |
void | open (const char *host, const char *service, size_t size=536) |
Connect a tcp client session to a specific host uri. More... | |
TCPBuffer () | |
Construct an unconnected tcp client and specify our service profile. | |
TCPBuffer (const TCPServer *server, size_t size=536) | |
Construct a tcp server session from a listening socket. More... | |
TCPBuffer (const char *host, const char *service, size_t size=536) | |
Construct a tcp client session connected to a specific host uri. More... | |
virtual | ~TCPBuffer () |
Destroy the tcp socket and release all resources. | |
![]() | |
const char * | endl (void) const |
bool | eof (void) |
Check if at end of input. More... | |
int | err (void) const |
bool | flush (void) |
Flush buffered memory to physical I/O. More... | |
size_t | get (void *address, size_t count) |
Get memory from the buffer. More... | |
bool | is_input (void) const |
See if input active. More... | |
bool | is_open (void) const |
See if buffer open. More... | |
bool | is_output (void) const |
See if output active. More... | |
bool | is_pending (void) |
See if pending input. More... | |
operator bool () const | |
See if buffer open. More... | |
bool | operator! () const |
See if buffer closed. More... | |
size_t | printf (const char *format,...) |
Print formatted string to the buffer. More... | |
void | purge (void) |
Purge any pending input or output buffer data. | |
size_t | put (const void *address, size_t count) |
Put memory into the buffer. More... | |
template<typename T > | |
size_t | read (T &data) |
template<typename T > | |
size_t | read (T *data, unsigned count) |
void | reset (void) |
Reset input buffer state. More... | |
void | seteof (void) |
Set eof flag. | |
template<typename T > | |
size_t | write (const T &data) |
template<typename T > | |
size_t | write (const T *data, unsigned count) |
![]() | |
int | getchar (void) |
Get the next character. More... | |
size_t | getline (char *string, size_t size) |
Get text as a line of input from the buffer. More... | |
size_t | getline (String &buffer) |
Get a string as a line of input from the buffer. More... | |
size_t | input (InputProtocol &format) |
size_t | load (StringPager *list) |
Load input to a string list. More... | |
size_t | print (const PrintProtocol &format) |
int | putchar (int code) |
Put the next character. More... | |
size_t | putchars (const char *string, size_t count=0) |
size_t | putline (const char *string) |
Put a string as a line of output to the buffer. More... | |
size_t | save (const StringPager *list) |
Save output from a string list. More... | |
Protected Attributes | |
secure::bufio_t | bio |
bool | server |
secure::session_t | ssl |
bool | verify |
![]() | |
const char * | format |
![]() | |
int | back |
const char * | eol |
![]() | |
int | ioerr |
timeout_t | iowait |
socket_t | so |
Additional Inherited Members | |
![]() | |
enum | mode_t { RDONLY, WRONLY, RDWR } |
![]() | |
bool | _blocking (void) |
Return true if blocking. | |
void | _buffer (size_t size) |
void | _clear (void) |
Method to clear low level i/o error. | |
int | _err (void) const |
Method to get low level i/o error. More... | |
socket_t | getsocket (void) const |
Get the low level socket object. More... | |
![]() | |
virtual int | _getch (void) |
Get the next character. More... | |
virtual int | _putch (int ch) |
Put the next character. More... | |
void | allocate (size_t size, mode_t access=RDWR) |
Allocate I/O buffer(s) of specified size. More... | |
BufferProtocol () | |
Construct an empty (unallocated) buffer. | |
BufferProtocol (size_t size, mode_t access=RDWR) | |
Construct a buffer of pre-allocated size and access type. More... | |
virtual void | fault (void) const |
Allocation error handler. | |
char * | gather (size_t size) |
Gather returns a pointer to contiguous input of specified size. More... | |
size_t | input_pending (void) const |
Get current input position. More... | |
size_t | output_waiting (void) const |
Get current output position. More... | |
void | release (void) |
Release (free) buffer memory. | |
char * | request (size_t size) |
Request workspace in output buffer. More... | |
virtual | ~BufferProtocol () |
Destroy object by releasing buffer memory. | |
![]() | |
void | putback (int code) |
Write to back buffer. More... | |
void | seteol (const char *string) |
Set end of line marker. More... | |
![]() | |
int | blocking (bool enable) |
Set socket blocking I/O mode. More... | |
int | broadcast (bool enable) |
Set socket for unicast mode broadcasts. More... | |
void | cancel (void) |
Cancel pending i/o by shutting down the socket. | |
bool | ccid (uint8_t id) |
Set ccid of dccp socket. More... | |
bool | connected (void) const |
Test if socket is connected. More... | |
int | connectto (struct addrinfo *list) |
Connect our socket to a remote host from an address list. More... | |
int | disconnect (void) |
Disconnect a connected socket. More... | |
int | drop (const struct addrinfo *list, const int ifindex=0) |
Drop socket from multicast group. More... | |
int | err (void) const |
Get error code. | |
int | getError (void) |
Get socket error code. More... | |
bool | is_pending (unsigned value) |
See the number of bytes in the receive queue. More... | |
int | join (const struct addrinfo *list, const int ifindex=0) |
Join socket to multicast group. More... | |
int | keepalive (bool enable) |
Set socket for keepalive packets. More... | |
int | loopback (bool enable) |
Set loopback to read multicast packets we broadcast. More... | |
int | multicast (unsigned ttl=1) |
Set multicast mode and multicast broadcast range. More... | |
int | nodelay (void) const |
Set nodelay option for tcp socket. More... | |
operator bool () | |
Test if socket is valid. More... | |
operator socket_t () const | |
Get the socket descriptor by casting. More... | |
bool | operator! () const |
Test if socket is invalid. More... | |
socket_t | operator* () const |
Get the socket descriptor by pointer reference. More... | |
Socket & | operator= (socket_t socket) |
Assign socket from a socket descriptor. More... | |
size_t | peek (void *data, size_t number) const |
Peek at data waiting in the socket receive buffer. More... | |
unsigned | pending (void) const |
Get the number of bytes of data in the socket receive buffer. More... | |
size_t | printf (const char *format,...) |
Print formatted string to socket. More... | |
int | priority (int scheduling) |
Set packet priority, 0 to 6 unless privileged. More... | |
size_t | readfrom (void *data, size_t number, struct sockaddr_storage *address=((void *) 0)) |
Read data from the socket receive buffer. More... | |
size_t | readline (char *data, size_t size) |
Read a newline of text data from the socket and save in NULL terminated string. More... | |
size_t | readline (String &buffer) |
Read a string of input from the socket and strip trailing newline. More... | |
int | recvsize (unsigned size) |
Set the size of the socket receive buffer. More... | |
void | release (void) |
Shutdown and close the socket. | |
unsigned | segsize (unsigned size) |
Set segment size and get mtu of a socket. More... | |
int | sendsize (unsigned size) |
Set the size of the socket send buffer. More... | |
int | sendwait (unsigned size) |
Set the size to wait before sending. More... | |
void | shutdown (void) |
Shutdown the socket communication channel. | |
Socket () | |
Create a socket object for use. | |
Socket (const Socket &existing) | |
Create socket as duped handle of existing socket. More... | |
Socket (socket_t socket) | |
Create socket from existing socket descriptor. More... | |
Socket (const struct addrinfo *address) | |
Create and connect a socket to an address from an address list. More... | |
Socket (int family, int type, int protocol=0) | |
Create an unbound socket of a specific type. More... | |
Socket (const char *address, const char *port, int family=0, int type=0, int protocol=0) | |
Create a bound socket. More... | |
int | tos (int type) |
Set the type of service field of outgoing packets. More... | |
int | ttl (unsigned char time) |
Set the time to live before packets expire. More... | |
int | type (void) |
Get the type of a socket. More... | |
bool | wait (timeout_t timeout=0) const |
Test for pending input data. More... | |
int | wait (timeout_t timeout=Timer::inf) |
Socket i/o timer setting. More... | |
bool | waitSending (timeout_t timeout=0) const |
Test for output data sent. More... | |
size_t | writes (const char *string) |
Write a null terminated string to the socket. More... | |
size_t | writeto (const void *data, size_t number, const struct sockaddr *address=((void *) 0)) |
Write data to the socket send buffer. More... | |
virtual | ~Socket () |
Shutdown, close, and destroy socket. | |
![]() | |
static socket_t | acceptfrom (socket_t socket, struct sockaddr_storage *address=((void *) 0)) |
Accept a socket connection from a remote host. More... | |
static int | bindto (socket_t socket, const char *address, const char *service, int protocol=0) |
Bind the socket descriptor to a known interface and service port. More... | |
static int | bindto (socket_t socket, const struct sockaddr *address) |
Bind the socket descriptor to a known interface. More... | |
static int | blocking (socket_t socket, bool enable) |
Set socket blocking I/O mode of socket descriptor. More... | |
static int | broadcast (socket_t socket, bool enable) |
Set socket for unicast mode broadcasts on socket descriptor. More... | |
static void | cancel (socket_t socket) |
Cancel pending i/o by shutting down the socket. More... | |
static bool | ccid (socket_t socket, uint8_t id) |
Set congestion control id. More... | |
static int | connectto (socket_t socket, struct addrinfo *list) |
Connect socket descriptor to a remote host from an address list. More... | |
static unsigned | copy (struct sockaddr *target, const struct sockaddr *origin) |
Copy a socket address. More... | |
static socket_t | create (int family, int type, int protocol) |
Create a socket object unbound. More... | |
static socket_t | create (const struct addrinfo *address, int type, int protocol) |
Create a connected socket. More... | |
static socket_t | create (const char *iface, const char *service, int family=0, int type=0, int protocol=0) |
Create a bound socket for a service. More... | |
static socket_t | create (const Socket::address &address) |
Create a connected socket for a service. More... | |
static int | disconnect (socket_t socket) |
Disconnect a connected socket descriptor. More... | |
static int | drop (socket_t socket, const struct addrinfo *list, const int ifindex=0) |
Drop socket descriptor from multicast group. More... | |
static bool | eq_from (const struct sockaddr_storage *address1, const struct sockaddr_storage *address2) |
Compare socket addresses. More... | |
static bool | eq_host (const struct sockaddr *address1, const struct sockaddr *address2) |
Compare socket host addresses. More... | |
static bool | eq_inet (const struct sockaddr_internet *address1, const struct sockaddr_internet *address2) |
Compare socket addresses. More... | |
static bool | eq_subnet (const struct sockaddr *address1, const struct sockaddr *address2) |
See if both addresses are in the same subnet. More... | |
static bool | equal (const struct sockaddr *address1, const struct sockaddr *address2) |
Compare socket addresses. More... | |
static int | error (socket_t socket) |
Get socket error code of socket descriptor. More... | |
static int | error (void) |
Return error code of last socket operation,. More... | |
static int | family (socket_t socket) |
Get the address family of the socket descriptor. More... | |
static int | family (const struct sockaddr_storage &address) |
Get the address family of a socket address object. More... | |
static int | family (const struct sockaddr_internet &address) |
Get the address family of an internet socket address object. More... | |
static struct addrinfo * | hinting (socket_t socket, struct addrinfo *hint) |
Create an address info lookup hint based on the family and type properties of a socket descriptor. More... | |
static char * | hostname (const struct sockaddr *address, char *buffer, size_t size) |
Lookup and return the host name associated with a socket address. More... | |
static void | init (void) |
Initialize socket subsystem. | |
static void | init (const char *program) |
Initialize with program name. More... | |
static bool | is_null (const char *string) |
Simple function to validate that a given IP address string is a "zero" address. More... | |
static bool | is_numeric (const char *string) |
Simple function to validate that a given IP address string is a numeric address. More... | |
static int | join (socket_t socket, const struct addrinfo *list, const int ifindex=0) |
Join socket descriptor to multicast group. More... | |
static int | keepalive (socket_t socket, bool enable) |
Set socket for keepalive packets for socket descriptor. More... | |
static unsigned | keyhost (const struct sockaddr *address, unsigned size) |
Convert a socket host address into a hash map index. More... | |
static unsigned | keyindex (const struct sockaddr *address, unsigned size) |
Convert a socket address and service into a hash map index. More... | |
static socklen_t | len (const struct sockaddr *address) |
Get the size of a socket address. More... | |
static int | listento (socket_t socket, const struct sockaddr *address, int backlog=5) |
Bind the socket descriptor to a known interface listen on service port. More... | |
static int | local (socket_t socket, struct sockaddr_storage *address) |
Get local address to which the socket is bound. More... | |
static int | loopback (socket_t socket, bool enable) |
Set loopback to read multicast packets socket descriptor broadcasts. More... | |
static int | multicast (socket_t socket, unsigned ttl=1) |
Set multicast mode and multicast broadcast range for socket descriptor. More... | |
static int | nodelay (socket_t socket) |
Set tcp nodelay option on socket descriptor. More... | |
static unsigned | pending (socket_t socket) |
Get the number of bytes pending in the receive buffer of a socket descriptor. More... | |
static ssize_t | printf (socket_t socket, const char *format,...) |
Print formatted string to socket. More... | |
static int | priority (socket_t socket, int scheduling) |
Set packet priority of socket descriptor. More... | |
static struct addrinfo * | query (const char *host, const char *service, int type=SOCK_STREAM, int protocol=0) |
Get an address list directly. More... | |
static socklen_t | query (socket_t socket, struct sockaddr_storage *address, const char *hostname, const char *service) |
Lookup a host name and service address based on the addressing family and socket type of a socket descriptor. More... | |
static char * | query (const struct sockaddr *address, char *buffer, socklen_t size) |
Get the hostname of a socket address. More... | |
static void | query (int family) |
Set default socket family preference for query options when the socket type is otherwise not specified. More... | |
static ssize_t | readline (socket_t socket, char *data, size_t size, timeout_t timeout=Timer::inf) |
Read a newline of text data from the socket and save in NULL terminated string. More... | |
static ssize_t | recvfrom (socket_t socket, void *buffer, size_t size, int flags=0, struct sockaddr_storage *address=((void *) 0)) |
Get data waiting in receive queue. More... | |
static ssize_t | recvinet (socket_t socket, void *buffer, size_t size, int flags=0, struct sockaddr_internet *address=((void *) 0)) |
Get internet data waiting in receive queue. More... | |
static int | recvsize (socket_t socket, unsigned size) |
Set the receive size of a socket descriptor. More... | |
static void | release (struct addrinfo *list) |
Release an address list directly. More... | |
static void | release (socket_t socket) |
Release (close) a socket. More... | |
static int | remote (socket_t socket, struct sockaddr_storage *address) |
Get remote address to which the socket is connected. More... | |
static ssize_t | replyto (socket_t socket, const void *buffer, size_t size, int flags, const struct sockaddr_storage *address) |
Send reply on socket. More... | |
static unsigned | segsize (socket_t socket, unsigned size=0) |
Set segment size and get MTU. More... | |
static ssize_t | sendinet (socket_t socket, const void *buffer, size_t size, int flags, const struct sockaddr_internet *address) |
Send to internet socket. More... | |
static int | sendsize (socket_t socket, unsigned size) |
Set the send size of a socket descriptor. More... | |
static ssize_t | sendto (socket_t socket, const void *buffer, size_t size, int flags=0, const struct sockaddr *address=((void *) 0)) |
Send data on socket. More... | |
static int | sendwait (socket_t socket, unsigned size) |
Set the size to wait before sending. More... | |
static short | service (const struct sockaddr *address) |
Get the service port of a socket. More... | |
static short | service (const struct sockaddr_internet *address) |
Get the service port of an inet socket. More... | |
static unsigned | store (struct sockaddr_storage *storage, const struct sockaddr *address) |
Store an address into an address object. More... | |
static unsigned | store (struct sockaddr_internet *storage, const struct sockaddr *address) |
Store an address into an internet address object. More... | |
static int | tos (socket_t socket, int type) |
Set type of service of socket descriptor. More... | |
static int | ttl (socket_t socket, unsigned char time) |
Set the time to live for the socket descriptor. More... | |
static int | type (socket_t socket) |
Get the type of a socket. More... | |
static void | v4mapping (bool enable) |
Set the default socket behavior for v6-v4 mapping. More... | |
static int | via (struct sockaddr *address, const struct sockaddr *destination) |
Get the socket address of the interface needed to reach a destination address. More... | |
static bool | wait (socket_t socket, timeout_t timeout=0) |
Test for pending input data. More... | |
Secure socket buffer.
This is used to create ssl socket connections for both clients and servers. The use depends in part on the type of context created and passed at construction time. If no context is passed (NULL), then this reverts to TCPBuffer behavior.
|
virtual |
Check for pending tcp or ssl data.
Reimplemented from ucommon::TCPBuffer.
|
virtual |
Method to pull buffer from physical i/o (read).
The address is passed to this virtual since it is hidden as private.
address | of buffer to pull data into. |
size | of buffer area being pulled.. |
Reimplemented from ucommon::TCPBuffer.
|
virtual |
Method to push buffer into physical i/o (write).
The address is passed to this virtual since it is hidden as private.
address | of data to push. |
size | of data to push. |
Reimplemented from ucommon::TCPBuffer.
void ucommon::SSLBuffer::open | ( | const char * | host, |
const char * | service, | ||
size_t | size = 536 |
||
) |
Connect a ssl client session to a specific host uri.
If the socket was already connected, it is automatically closed first.
host | we are connecting to. |
service | to connect to. |
size | of buffer and tcp fragments. |