client-c  0.8.1
ext_tcp_utils.h File Reference

External interface for socket manipulations used by Kaa transport channel implementations. More...

#include "sock.h"
#include "../kaa_error.h"
+ Include dependency graph for ext_tcp_utils.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  kaa_dns_resolve_listener_t
 Interface for the deferred DNS results. More...
 
struct  kaa_dns_resolve_info_t
 The target host information which is used for the DNS resolve needs. More...
 

Macros

#define KAA_TCP_SOCKET_NOT_SET   -1
 

Typedefs

typedef kaa_error_t(* on_dns_resolve_complete_fn )(void *context, const kaa_sockaddr_t *addr, kaa_socklen_t addr_size)
 The callback for successful DNS results. See ext_tcp_utils_getaddrbyhost. More...
 
typedef kaa_error_t(* on_dns_resolve_failed_fn )(void *context)
 The callback for negative host resolve results. More...
 

Enumerations

enum  ext_tcp_utils_function_return_state_t { RET_STATE_VALUE_ERROR = 0, RET_STATE_BUFFER_NOT_ENOUGH, RET_STATE_VALUE_READY, RET_STATE_VALUE_IN_PROGRESS }
 
enum  ext_tcp_socket_state_t { KAA_TCP_SOCK_ERROR = 0, KAA_TCP_SOCK_CONNECTING, KAA_TCP_SOCK_CONNECTED }
 
enum  ext_tcp_socket_io_errors_t { KAA_TCP_SOCK_IO_OK = 0, KAA_TCP_SOCK_IO_EOF, KAA_TCP_SOCK_IO_ERROR }
 

Functions

ext_tcp_utils_function_return_state_t ext_tcp_utils_getaddrbyhost (kaa_dns_resolve_listener_t *resolve_listener, const kaa_dns_resolve_info_t *resolve_props, kaa_sockaddr_t *result, kaa_socklen_t *result_size)
 Resolves the address of the target host. More...
 
kaa_error_t ext_tcp_utils_set_sockaddr_port (kaa_sockaddr_t *addr, uint16_t port)
 Sets a new port value to the given sockaddr structure. More...
 
kaa_error_t ext_tcp_utils_open_tcp_socket (kaa_fd_t *fd, const kaa_sockaddr_t *destination, kaa_socklen_t destination_size)
 Creates a non-blocking TCP socket and connects it to the given target host. More...
 
ext_tcp_socket_state_t ext_tcp_utils_tcp_socket_check (kaa_fd_t fd, const kaa_sockaddr_t *destination, kaa_socklen_t destination_size)
 Checks the state of the given socket descriptor. More...
 
ext_tcp_socket_io_errors_t ext_tcp_utils_tcp_socket_write (kaa_fd_t fd, const char *buffer, size_t buffer_size, size_t *bytes_written)
 Writes the buffer into the given socket. More...
 
ext_tcp_socket_io_errors_t ext_tcp_utils_tcp_socket_read (kaa_fd_t fd, char *buffer, size_t buffer_size, size_t *bytes_read)
 Reads bytes from the given socket. More...
 
kaa_error_t ext_tcp_utils_tcp_socket_close (kaa_fd_t fd)
 Closes the given socket. More...
 

Detailed Description

External interface for socket manipulations used by Kaa transport channel implementations.

Copyright 2014-2016 CyberVision, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Author
Andriy Panasenko apana.nosp@m.senk.nosp@m.o@cyb.nosp@m.ervi.nosp@m.siont.nosp@m.ech..nosp@m.com

Definition in file ext_tcp_utils.h.

Macro Definition Documentation

#define KAA_TCP_SOCKET_NOT_SET   -1

Definition at line 35 of file ext_tcp_utils.h.

Typedef Documentation

typedef kaa_error_t(* on_dns_resolve_complete_fn)(void *context, const kaa_sockaddr_t *addr, kaa_socklen_t addr_size)

The callback for successful DNS results. See ext_tcp_utils_getaddrbyhost.

Parameters
[in]contextCallback's context.
[in]addrThe sockaddr structure of the resolved target host.
[in]addr_sizeThe size of the sockaddr structure.
Returns
Error code.

Definition at line 69 of file ext_tcp_utils.h.

typedef kaa_error_t(* on_dns_resolve_failed_fn)(void *context)

The callback for negative host resolve results.

See ext_tcp_utils_getaddrbyhost.

Parameters
[in]contextCallback's context.
Returns
Error code.

Definition at line 83 of file ext_tcp_utils.h.

Enumeration Type Documentation

Enumerator
KAA_TCP_SOCK_IO_OK 
KAA_TCP_SOCK_IO_EOF 
KAA_TCP_SOCK_IO_ERROR 

Definition at line 53 of file ext_tcp_utils.h.

Enumerator
KAA_TCP_SOCK_ERROR 
KAA_TCP_SOCK_CONNECTING 
KAA_TCP_SOCK_CONNECTED 

Definition at line 46 of file ext_tcp_utils.h.

Enumerator
RET_STATE_VALUE_ERROR 
RET_STATE_BUFFER_NOT_ENOUGH 
RET_STATE_VALUE_READY 
RET_STATE_VALUE_IN_PROGRESS 

Definition at line 38 of file ext_tcp_utils.h.

Function Documentation

ext_tcp_utils_function_return_state_t ext_tcp_utils_getaddrbyhost ( kaa_dns_resolve_listener_t resolve_listener,
const kaa_dns_resolve_info_t resolve_props,
kaa_sockaddr_t result,
kaa_socklen_t result_size 
)

Resolves the address of the target host.

Parameters
[in]resolve_listenerThe listener properties. It is used in case when this function can't resolve a hostname right now.
[in]resolve_propsThe target host properties (like hostname and port).
[out]resultThe sockaddr_* structure to which the result will be copied.
[in,out]result_sizeThe total size of the given storage. It will be updated by the actual result size.
Returns
RET_STATE_VALUE_READY - the address was successfully resolved. RET_STATE_VALUE_IN_PROGRESS - the address will be resolved later. See kaa_dns_resolve_listener_t. RET_STATE_VALUE_ERROR - the resolve failed. RET_STATE_BUFFER_NOT_ENOUGH - the given buffer is not enough to store the result.
kaa_error_t ext_tcp_utils_open_tcp_socket ( kaa_fd_t fd,
const kaa_sockaddr_t destination,
kaa_socklen_t  destination_size 
)

Creates a non-blocking TCP socket and connects it to the given target host.

Parameters
[out]fdThe valid pointer to a socket descriptor where the result will be saved.
[in]destinationThe destination address of the target host.
[in]destination_sizeThe size of the destination address.
Returns
Error code.
kaa_error_t ext_tcp_utils_set_sockaddr_port ( kaa_sockaddr_t addr,
uint16_t  port 
)

Sets a new port value to the given sockaddr structure.

Parameters
[in]addrThe valid pointer to a sockaddr structure.
[in]portThe new port value in a host byte order.
Returns
Error code.
ext_tcp_socket_state_t ext_tcp_utils_tcp_socket_check ( kaa_fd_t  fd,
const kaa_sockaddr_t destination,
kaa_socklen_t  destination_size 
)

Checks the state of the given socket descriptor.

Parameters
[in]fdThe socket descriptor which is going to be checked.
[in]destinationThe destination address of the target host.
[in]destination_sizeThe size of the destination address.
Returns
KAA_TCP_SOCK_ERROR - the connection failed. KAA_TCP_SOCK_CONNECTING - the socket is still connecting. KAA_TCP_SOCK_CONNECTED - the socket was successfully connected.
kaa_error_t ext_tcp_utils_tcp_socket_close ( kaa_fd_t  fd)

Closes the given socket.

Parameters
[in]fdThe socket descriptor which is going to be closed.
Returns
Error code.
ext_tcp_socket_io_errors_t ext_tcp_utils_tcp_socket_read ( kaa_fd_t  fd,
char *  buffer,
size_t  buffer_size,
size_t *  bytes_read 
)

Reads bytes from the given socket.

Parameters
[in]fdThe socket descriptor.
[in]bufferThe buffer to which the read result will be saved.
[in]buffer_sizeThe maximum number of bytes to be read.
[out]bytes_readThe actual number of bytes which were read from the socket.
Returns
KAA_TCP_SOCK_IO_OK - the buffer was successfully obtained from the socket. KAA_TCP_SOCK_IO_EOF - EOF occurred. KAA_TCP_SOCK_IO_ERROR - the operation failed.
ext_tcp_socket_io_errors_t ext_tcp_utils_tcp_socket_write ( kaa_fd_t  fd,
const char *  buffer,
size_t  buffer_size,
size_t *  bytes_written 
)

Writes the buffer into the given socket.

Parameters
[in]fdThe socket descriptor.
[in]bufferThe buffer which is going to be written into the socket.
[in]buffer_sizeThe size of the given buffer.
[out]bytes_writtenThe actual number of bytes which were successfully written into the socket.
Returns
KAA_TCP_SOCK_IO_OK - the buffer was successfully written into the socket. KAA_TCP_SOCK_IO_ERROR - the operation failed.