2 #include <DefaultComm.h> 3 #include <comm_header.h> 18 int new_rpc_address(
comm_t *comm) {
19 comm->
type = _default_comm;
20 return new_default_address(comm);
29 int init_rpc_comm(
comm_t *comm) {
32 comm_t *info = init_comm_base(comm->
name,
"recv", _default_comm,
34 ret = init_default_comm(info);
36 cislog_error(
"init_rpc_comm(%s): Failed to initialize input comm", comm->
name);
39 comm->
info = (
void*)info;
41 char *seri_out = (
char*)malloc(strlen(comm->
direction) + 1);
42 if (seri_out == NULL) {
43 cislog_error(
"init_rpc_comm(%s): Failed to malloc seri_out.");
47 comm_t *handle = init_comm_base(comm->
name,
"send", _default_comm,
49 ret = init_default_comm(handle);
51 cislog_error(
"init_rpc_comm(%s): Failed to initialize output comm", comm->
name);
54 comm->
handle = (
void*)handle;
67 int free_rpc_comm(
comm_t *x) {
70 free_default_comm(handle);
74 if (x->
info != NULL) {
76 free_default_comm(info);
89 int rpc_comm_nmsg(
const comm_t x) {
91 int ret = default_comm_nmsg(*info);
103 int rpc_comm_send(
const comm_t x,
const char *data,
const size_t len) {
104 cislog_debug(
"rpc_comm_send(%s): %d bytes", x.
name, len);
106 cislog_error(
"rpc_comm_send(%s): no output comm registered", x.
name);
110 return default_comm_send(*res_comm, data, len);
125 int rpc_comm_recv(
const comm_t x,
char **data,
const size_t len,
126 const int allow_realloc) {
127 cislog_debug(
"rpc_comm_recv(%s)", x.
name);
128 if (x.
info == NULL) {
129 cislog_error(
"rpc_comm_recv(%s): no input comm registered", x.
name);
133 return default_comm_recv(*req_comm, data, len, allow_realloc);
void * handle
Pointer to handle for comm.
Definition: CommBase.h:25
void * info
Pointer to any extra info comm requires.
Definition: CommBase.h:26
Communication structure.
Definition: CommBase.h:19
void * info
Pointer to any extra info serializer requires.
Definition: SerializeBase.h:17
comm_type type
Comm type.
Definition: CommBase.h:20
seri_t * serializer
Serializer for comm messages.
Definition: CommBase.h:27
char direction[COMM_DIR_SIZE]
send or recv for direction messages will go.
Definition: CommBase.h:23
char name[COMM_NAME_SIZE]
Comm name.
Definition: CommBase.h:21