BRL-CAD
Loading...
Searching...
No Matches
#include "common.h"
#include <stddef.h>
Include dependency graph for pkg.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  pkg_switch
 
struct  pkg_header
 
struct  pkg_conn
 

Macros

#define PKG_MAGIC   0x41FE
 
#define PKG_STREAMLEN   (32*1024)
 
#define PKC_NULL   ((struct pkg_conn *)0)
 
#define PKC_ERROR   ((struct pkg_conn *)(-1L))
 
#define pkg_send_vls(type, vlsp, pkg)    pkg_send( (type), bu_vls_addr((vlsp)), bu_vls_strlen((vlsp))+1, (pkg) )
 
#define PKG_ADDR_ENVVAR   "PKG_ADDR"
 
#define PKG_TRANSPORT_PREFER_ENVVAR   "PKG_TRANSPORT_PREFER"
 

Typedefs

typedef void(* pkg_callback) (struct pkg_conn *, char *)
 
typedef void(* pkg_errlog) (const char *msg)
 
typedef struct pkg_listener pkg_listener_t
 
typedef struct pkg_mux pkg_mux_t
 

Enumerations

enum  pkg_transport_t { PKG_TRANSPORT_AUTO = 0 , PKG_TRANSPORT_PIPE = 1 , PKG_TRANSPORT_SOCKET = 2 , PKG_TRANSPORT_TCP = 3 }
 

Functions

struct pkg_connpkg_open (const char *host, const char *service, const char *protocol, const char *username, const char *passwd, const struct pkg_switch *switchp, pkg_errlog errlog)
 
void pkg_close (struct pkg_conn *pc)
 
int pkg_process (struct pkg_conn *)
 
int pkg_suckin (struct pkg_conn *)
 
int pkg_send (int type, const char *buf, size_t len, struct pkg_conn *pc)
 
int pkg_2send (int type, const char *buf1, size_t len1, const char *buf2, size_t len2, struct pkg_conn *pc)
 
int pkg_stream (int type, const char *buf, size_t len, struct pkg_conn *pc)
 
int pkg_flush (struct pkg_conn *pc)
 
int pkg_waitfor (int type, char *buf, size_t len, struct pkg_conn *pc)
 
charpkg_bwaitfor (int type, struct pkg_conn *pc)
 
int pkg_block (struct pkg_conn *pc)
 
int pkg_get_read_fd (const struct pkg_conn *pc)
 
int pkg_get_write_fd (const struct pkg_conn *pc)
 
int pkg_is_stdio_mode (const struct pkg_conn *pc)
 
int pkg_set_send_buffer (struct pkg_conn *pc, size_t bytes)
 
int pkg_set_recv_buffer (struct pkg_conn *pc, size_t bytes)
 
int pkg_set_nodelay (struct pkg_conn *pc, int on)
 
int pkg_set_tls (struct pkg_conn *pc, void *tls_ctx, ptrdiff_t(*tls_read)(void *ctx, void *buf, size_t n), ptrdiff_t(*tls_write)(void *ctx, const void *buf, size_t n), void(*tls_free)(void *ctx))
 
struct pkg_connpkg_adopt_socket (int fd, const struct pkg_switch *switchp, pkg_errlog errlog)
 
int pkg_pair (struct pkg_conn **parent_end, struct pkg_conn **child_end, const struct pkg_switch *switchp, pkg_errlog errlog)
 
int pkg_pair_prefer (struct pkg_conn **parent_end, struct pkg_conn **child_end, const struct pkg_switch *switchp, pkg_errlog errlog, pkg_transport_t preferred)
 
const charpkg_child_addr_env (struct pkg_conn *pc)
 
const charpkg_child_addr (struct pkg_conn *pc)
 
struct pkg_connpkg_connect_addr (const char *addr, const struct pkg_switch *switchp, pkg_errlog errlog)
 
int pkg_ipc_addr (char *addr, size_t len, const char *name_hint)
 
int pkg_addr_is_ipc_listener (const char *addr)
 
struct pkg_connpkg_connect_env (const struct pkg_switch *switchp, pkg_errlog errlog)
 
struct pkg_connpkg_adopt_fds (int rfd, int wfd, const struct pkg_switch *switchp, pkg_errlog errlog)
 
struct pkg_connpkg_adopt_stdio (const struct pkg_switch *switchp, pkg_errlog errlog)
 
int pkg_move_high_fd (struct pkg_conn *pc, int min_fd)
 
pkg_listener_tpkg_listen (const char *service, const char *iface_or_null, int backlog, pkg_errlog errlog)
 
struct pkg_connpkg_accept (pkg_listener_t *L, const struct pkg_switch *switchp, pkg_errlog errlog, int nonblocking)
 
int pkg_get_listener_fd (const pkg_listener_t *L)
 
int pkg_get_listener_port (const pkg_listener_t *L)
 
void pkg_listener_close (pkg_listener_t *L)
 
pkg_mux_tpkg_mux_create (void)
 
void pkg_mux_destroy (pkg_mux_t *m)
 
int pkg_mux_add_conn (pkg_mux_t *m, const struct pkg_conn *pc)
 
int pkg_mux_add_listener (pkg_mux_t *m, const pkg_listener_t *L)
 
int pkg_mux_add_fd (pkg_mux_t *m, int fd, int is_socket)
 
void pkg_mux_remove_fd (pkg_mux_t *m, int fd)
 
int pkg_mux_wait (pkg_mux_t *m, int timeout_ms)
 
int pkg_mux_is_ready_conn (const pkg_mux_t *m, const struct pkg_conn *pc)
 
int pkg_mux_is_ready_listener (const pkg_mux_t *m, const pkg_listener_t *L)
 
int pkg_mux_is_ready_fd (const pkg_mux_t *m, int fd)
 
unsigned short pkg_gshort (char *buf)
 
unsigned long pkg_glong (char *buf)
 
charpkg_pshort (char *buf, unsigned short s)
 
charpkg_plong (char *buf, unsigned long l)
 
const charpkg_version (void)
 

Detailed Description

LIBPKG provides routines to manage multiplexing and de-multiplexing synchronous and asynchronous messages across stream connections.

Definition in file pkg.h.