#include <rpc/rpc.h>
Go to the source code of this file.
Classes | |
struct | dtnipc_handle |
State of a DTN IPC channel. More... | |
Defines | |
#define | DTN_IPC_VERSION 6 |
DTN IPC version. | |
#define | DTN_IPC_PORT 5010 |
Default api ports. | |
#define | DTN_MAX_API_MSG 65536 |
The maximum IPC message size (in bytes). | |
Typedefs | |
typedef struct dtnipc_handle | dtnipc_handle_t |
Enumerations | |
enum | dtnapi_message_type_t { DTN_OPEN = 1, DTN_CLOSE = 2, DTN_LOCAL_EID = 3, DTN_REGISTER = 4, DTN_UNREGISTER = 5, DTN_FIND_REGISTRATION = 6, DTN_CHANGE_REGISTRATION = 7, DTN_BIND = 8, DTN_UNBIND = 9, DTN_SEND = 10, DTN_RECV = 11, DTN_BEGIN_POLL = 12, DTN_CANCEL_POLL = 13, DTN_CANCEL = 14, DTN_SESSION_UPDATE = 15 } |
Type codes for api messages. More... | |
Functions | |
const char * | dtnipc_msgtoa (u_int8_t type) |
Type code to string conversion routine. | |
int | dtnipc_open (dtnipc_handle_t *handle) |
int | dtnipc_close (dtnipc_handle_t *handle) |
int | dtnipc_send (dtnipc_handle_t *handle, dtnapi_message_type_t type) |
int | dtnipc_recv (dtnipc_handle_t *handle, int *status) |
int | dtnipc_send_recv (dtnipc_handle_t *handle, dtnapi_message_type_t type) |
Send a message and wait for a response over the dtn ipc protocol. |
#define DTN_IPC_PORT 5010 |
Default api ports.
The handshake port is used for initial contact with the daemon to establish a session, and the latter is used for individual sessions.
Definition at line 55 of file dtn_ipc.h.
Referenced by dtn::APIServer::APIServer(), and dtnipc_open().
#define DTN_IPC_VERSION 6 |
DTN IPC version.
Just a simple number for now; we can refine it to a major/minor version later if desired.
This currently cannot exceed 16 bits in width.
Make sure to bump this when changing any data structures, message types, adding functions, etc.
Definition at line 48 of file dtn_ipc.h.
Referenced by dtn::APIClient::handle_handshake(), and DTNOpenCommand::init_opts().
#define DTN_MAX_API_MSG 65536 |
The maximum IPC message size (in bytes).
Used primarily for efficiency in buffer allocation since the transport uses TCP.
Definition at line 61 of file dtn_ipc.h.
Referenced by dtn::APIClient::APIClient(), and dtnipc_open().
typedef struct dtnipc_handle dtnipc_handle_t |
int dtnipc_close | ( | dtnipc_handle_t * | handle | ) |
Definition at line 203 of file dtn_ipc.c.
References DTN_CLOSE, DTN_ECOMM, dtnipc_send_recv(), dtnipc_handle::err, dtnipc_handle::sock, dtnipc_handle::xdr_decode, and dtnipc_handle::xdr_encode.
Referenced by dtn_close(), dtnipc_open(), dtnipc_recv(), and dtnipc_send().
const char* dtnipc_msgtoa | ( | u_int8_t | type | ) |
Type code to string conversion routine.
Definition at line 41 of file dtn_ipc.c.
References CASE, DTN_BEGIN_POLL, DTN_BIND, DTN_CANCEL, DTN_CANCEL_POLL, DTN_CHANGE_REGISTRATION, DTN_CLOSE, DTN_FIND_REGISTRATION, DTN_LOCAL_EID, DTN_OPEN, DTN_RECV, DTN_REGISTER, DTN_SEND, DTN_SESSION_UPDATE, and DTN_UNREGISTER.
Referenced by dtnipc_send(), dtn::APIClient::handle_begin_poll(), and dtn::APIClient::run().
int dtnipc_open | ( | dtnipc_handle_t * | handle | ) |
Definition at line 72 of file dtn_ipc.c.
References dtnipc_handle::buf, dtnipc_handle::debug, DTN_ECOMM, DTN_EVERSION, DTN_IPC_PORT, DTN_MAX_API_MSG, DTN_OPEN, dtnipc_close(), dtnipc_version, end, dtnipc_handle::err, errno, dtnipc_handle::sock, dtnipc_handle::total_rcvd, dtnipc_handle::total_sent, dtnipc_handle::xdr_decode, and dtnipc_handle::xdr_encode.
Referenced by dtn_open().
int dtnipc_recv | ( | dtnipc_handle_t * | handle, | |
int * | status | |||
) |
Definition at line 294 of file dtn_ipc.c.
References dtnipc_handle::buf, dtnipc_handle::debug, DTN_ECOMM, dtnipc_close(), dtnipc_handle::err, errno, len, dtnipc_handle::sock, dtnipc_handle::total_rcvd, dtnipc_handle::total_sent, and dtnipc_handle::xdr_decode.
Referenced by dtn_build_local_eid(), dtn_cancel_poll(), dtn_find_registration(), dtn_recv(), dtn_register(), dtn_session_update(), dtn_unregister(), and dtnipc_send_recv().
int dtnipc_send | ( | dtnipc_handle_t * | handle, | |
dtnapi_message_type_t | type | |||
) |
Definition at line 233 of file dtn_ipc.c.
References dtnipc_handle::buf, dtnipc_handle::debug, DTN_ECOMM, dtnipc_close(), dtnipc_msgtoa(), dtnipc_handle::err, errno, len, dtnipc_handle::sock, dtnipc_handle::total_rcvd, dtnipc_handle::total_sent, and dtnipc_handle::xdr_encode.
Referenced by dtn_begin_poll(), dtn_build_local_eid(), dtn_find_registration(), dtn_register(), dtn_unregister(), and dtnipc_send_recv().
int dtnipc_send_recv | ( | dtnipc_handle_t * | handle, | |
dtnapi_message_type_t | type | |||
) |
Send a message and wait for a response over the dtn ipc protocol.
Returns 0 on success, -1 on error.
Definition at line 361 of file dtn_ipc.c.
References DTN_SUCCESS, dtnipc_recv(), dtnipc_send(), and dtnipc_handle::err.
Referenced by dtn_bind(), dtn_cancel(), dtn_cancel_poll(), dtn_recv(), dtn_send(), dtn_session_update(), dtn_unbind(), and dtnipc_close().